2020-02-14 02:21:57

by Zhang Yi

[permalink] [raw]
Subject: [PATCH] ext4/021: make sure the fdatasync subprocess exits

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) <[email protected]>
---
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


2020-02-23 12:34:58

by Eryu Guan

[permalink] [raw]
Subject: Re: [PATCH] ext4/021: make sure the fdatasync subprocess exits

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) <[email protected]>
> ---
> 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
>

2020-02-24 11:49:56

by Zhang Yi

[permalink] [raw]
Subject: Re: [PATCH] ext4/021: make sure the fdatasync subprocess exits

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.