]> Savannah Git Hosting - gnulib.git/commitdiff
fts: treat CIFS like NFS
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 5 Apr 2018 15:48:01 +0000 (08:48 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 5 Apr 2018 15:48:41 +0000 (08:48 -0700)
Problem reported by Kamil Dudka in:
https://lists.gnu.org/r/bug-gnulib/2018-04/msg00015.html
* lib/fts.c (S_MAGIC_CIFS): New macro.
(dirent_inode_sort_may_be_useful, leaf_optimization):
Treat CIFS like NFS.

ChangeLog
lib/fts.c

index 769fa380d892be8893c661b246fa74853c935efb..6d867080303cb3c5681ce909531c854b2b652d54 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2018-04-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       fts: treat CIFS like NFS
+       Problem reported by Kamil Dudka in:
+       https://lists.gnu.org/r/bug-gnulib/2018-04/msg00015.html
+       * lib/fts.c (S_MAGIC_CIFS): New macro.
+       (dirent_inode_sort_may_be_useful, leaf_optimization):
+       Treat CIFS like NFS.
+
 2018-03-28  Bruno Haible  <bruno@clisp.org>
 
        c-stack: Fix possible build failure on some platforms.
index bfa73e31ef9b8fa1996b0a4bd47d26a755ffaaf6..3814e58fc8b838ba00abd0a3d7ab04980a2acb45 100644 (file)
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -685,6 +685,7 @@ enum leaf_optimization
 
 /* Linux-specific constants from coreutils' src/fs.h */
 # define S_MAGIC_AFS 0x5346414F
+# define S_MAGIC_CIFS 0xFF534D42
 # define S_MAGIC_NFS 0x6969
 # define S_MAGIC_PROC 0x9FA0
 # define S_MAGIC_REISERFS 0x52654973
@@ -792,8 +793,9 @@ dirent_inode_sort_may_be_useful (FTSENT const *p)
 
   switch (filesystem_type (p))
     {
-    case S_MAGIC_TMPFS:
+    case S_MAGIC_CIFS:
     case S_MAGIC_NFS:
+    case S_MAGIC_TMPFS:
       /* On a file system of any of these types, sorting
          is unnecessary, and hence wasteful.  */
       return false;
@@ -827,6 +829,10 @@ leaf_optimization (FTSENT const *p)
       /* Although AFS mount points are not counted in st_nlink, they
          act like directories.  See <https://bugs.debian.org/143111>.  */
       FALLTHROUGH;
+    case S_MAGIC_CIFS:
+      /* Leaf optimization causes 'find' to abort.  See
+         <https://lists.gnu.org/r/bug-gnulib/2018-04/msg00015.html>.  */
+      FALLTHROUGH;
     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>