>From 900451bc165c6747a827c1458b8763f61775f2e6 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 5 Apr 2018 08:48:01 -0700 Subject: [PATCH] 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. --- ChangeLog | 9 +++++++++ lib/fts.c | 8 +++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 769fa380d..6d8670803 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2018-04-05 Paul Eggert + + 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 c-stack: Fix possible build failure on some platforms. diff --git a/lib/fts.c b/lib/fts.c index bfa73e31e..3814e58fc 100644 --- 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 . */ FALLTHROUGH; + case S_MAGIC_CIFS: + /* Leaf optimization causes 'find' to abort. See + . */ + FALLTHROUGH; case S_MAGIC_NFS: /* NFS provides usable dirent.d_type but not necessarily for all entries of large directories, so as per -- 2.14.3