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;
openSUSE Build Service is sponsored by