diff mbox series

ext4/021: make sure the fdatasync subprocess exits

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

Commit Message

Zhang Yi Feb. 14, 2020, 2:20 a.m. UTC
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(+)

Comments

Eryu Guan Feb. 23, 2020, 12:34 p.m. UTC | #1
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
>
Zhang Yi Feb. 24, 2020, 11:31 a.m. UTC | #2
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 mbox series

Patch

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.*
 }