Message ID | 20200214022001.15563-1-yi.zhang@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ext4/021: make sure the fdatasync subprocess exits | expand |
On Fri, Feb 14, 2020 at 10:20:01AM +0800, zhangyi (F) wrote: > Now we just kill fdatasync_work process and wait nothing after the > test, so a busy unmount failure may appear if the fdatasync syscall > doesn't return in time. > > umount: /tmp/scratch: target is busy. > mount: /tmp/scratch: /dev/sdb already mounted on /tmp/scratch. > !!! failed to remount /dev/sdb on /tmp/scratch > > This patch kill and wait the xfs_io fdatasync subprocess to make sure > _check_scratch_fs success. Yeah, that's a problem. I think you could add another "trap" in fdatasync_work, as what btrfs/036 does: trap "wait; exit" SIGTERM So xfs_io will be waited by fdatasync_work before exiting. Thanks, Eryu > > Signed-off-by: zhangyi (F) <yi.zhang@huawei.com> > --- > tests/ext4/021 | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tests/ext4/021 b/tests/ext4/021 > index 519737e1..1b4a1ced 100755 > --- a/tests/ext4/021 > +++ b/tests/ext4/021 > @@ -18,6 +18,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15 > > _cleanup() > { > + $KILLALL_PROG -wq xfs_io > cd / > rm -f $tmp.* > } > -- > 2.23.0.rc2.8.gff66981f45 >
Hi, On 2020/2/23 20:34, Eryu Guan wrote: > On Fri, Feb 14, 2020 at 10:20:01AM +0800, zhangyi (F) wrote: >> Now we just kill fdatasync_work process and wait nothing after the >> test, so a busy unmount failure may appear if the fdatasync syscall >> doesn't return in time. >> >> umount: /tmp/scratch: target is busy. >> mount: /tmp/scratch: /dev/sdb already mounted on /tmp/scratch. >> !!! failed to remount /dev/sdb on /tmp/scratch >> >> This patch kill and wait the xfs_io fdatasync subprocess to make sure >> _check_scratch_fs success. > > Yeah, that's a problem. > > I think you could add another "trap" in fdatasync_work, as what > btrfs/036 does: > > trap "wait; exit" SIGTERM > > So xfs_io will be waited by fdatasync_work before exiting. > Thanks for your suggestion, I will do that. Thanks, Yi.
diff --git a/tests/ext4/021 b/tests/ext4/021 index 519737e1..1b4a1ced 100755 --- a/tests/ext4/021 +++ b/tests/ext4/021 @@ -18,6 +18,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15 _cleanup() { + $KILLALL_PROG -wq xfs_io cd / rm -f $tmp.* }
Now we just kill fdatasync_work process and wait nothing after the test, so a busy unmount failure may appear if the fdatasync syscall doesn't return in time. umount: /tmp/scratch: target is busy. mount: /tmp/scratch: /dev/sdb already mounted on /tmp/scratch. !!! failed to remount /dev/sdb on /tmp/scratch This patch kill and wait the xfs_io fdatasync subprocess to make sure _check_scratch_fs success. Signed-off-by: zhangyi (F) <yi.zhang@huawei.com> --- tests/ext4/021 | 1 + 1 file changed, 1 insertion(+)