Subject: Re: bug#73418: ls (GNU coreutils) 9.4 is extremely slower than ls (GNU coreutils) 8.32 listing files on a cifs mounted share

From: Bernhard Voelker <[email-masked]>
Date: Mon, 30 Sep 2024 10:26:22 +0200

On 9/30/24 7:24 AM, Paul Eggert wrote:
> I installed the attached patch to fix some of the issue

There's a new syntax-check failure for a require_root_ test here:

FAIL: tests/ls/capability
=========================

++ initial_cwd_=/home/berny/git/coreutils
+++ testdir_prefix_
+++ printf gt
++ pfx_=gt
+++ mktempd_ /home/berny/git/coreutils gt-capability.sh.XXXX
+++ case $# in
+++ destdir_=/home/berny/git/coreutils
+++ template_=gt-capability.sh.XXXX
+++ MAX_TRIES_=4
+++ case $destdir_ in
+++ destdir_slash_=/home/berny/git/coreutils/
+++ case $template_ in
++++ unset TMPDIR
+++ d=/home/berny/git/coreutils/gt-capability.sh.h8yJ
+++ case $d in
+++ :
+++ test -d /home/berny/git/coreutils/gt-capability.sh.h8yJ
++++ ls -dgo /home/berny/git/coreutils/gt-capability.sh.h8yJ
+++ perms='drwx------ 2 4096 Sep 30 10:14 /home/berny/git/coreutils/gt-capability.sh.h8yJ'
+++ case $perms in
+++ :
+++ echo /home/berny/git/coreutils/gt-capability.sh.h8yJ
+++ return
++ test_dir_=/home/berny/git/coreutils/gt-capability.sh.h8yJ
++ cd /home/berny/git/coreutils/gt-capability.sh.h8yJ
++ case $srcdir in
++ srcdir=../.
++ builddir=..
++ export srcdir builddir
++ gl_init_sh_nl_='
'
++ IFS='
'
++ for sig_ in 1 2 3 13 15
+++ expr 1 + 128
++ eval 'trap '\''Exit 129'\'' 1'
+++ trap 'Exit 129' 1
++ for sig_ in 1 2 3 13 15
+++ expr 2 + 128
++ eval 'trap '\''Exit 130'\'' 2'
+++ trap 'Exit 130' 2
++ for sig_ in 1 2 3 13 15
+++ expr 3 + 128
++ eval 'trap '\''Exit 131'\'' 3'
+++ trap 'Exit 131' 3
++ for sig_ in 1 2 3 13 15
+++ expr 13 + 128
++ eval 'trap '\''Exit 141'\'' 13'
+++ trap 'Exit 141' 13
++ for sig_ in 1 2 3 13 15
+++ expr 15 + 128
++ eval 'trap '\''Exit 143'\'' 15'
+++ trap 'Exit 143' 15
++ saved_IFS='
'
++ IFS=:
++ new_PATH=
++ for dir in $PATH
++ IFS='
'
++ case "$dir" in
++ test -d /home/berny/coreutils/src/.
++ new_PATH=/home/berny/coreutils/src
++ for dir in $PATH
++ IFS='
'
++ case "$dir" in
++ test -d /home/berny/bin/.
++ new_PATH=/home/berny/coreutils/src:/home/berny/bin
++ for dir in $PATH
++ IFS='
'
++ case "$dir" in
++ test -d /usr/local/bin/.
++ new_PATH=/home/berny/coreutils/src:/home/berny/bin:/usr/local/bin
++ for dir in $PATH
++ IFS='
'
++ case "$dir" in
++ test -d /usr/bin/.
++ new_PATH=/home/berny/coreutils/src:/home/berny/bin:/usr/local/bin:/usr/bin
++ for dir in $PATH
++ IFS='
'
++ case "$dir" in
++ test -d /bin/.
++ new_PATH=/home/berny/coreutils/src:/home/berny/bin:/usr/local/bin:/usr/bin:/bin
++ for dir in $PATH
++ IFS='
'
++ case "$dir" in
++ test -d /sbin/.
++ new_PATH=/home/berny/coreutils/src:/home/berny/bin:/usr/local/bin:/usr/bin:/bin:/sbin
++ for dir in $PATH
++ IFS='
'
++ case "$dir" in
++ test -d /usr/sbin/.
++ new_PATH=/home/berny/coreutils/src:/home/berny/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin
++ IFS='
'
++ PATH=/home/berny/coreutils/src:/home/berny/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin
++ export PATH
++ trap remove_tmp_ EXIT
+ path_prepend_ ./src
+ test 1 '!=' 0
+ path_dir_=./src
+ case $path_dir_ in
+ abs_path_dir_=/home/berny/git/coreutils/./src
+ case $abs_path_dir_ in
+ PATH=/home/berny/git/coreutils/./src:/home/berny/coreutils/src:/home/berny/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin
+ create_exe_shims_ /home/berny/git/coreutils/./src
+ case $EXEEXT in
+ return 0
+ shift
+ test 0 '!=' 0
+ export PATH
+ print_ver_ ls printf
+ require_built_ ls printf
+ skip_=no
+ for i in "$@"
+ case " $built_programs " in
+ for i in "$@"
+ case " $built_programs " in
+ test no = yes
+ test yes = yes
+ local i
+ for i in $*
+ env ls --version
ls (GNU coreutils) 9.5.121-e71b24
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Richard M. Stallman and David MacKenzie.
+ for i in $*
+ env printf --version
printf (GNU coreutils) 9.5.121-e71b24
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David MacKenzie.
+ require_root_
+ uid_is_privileged_
++ id -u
+ my_uid=0
+ case $my_uid in
+ NON_ROOT_USERNAME=berny
++ id -g berny
+ NON_ROOT_GID=1000
+ grep '^[ ]*chroot' .././tests/ls/capability.sh
+ grep '^#define HAVE_CAP 1' /home/berny/coreutils/lib/config.h
+ grep 'usage: setcap'
+ umask 22
+ mkdir test test/dir
+ cd test
+ touch cap_pos dir/cap_pos dir/cap_neg
+ for file in cap_pos dir/cap_neg
+ setcap cap_net_bind_service=ep cap_pos
+ for file in cap_pos dir/cap_neg
+ setcap cap_net_bind_service=ep dir/cap_neg
+ code='30;41'
+ for ex in '' ex=:
+ LS_COLORS='di=:ca=30;41'
+ ls --color=always cap_pos dir
+ env printf '\e[0m\e[30;41mcap_pos\e[0m

