On 04/05/2018 05:44 AM, Kamil Dudka wrote:
Does this change (intentionally?) enable leaf optimization for CIFS?
No, I wasn't thinking about CIFS when I wrote that. Thanks for reporting it. I installed the attached to try to fix this. I have not tested it with CIFS.
>From 900451bc165c6747a827c1458b8763f61775f2e6 Mon Sep 17 00:00:00 2001 From: Paul Eggert <egg...@cs.ucla.edu> 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 <egg...@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 <br...@clisp.org> 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 <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> -- 2.14.3