On 2019/1/10 下午9:53, Filipe Manana wrote: [snip] >>>> +# Workaround to handle killed workload with unreturned syscall >>>> +sync >>> >>> I can't understand that comment, nor why the call to sync (probably >>> most readers won't either). >>> What do you mean by "unreturned syscall"? It hangs, blocked? Because >>> of the deadlock? How does the sync makes it "return"? >> >> I mean normal "btrfs subvolume create/delete" ioctl syscalls. >> >>> >>> When you say killed workload, you mean though the kill commands above? >>> For all pids or just some in particular? >> >> For the workload, it will be a forked bash process, and then executing >> "btrfs" program. >> While "btrfs subvolume create/delete" could call ioctl and fall into >> kernel space, kill/wait for the bash process could return before the >> ioctl returned. >> >> So here we try to call sync which will commit current transaction, more >> or less wait for unfinished "btrfs" ioctls to return. >> >> Or should I change to the more common loop of check "btrfs" process and >> wait? > > Doing something like the following seems to be what you need: > > https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/commit/?id=d0ec5f5af9479137526b73b8b4f48ef028444ffc Thanks a lot! It's much better than my ugly workaround. I'll update the patch to address all your comment. Thanks, Qu > > >> >> Thanks, >> Qu >> >>> >>>> + >>>> +# success, all done >>>> +echo "Silence is golden" >>>> + >>>> +status=0 >>>> +exit >>>> diff --git a/tests/btrfs/179.out b/tests/btrfs/179.out >>>> new file mode 100644 >>>> index 000000000000..cb9eba3d34b1 >>>> --- /dev/null >>>> +++ b/tests/btrfs/179.out >>>> @@ -0,0 +1,2 @@ >>>> +QA output created by 179 >>>> +Silence is golden >>>> diff --git a/tests/btrfs/group b/tests/btrfs/group >>>> index 04c0254aa4bf..46dd3c9523c2 100644 >>>> --- a/tests/btrfs/group >>>> +++ b/tests/btrfs/group >>>> @@ -181,3 +181,4 @@ >>>> 176 auto quick swap volume >>>> 177 auto quick swap balance >>>> 178 auto quick send >>>> +179 auto qgroup dangerous >>>> -- >>>> 2.20.1 >>>> >>> >>> >> > >
Attachment:
signature.asc
Description: OpenPGP digital signature