dir:
\e[30;41mcap_neg\e[0m
cap_pos
'
+ compare out out_ok
+ compare_dev_null_ out out_ok
+ test 2 = 2
+ test xout = x/dev/null
+ test xout_ok = x/dev/null
+ return 2
+ case $? in
+ compare_ out out_ok
+ LC_ALL=C
+ diff -u out out_ok
--- out	2024-09-30 10:14:06.161475391 +0200
+++ out_ok	2024-09-30 10:14:06.164810391 +0200
@@ -1,5 +1,5 @@
-cap_pos
+[0m[30;41mcap_pos[0m

  dir:
-cap_neg
+[30;41mcap_neg[0m
  cap_pos
+ fail=1
+ for ex in '' ex=:
+ LS_COLORS='di=:ex=:ca=30;41'
+ ls --color=always cap_pos dir
+ env printf '\e[0m\e[30;41mcap_pos\e[0m

dir:
\e[30;41mcap_neg\e[0m
cap_pos
'
+ compare out out_ok
+ compare_dev_null_ out out_ok
+ test 2 = 2
+ test xout = x/dev/null
+ test xout_ok = x/dev/null
+ return 2
+ case $? in
+ compare_ out out_ok
+ LC_ALL=C
+ diff -u out out_ok
--- out	2024-09-30 10:14:06.164810391 +0200
+++ out_ok	2024-09-30 10:14:06.168145391 +0200
@@ -1,5 +1,5 @@
-cap_pos
+[0m[30;41mcap_pos[0m

  dir:
-cap_neg
+[30;41mcap_neg[0m
  cap_pos
+ fail=1
+ Exit 1
+ set +e
+ exit 1
+ exit 1
+ remove_tmp_
+ __st=1
+ cleanup_
+ :
+ test '' = yes
+ cd /home/berny/git/coreutils
+ chmod -R u+rwx /home/berny/git/coreutils/gt-capability.sh.h8yJ
+ rm -rf /home/berny/git/coreutils/gt-capability.sh.h8yJ
+ exit 1
FAIL tests/ls/capability.sh (exit status: 1)

Have a nice day,
Berny