du01: create the temp file outside of the working directory
PATCH 1/1 du01: create the temp file outside of the working directory
I noticed that with older kernels and with XFS the 'du -B 512' scenario of this test case may fail:
[root@kholmanskikh du01]# uname -r 3.8.13-98.2.2.el6uek.x86_64 [root@kholmanskikh du01]# ls -l
total 10240
drwxr-xr-x 2 root root 24 Jul 25 14:48 testdir
-rw-r--r-- 1 root root 10485760 Jul 25 14:48 testfile [root@kholmanskikh du01]# du -B 512
0 ./testdir
20480 .
[root@kholmanskikh du01]# du -B 512 > temp; cat temp
0 ./testdir
20608 .
[root@kholmanskikh du01]#
This happens because we create 'temp' file in the working directory, i.e. 'temp' may already contain some data at the moment 'du' tries to 'fstat' it.
So let's keep the working directory clean and create any extra files outside of it.
--- testcases/commands/du/du01.sh | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)
testcases/commands/du/du01.sh +7 -4
@@ -31,6 +31,9 @@ setup() tst_tmpdir TST_CLEANUP=cleanup + ROD_SILENT mkdir basedir + ROD_SILENT cd basedir + ROD_SILENT dd if=/dev/zero of=testfile bs=1M count=10 ROD_SILENT mkdir -p testdir
@@ -53,11 +56,11 @@ du_test() { local test_return - $1 > temp 2>&1 + $1 > ../temp 2>&1 test_return=$? if [ ${test_return} -ne 0 ]; then - grep -q -E "unrecognized option|invalid option" temp + grep -q -E "unrecognized option|invalid option" ../temp if [ $? -eq 0 ]; then tst_resm TCONF "'$1' not supported" else
@@ -66,13 +69,13 @@ du_test() return fi - grep -q $2 temp + grep -q $2 ../temp if [ $? -eq 0 ]; then tst_resm TPASS "'$1' passed" else tst_resm TFAIL "'$1' failed" tst_resm TINFO "Looking for '$2' in:" - cat temp + cat ../temp fi }
Signature · 1 line
1.7.1
PATCH 1/1 du01: create the temp file outside of the working directory
Hi!
Quoted 17 lines
I noticed that with older kernels and with XFS the 'du -B 512' scenario of this test case may fail:
[root@kholmanskikh du01]# uname -r 3.8.13-98.2.2.el6uek.x86_64 [root@kholmanskikh du01]# ls -l
total 10240
drwxr-xr-x 2 root root 24 Jul 25 14:48 testdir
-rw-r--r-- 1 root root 10485760 Jul 25 14:48 testfile [root@kholmanskikh du01]# du -B 512
0 ./testdir
20480 .
[root@kholmanskikh du01]# du -B 512 > temp; cat temp
0 ./testdir
20608 .
[root@kholmanskikh du01]#
Quoted 6 lines
This happens because we create 'temp' file in the working directory, i.e. 'temp' may already contain some data at the moment 'du' tries to 'fstat' it.
So let's keep the working directory clean and create any extra files outside of it.
Looks good to me, acked.
Signature · 2 lines
Cyril Hrubis [email protected]
PATCH 1/1 du01: create the temp file outside of the working directory
In reply to Stanislav KholmanskikhHi!
FYI: I've reproduced this on ppc64le with Btrfs as well.
Signature · 2 lines
Cyril Hrubis [email protected]
PATCH 1/1 du01: create the temp file outside of the working directory
Quoted 3 lines · Cyril Hrubis
Hi!
FYI: I've reproduced this on ppc64le with Btrfs as well.
Thank you. Pushed the patch.