On 2019/12/11 下午3:23, Anand Jain wrote: > > > On 12/11/19 3:08 PM, Qu Wenruo wrote: >> >> >> On 2019/12/11 下午2:08, Anand Jain wrote: >>> We changed the order of the allocation on the devices, and >>> so the test cases which are hard coded to find specific stripe >>> on the specific device gets failed. So fix it with the new layout. >>> >>> Signed-off-by: Anand Jain <anand.jain@xxxxxxxxxx> >>> --- >>> Qu, Right we need to fix the dev in the test case as well. >>> I saw your patches bit late. Here is what I had.. you may >>> use it. So I am marking this patch as RFC. >> >> I am crafting a better solution, to handle both behavior (and even >> future behavior), by getting both devid and physical offset. > > Yep helper function using either, > devid and btrfs fi show > or > uuid and blkid > > would dynamically find the right device. My current helper is going to rely on the fact that all mkfs.btrfs assigned devid sequentially. Which means "mkfs.btrfs -f $dev1 $dev2" will always assigned devid 1 to $dev1, and devid 2 to $dev2. As long as we don't touch that part, we should be OK. (And I really hope we won't touch that part). > > I am ok with either. > >> And I tend to remove the fail_make_request requirement from some tests, >> and direct read with multiple try should be enough to trigger repair for >> test btrfs/142 and btrfs/143. >> > >> In fact, I don't believe your current fix is good enough to handle both >> old and new mkfs.btrfs. > > It was designed to handle only forward compatible. Then both Oracle and SUSE QA people will hate such tests... Thanks, Qu > > Thanks, Anand > >> So we need to investigate more for raid repair test cases to make them >> future proof. >> >> Thanks, >> Qu >>> Thanks. >>> >>> tests/btrfs/158 | 10 +++++----- >>> tests/btrfs/158.out | 4 ++-- >>> 2 files changed, 7 insertions(+), 7 deletions(-) >>> >>> diff --git a/tests/btrfs/158 b/tests/btrfs/158 >>> index 603e8bea9b7e..7f2066384f55 100755 >>> --- a/tests/btrfs/158 >>> +++ b/tests/btrfs/158 >>> @@ -76,14 +76,14 @@ _scratch_unmount >>> stripe_0=`get_physical_stripe0` >>> stripe_1=`get_physical_stripe1` >>> -dev4=`echo $SCRATCH_DEV_POOL | awk '{print $4}'` >>> -dev3=`echo $SCRATCH_DEV_POOL | awk '{print $3}'` >>> +dev1=`echo $SCRATCH_DEV_POOL | awk '{print $1}'` >>> +dev2=`echo $SCRATCH_DEV_POOL | awk '{print $2}'` >>> # step 2: corrupt the 1st and 2nd stripe (stripe 0 and 1) >>> -echo "step 2......simulate bitrot at offset $stripe_0 of >>> device_4($dev4) and offset $stripe_1 of device_3($dev3)" >>$seqres.full >>> +echo "step 2......simulate bitrot at offset $stripe_0 of >>> device_1($dev1) and offset $stripe_1 of device_2($dev2)" >>$seqres.full >>> -$XFS_IO_PROG -f -d -c "pwrite -S 0xbb $stripe_0 64K" $dev4 | >>> _filter_xfs_io >>> -$XFS_IO_PROG -f -d -c "pwrite -S 0xbb $stripe_1 64K" $dev3 | >>> _filter_xfs_io >>> +$XFS_IO_PROG -f -d -c "pwrite -S 0xbb $stripe_0 64K" $dev1 | >>> _filter_xfs_io >>> +$XFS_IO_PROG -f -d -c "pwrite -S 0xbb $stripe_1 64K" $dev2 | >>> _filter_xfs_io >>> # step 3: scrub filesystem to repair the bitrot >>> echo "step 3......repair the bitrot" >> $seqres.full >>> diff --git a/tests/btrfs/158.out b/tests/btrfs/158.out >>> index 1f5ad3f76917..5cdaeb238c62 100644 >>> --- a/tests/btrfs/158.out >>> +++ b/tests/btrfs/158.out >>> @@ -1,9 +1,9 @@ >>> QA output created by 158 >>> wrote 131072/131072 bytes at offset 0 >>> XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >>> -wrote 65536/65536 bytes at offset 9437184 >>> +wrote 65536/65536 bytes at offset 22020096 >>> XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >>> -wrote 65536/65536 bytes at offset 9437184 >>> +wrote 65536/65536 bytes at offset 1048576 >>> XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >>> 0000000 aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa >>> * >>> >>
Attachment:
signature.asc
Description: OpenPGP digital signature