File fts-dont-unconditionally-use-leaf-optimization-for-nfs.patch of Package findutils.16974
commit 85717b68b03bf85016c5079fbbf0c8aa2b182ba6
Author: Pádraig Brady <P@draigBrady.com>
Date: Mon Jan 18 17:29:28 2016 +0000
fts: don't unconditionally use leaf optimization for NFS
NFS st_nlink are not accurate on all implementations,
leading to aborts() if that assumption is made.
See <https://bugzilla.redhat.com/1299169>
* lib/fts.c (leaf_optimization_applies): Remove NFS from
the white list, and document the issue.
diff -urN a/gl/lib/fts.c b/gl/lib/fts.c
--- a/gl/lib/fts.c 2015-12-25 00:41:42.000000000 +0800
+++ b/gl/lib/fts.c 2015-12-25 00:41:42.000000000 +0800
@@ -718,22 +718,23 @@
switch (fs_buf.f_type)
{
- case S_MAGIC_NFS:
- /* NFS provides usable dirent.d_type but not necessarily for all entries
- of large directories. See <https://bugzilla.redhat.com/1252549>. */
- return true;
-
/* List here the file system types that lack usable dirent.d_type
info, yet for which the optimization does apply. */
case S_MAGIC_REISERFS:
case S_MAGIC_XFS:
return true;
+ /* Explicitly list here any other file system type for which the
+ optimization is not applicable, but need documentation. */
+ case S_MAGIC_NFS:
+ /* NFS provides usable dirent.d_type but not necessarily for all entries
+ of large directories, so as per <https://bugzilla.redhat.com/1252549>
+ NFS should return true. However st_nlink values are not accurate on
+ all implementations as per <https://bugzilla.redhat.com/1299169>. */
+ /* fall through */
case S_MAGIC_PROC:
- /* Explicitly listing this or any other file system type for which
- the optimization is not applicable is not necessary, but we leave
- it here to document the risk. Per http://bugs.debian.org/143111,
- /proc may have bogus stat.st_nlink values. */
+ /* Per <http://bugs.debian.org/143111> /proc may have
+ bogus stat.st_nlink values. */
/* fall through */
default:
return false;