From: Pádraig Brady Date: Sun, 20 Dec 2015 23:46:05 +0000 (+0000) Subject: fts: enable leaf optimization for XFS X-Git-Tag: v1.0~6879 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=d459ec6a4f97001a57d9299143ea9a5f6b1f313b;p=gnulib.git fts: enable leaf optimization for XFS XFS provides usable dirent.d_type only for DT_DIR, but the noleaf optimization still applies, as confirmed with: test $(($(find . -maxdepth 1 -type d | wc -l) + 1)) = $(stat -c %h .) Enabling this gives significant traversal speedup. Testing with find(1) gives: $ time find/find-before /usr/share >/dev/null real 0m0.410s user 0m0.145s sys 0m0.266s $ time find/find-after /usr/share >/dev/null real 0m0.278s user 0m0.147s sys 0m0.131s * lib/fts.c (leaf_optimization_applies): Add XFS to the white list. --- diff --git a/ChangeLog b/ChangeLog index 3945c58d20..464dc7484b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2015-12-20 Pádraig Brady + + fts: enable leaf optimization for XFS + XFS provides usable dirent.d_type only for DT_DIR, + but the noleaf optimization still applies. + * lib/fts.c (leaf_optimization_applies): Add XFS to the white list. + 2015-12-17 Paul Eggert intprops: comment fix diff --git a/lib/fts.c b/lib/fts.c index ea73675163..99679c7a96 100644 --- a/lib/fts.c +++ b/lib/fts.c @@ -665,6 +665,7 @@ fts_close (FTS *sp) # define S_MAGIC_TMPFS 0x1021994 # define S_MAGIC_NFS 0x6969 # define S_MAGIC_REISERFS 0x52654973 +# define S_MAGIC_XFS 0x58465342 # define S_MAGIC_PROC 0x9FA0 /* Return false if it is easy to determine the file system type of @@ -720,6 +721,7 @@ leaf_optimization_applies (int dir_fd) /* 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; case S_MAGIC_PROC: