Re: xfstests seems broken on btrfs with multi-dev TEST_DEV

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]





On 2021/2/25 上午9:46, Eric Sandeen wrote:
On 2/24/21 7:16 PM, Anand Jain wrote:
On 25/02/2021 05:39, Eric Sandeen wrote:
On 2/24/21 10:12 AM, Eric Sandeen wrote:
Last week I was curious to just see how btrfs is faring with RAID5 in
xfstests, so I set it up for a quick run with devices configured as:

Whoops this was supposed to cc: fstests, not fsdevel, sorry.

-Eric

TEST_DEV=/dev/sdb1 # <--- this was a 3-disk "-d raid5" filesystem
SCRATCH_DEV_POOL="/dev/sdb2 /dev/sdb3 /dev/sdb4 /dev/sdb5 /dev/sdb6"

and fired off ./check -g auto

Every test after btrfs/124 fails, because that test btrfs/124 does this:

# un-scan the btrfs devices
_btrfs_forget_or_module_reload

and nothing re-scans devices after that, so every attempt to mount TEST_DEV
will fail:

devid 2 uuid e42cd5b8-2de6-4c85-ae51-74b61172051e is missing"

Other btrfs tests seeme to have the same problem.

If xfstest coverage on multi-device btrfs volumes is desired, it might be
a good idea for someone who understands the btrfs framework in xfstests
to fix this.

Eric,

  All our multi-device test-cases under tests/btrfs used the
  SCRATCH_DEV_POOL. Unless I am missing something, any idea if
  TEST_DEV can be made optional for test cases that don't need TEST_DEV?
  OR I don't understand how TEST_DEV is useful in some of these
  test-cases under tests/btrfs.

Those are the tests specifically designed to poke at multi-dev btrfs, right.

TEST_DEV is more designed to "age" - it is used for more non-destructive tests.

The point is that many tests /d/o run using TEST_DEV, and if a multi-dev TEST_DEV
can't be used, you are getting no coverage from those tests on that type of
btrfs configuration. And if a multi-dev TEST_DEV breaks the test run, nobody's
going to test that way.

The problem is, TEST_DEV should not be included in SCRATCH_DEV_POOL.

Just try assiging TEST_DEV and SCRATCH_DEV the same, that's what exactly
you're doing.

If you want to test aging on multiple-btrfs, it's not a problem at all,
just mkfs.btrfs on the array, and put one device into TEST_DEV and call
it a day.


There are ~300 tests that run on TEST_DEV, and restricting its functionality
to a single-device btrfs filesytem misses coverage.

# grep require_test tests/generic/??? | wc -l
299

Nope, it's the tester's response to setup TEST_DEV.

As mentioned, just setup TEST_DEV *properly*, you can test it without
any problem even for multi-device btrfs.



tl;dr: a btrfs test which renders a legitimate btrfs TEST_DEV inoperable is
a flaw in that btrfs test, IMHO.

The root problem is, TEST_DEV should never be included into
SCRACTH_DEV_POOL nor SCRATCH_DEV.

And obviously, putting the same device into both TEST_DEV and
SCRATCH_DEV pool is the problem.

Thanks,
Qu


-Eric

Thanks, Anand


Thanks,
-Eric






[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux