From: Eryu Guan Date: Tue, 25 Jul 2017 08:04:21 +0000 (+0800) Subject: generic/446: make sure all background processes are dead before umount X-Git-Tag: v2022.05.01~1934 X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=commitdiff_plain;h=14d318429ebb487965cbbbe518898e8af58bb7c0 generic/446: make sure all background processes are dead before umount The $dread_pid refers to the while-true-do loop, wait for $dread_pid doesn't mean the xfs_io direct read process is already dead, sometimes xfs_io process is still running and blocking _scratch_unmount. Fix it by making the direct read does a fixed number of loop and break out the second mmap-fpunch loop if the first loop exits. At this point we're sure that there's no unfinished background process blocking the umount. Reviewed-by: Xiao Yang Signed-off-by: Eryu Guan --- diff --git a/tests/generic/446 b/tests/generic/446 index 62ae449d..6a1b69aa 100755 --- a/tests/generic/446 +++ b/tests/generic/446 @@ -61,20 +61,20 @@ filesz=$((65536 * 2)) $XFS_IO_PROG -f -c "truncate $((filesz * 2))" $SCRATCH_MNT/file >> $seqres.full # run a background dio read to a hole in a loop -while true; do +for i in `seq 0 999`; do $XFS_IO_PROG -d -c "pread 0 $filesz" $SCRATCH_MNT/file > /dev/null 2>&1 done & dread_pid=$! # run mapped write to the same hole as dio read -for i in `seq 0 999`; do +# loop until background dio read exits +while kill -s 0 $dread_pid >/dev/null 2>&1; do $XFS_IO_PROG -c "mmap 0 $filesz" -c "mwrite 0 $filesz" $SCRATCH_MNT/file \ > /dev/null $XFS_IO_PROG -c "fpunch 0 $filesz" $SCRATCH_MNT/file > /dev/null done -kill -9 $dread_pid > /dev/null 2>&1 wait $dread_pid > /dev/null 2>&1 echo "Silence is golden"