Message ID | 20220527081915.2024853-3-hch@lst.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/10] btrfs: add a helpers for read repair testing | expand |
On 5/27/22 13:49, Christoph Hellwig wrote: > Use the common helpers to find the btrfs logical address and to read from > a specific mirror. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > Reviewed-by: Qu Wenruo <wqu@suse.com> > --- > tests/btrfs/140 | 13 ++----------- > 1 file changed, 2 insertions(+), 11 deletions(-) > > diff --git a/tests/btrfs/140 b/tests/btrfs/140 > index c680fe0a..fdff6eb2 100755 > --- a/tests/btrfs/140 > +++ b/tests/btrfs/140 > @@ -24,7 +24,6 @@ _supported_fs btrfs > _require_scratch_dev_pool 2 > > _require_btrfs_command inspect-internal dump-tree > -_require_command "$FILEFRAG_PROG" filefrag > _require_odirect > # Overwriting data is forbidden on a zoned block device > _require_non_zoned_device "${SCRATCH_DEV}" > @@ -71,7 +70,7 @@ $XFS_IO_PROG -f -d -c "pwrite -S 0xaa -b 128K 0 128K" "$SCRATCH_MNT/foobar" |\ > echo "step 2......corrupt file extent" >>$seqres.full > > ${FILEFRAG_PROG} -v $SCRATCH_MNT/foobar >> $seqres.full > -logical_in_btrfs=`${FILEFRAG_PROG} -v $SCRATCH_MNT/foobar | _filter_filefrag | cut -d '#' -f 1` > +logical_in_btrfs=$(_btrfs_get_first_logical $SCRATCH_MNT/foobar) > physical=$(get_physical ${logical_in_btrfs} 1) > devid=$(get_devid ${logical_in_btrfs} 1) > devpath=$(get_device_path ${devid}) > @@ -87,15 +86,7 @@ _scratch_mount > # step 3, 128k dio read (this read can repair bad copy) > echo "step 3......repair the bad copy" >>$seqres.full > > -# since raid1 consists of two copies, and the bad copy was put on stripe #1 > -# while the good copy lies on stripe #0, the bad copy only gets access when the > -# reader's pid % 2 == 1 is true > -while true; do > - $XFS_IO_PROG -d -c "pread -b 128K 0 128K" "$SCRATCH_MNT/foobar" > /dev/null & > - pid=$! > - wait > - [ $((pid % 2)) == 1 ] && break > -done > +_btrfs_direct_read_on_mirror 1 2 "$SCRATCH_MNT/foobar" 0 128K > (_btrfs_direct_read_on_mirror() is being reviewed in 1/10) Otherwise. Looks good. Reviewed-by: Anand Jain <anand.jain@oracle.com> > _scratch_unmount >
diff --git a/tests/btrfs/140 b/tests/btrfs/140 index c680fe0a..fdff6eb2 100755 --- a/tests/btrfs/140 +++ b/tests/btrfs/140 @@ -24,7 +24,6 @@ _supported_fs btrfs _require_scratch_dev_pool 2 _require_btrfs_command inspect-internal dump-tree -_require_command "$FILEFRAG_PROG" filefrag _require_odirect # Overwriting data is forbidden on a zoned block device _require_non_zoned_device "${SCRATCH_DEV}" @@ -71,7 +70,7 @@ $XFS_IO_PROG -f -d -c "pwrite -S 0xaa -b 128K 0 128K" "$SCRATCH_MNT/foobar" |\ echo "step 2......corrupt file extent" >>$seqres.full ${FILEFRAG_PROG} -v $SCRATCH_MNT/foobar >> $seqres.full -logical_in_btrfs=`${FILEFRAG_PROG} -v $SCRATCH_MNT/foobar | _filter_filefrag | cut -d '#' -f 1` +logical_in_btrfs=$(_btrfs_get_first_logical $SCRATCH_MNT/foobar) physical=$(get_physical ${logical_in_btrfs} 1) devid=$(get_devid ${logical_in_btrfs} 1) devpath=$(get_device_path ${devid}) @@ -87,15 +86,7 @@ _scratch_mount # step 3, 128k dio read (this read can repair bad copy) echo "step 3......repair the bad copy" >>$seqres.full -# since raid1 consists of two copies, and the bad copy was put on stripe #1 -# while the good copy lies on stripe #0, the bad copy only gets access when the -# reader's pid % 2 == 1 is true -while true; do - $XFS_IO_PROG -d -c "pread -b 128K 0 128K" "$SCRATCH_MNT/foobar" > /dev/null & - pid=$! - wait - [ $((pid % 2)) == 1 ] && break -done +_btrfs_direct_read_on_mirror 1 2 "$SCRATCH_MNT/foobar" 0 128K _scratch_unmount