fstests: btrfs/022: Disable snapshot ioctl in fsstress
diff mbox series

Message ID 20200206053226.23624-1-wqu@suse.com
State New
Headers show
Series
  • fstests: btrfs/022: Disable snapshot ioctl in fsstress
Related show

Commit Message

Qu Wenruo Feb. 6, 2020, 5:32 a.m. UTC
Since commit fd0830929573 ("fsstress: add the ability to create
snapshots") adds the ability for fsstress to create/delete snapshot and
subvolume, test case btrfs/022 fails as _btrfs_get_subvolid can't
handle multiple subvolumes under the same path.

So manually disable snapshot/subvolume creation and deletion ioctl in this
test case. Other qgroup test cases aren't affected.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 tests/btrfs/022 | 2 ++
 1 file changed, 2 insertions(+)

Comments

Josef Bacik Feb. 6, 2020, 3:47 p.m. UTC | #1
On 2/6/20 12:32 AM, Qu Wenruo wrote:
> Since commit fd0830929573 ("fsstress: add the ability to create
> snapshots") adds the ability for fsstress to create/delete snapshot and
> subvolume, test case btrfs/022 fails as _btrfs_get_subvolid can't
> handle multiple subvolumes under the same path.
> 
> So manually disable snapshot/subvolume creation and deletion ioctl in this
> test case. Other qgroup test cases aren't affected.
> 
> Signed-off-by: Qu Wenruo <wqu@suse.com>

Why not just fix _btrfs_get_subvolid?  You can use egrep to make sure the name 
matches exactly.  Thanks,

Josef
Qu Wenruo Feb. 7, 2020, 12:35 a.m. UTC | #2
On 2020/2/6 下午11:47, Josef Bacik wrote:
> On 2/6/20 12:32 AM, Qu Wenruo wrote:
>> Since commit fd0830929573 ("fsstress: add the ability to create
>> snapshots") adds the ability for fsstress to create/delete snapshot and
>> subvolume, test case btrfs/022 fails as _btrfs_get_subvolid can't
>> handle multiple subvolumes under the same path.
>>
>> So manually disable snapshot/subvolume creation and deletion ioctl in
>> this
>> test case. Other qgroup test cases aren't affected.
>>
>> Signed-off-by: Qu Wenruo <wqu@suse.com>
> 
> Why not just fix _btrfs_get_subvolid?  You can use egrep to make sure
> the name matches exactly.  Thanks,

Because we have other requirement, like limit tests.

If we have other snapshots/subvolumes, they don't have the same limit,
thus unable to test qgroup properly.

Thanks,
Qu
> 
> Josef
Josef Bacik Feb. 7, 2020, 12:38 a.m. UTC | #3
On 2/6/20 7:35 PM, Qu Wenruo wrote:
> 
> 
> On 2020/2/6 下午11:47, Josef Bacik wrote:
>> On 2/6/20 12:32 AM, Qu Wenruo wrote:
>>> Since commit fd0830929573 ("fsstress: add the ability to create
>>> snapshots") adds the ability for fsstress to create/delete snapshot and
>>> subvolume, test case btrfs/022 fails as _btrfs_get_subvolid can't
>>> handle multiple subvolumes under the same path.
>>>
>>> So manually disable snapshot/subvolume creation and deletion ioctl in
>>> this
>>> test case. Other qgroup test cases aren't affected.
>>>
>>> Signed-off-by: Qu Wenruo <wqu@suse.com>
>>
>> Why not just fix _btrfs_get_subvolid?  You can use egrep to make sure
>> the name matches exactly.  Thanks,
> 
> Because we have other requirement, like limit tests.
> 
> If we have other snapshots/subvolumes, they don't have the same limit,
> thus unable to test qgroup properly.
> 

That's fair, but we should also fix _btrfs_get_subvolid since we know it doesn't 
work in this case.  Thanks,

Josef
Qu Wenruo Feb. 7, 2020, 12:38 a.m. UTC | #4
On 2020/2/7 上午8:38, Josef Bacik wrote:
> On 2/6/20 7:35 PM, Qu Wenruo wrote:
>>
>>
>> On 2020/2/6 下午11:47, Josef Bacik wrote:
>>> On 2/6/20 12:32 AM, Qu Wenruo wrote:
>>>> Since commit fd0830929573 ("fsstress: add the ability to create
>>>> snapshots") adds the ability for fsstress to create/delete snapshot and
>>>> subvolume, test case btrfs/022 fails as _btrfs_get_subvolid can't
>>>> handle multiple subvolumes under the same path.
>>>>
>>>> So manually disable snapshot/subvolume creation and deletion ioctl in
>>>> this
>>>> test case. Other qgroup test cases aren't affected.
>>>>
>>>> Signed-off-by: Qu Wenruo <wqu@suse.com>
>>>
>>> Why not just fix _btrfs_get_subvolid?  You can use egrep to make sure
>>> the name matches exactly.  Thanks,
>>
>> Because we have other requirement, like limit tests.
>>
>> If we have other snapshots/subvolumes, they don't have the same limit,
>> thus unable to test qgroup properly.
>>
> 
> That's fair, but we should also fix _btrfs_get_subvolid since we know it
> doesn't work in this case.  Thanks,

Sure, another patch will address this soon.

Thanks,
Qu

> 
> Josef
Qu Wenruo Feb. 7, 2020, 1:39 a.m. UTC | #5
On 2020/2/7 上午8:38, Josef Bacik wrote:
> On 2/6/20 7:35 PM, Qu Wenruo wrote:
>>
>>
>> On 2020/2/6 下午11:47, Josef Bacik wrote:
>>> On 2/6/20 12:32 AM, Qu Wenruo wrote:
>>>> Since commit fd0830929573 ("fsstress: add the ability to create
>>>> snapshots") adds the ability for fsstress to create/delete snapshot and
>>>> subvolume, test case btrfs/022 fails as _btrfs_get_subvolid can't
>>>> handle multiple subvolumes under the same path.
>>>>
>>>> So manually disable snapshot/subvolume creation and deletion ioctl in
>>>> this
>>>> test case. Other qgroup test cases aren't affected.
>>>>
>>>> Signed-off-by: Qu Wenruo <wqu@suse.com>
>>>
>>> Why not just fix _btrfs_get_subvolid?  You can use egrep to make sure
>>> the name matches exactly.  Thanks,
>>
>> Because we have other requirement, like limit tests.
>>
>> If we have other snapshots/subvolumes, they don't have the same limit,
>> thus unable to test qgroup properly.
>>
> 
> That's fair, but we should also fix _btrfs_get_subvolid since we know it
> doesn't work in this case.  Thanks,

My bad. It's not the limit test, it doesn't utilize fsstress at all.

It's completely the bad greping for qgroup ids.

We could have the following subvolume layouts in btrfs qgroup show output:
subvol a id=256
subvol b id=306
qgroupid         rfer         excl
--------         ----         ----
0/5             16384        16384
0/256        13914112        16384
...
0/263         3080192      2306048 << 306 matches here first
...
0/306        13914112        16384 << Then match here

Although disabling snapshot/subvolume creation solves the problem since
there will be no other subvolumes to start with, we're still not that safe.

The root fix is to grep qgroupid by "0/$subvolid", not just $subvolid.

I'll do a proer fix, and keep the snapshot/subvolume creation to take
advantage of your enhanced fsstress.

Thanks,
Qu
> 
> Josef

Patch
diff mbox series

diff --git a/tests/btrfs/022 b/tests/btrfs/022
index 5348d3ed..d0ae6b01 100755
--- a/tests/btrfs/022
+++ b/tests/btrfs/022
@@ -43,6 +43,7 @@  _basic_test()
 		$seqres.full 2>&1
 	[ $? -eq 0 ] || _fail "couldn't find our subvols quota group"
 	run_check $FSSTRESS_PROG -d $SCRATCH_MNT/a -w -p 1 -n 2000 \
+		-f snapshot=0 -f subvol_create=0 -f subvol_delete=0 \
 		$FSSTRESS_AVOID
 	_run_btrfs_util_prog subvolume snapshot $SCRATCH_MNT/a \
 		$SCRATCH_MNT/b
@@ -66,6 +67,7 @@  _rescan_test()
 	_run_btrfs_util_prog quota enable $SCRATCH_MNT/a
 	subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT a)
 	run_check $FSSTRESS_PROG -d $SCRATCH_MNT/a -w -p 1 -n 2000 \
+		-f snapshot=0 -f subvol_create=0 -f subvol_delete=0 \
 		$FSSTRESS_AVOID
 	sync
 	output=$($BTRFS_UTIL_PROG qgroup show $units $SCRATCH_MNT | grep $subvolid)