Message ID | 7d0b939fdcb0052c184e18226fcbbc4454508243.1708362842.git.anand.jain@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: functional test cases for tempfsid | expand |
On Mon, Feb 19, 2024 at 7:50 PM Anand Jain <anand.jain@oracle.com> wrote: > > Given concurrent mounting of both the original and its clone device on > the same system, this test confirms the integrity of send and receive > operations in the presence of active tempfsid. > > Signed-off-by: Anand Jain <anand.jain@oracle.com> > --- > v2: > Organize changes to its right patch. > Fix _fail erorr message. > Declare local variables for fsid and uuid. > > tests/btrfs/314 | 81 +++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/314.out | 23 +++++++++++++ > 2 files changed, 104 insertions(+) > create mode 100755 tests/btrfs/314 > create mode 100644 tests/btrfs/314.out > > diff --git a/tests/btrfs/314 b/tests/btrfs/314 > new file mode 100755 > index 000000000000..59c6359a2ad8 > --- /dev/null > +++ b/tests/btrfs/314 > @@ -0,0 +1,81 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2024 Oracle. All Rights Reserved. > +# > +# FS QA Test 314 > +# > +# Send and receive functionality test between a normal and > +# tempfsid filesystem. > +# > +. ./common/preamble > +_begin_fstest auto quick snapshot send tempfsid > + > +_cleanup() > +{ > + cd / > + $UMOUNT_PROG $tempfsid_mnt 2>/dev/null > + rm -r -f $tmp.* > + rm -r -f $sendfile > + rm -r -f $tempfsid_mnt > +} > + > +. ./common/filter.btrfs > + > +_supported_fs btrfs > +_require_btrfs_sysfs_fsid > +_require_scratch_dev_pool 2 > +_require_btrfs_fs_feature temp_fsid > +_require_btrfs_command inspect-internal dump-super > +_require_btrfs_mkfs_uuid_option So same as before, these last 2 _require_* are because of the mkfs_clone() function, defined at common/btrfs, so they should be in the function and not spread over every test case that calls it. Thanks. > + > +_scratch_dev_pool_get 2 > + > +# mount point for the tempfsid device > +tempfsid_mnt=$TEST_DIR/$seq/tempfsid_mnt > +sendfile=$TEST_DIR/$seq/replicate.send > + > +send_receive_tempfsid() > +{ > + local src=$1 > + local dst=$2 > + > + # Use first 2 devices from the SCRATCH_DEV_POOL > + mkfs_clone ${SCRATCH_DEV} ${SCRATCH_DEV_NAME[1]} > + _scratch_mount > + _mount ${SCRATCH_DEV_NAME[1]} ${tempfsid_mnt} > + > + $XFS_IO_PROG -fc 'pwrite -S 0x61 0 9000' ${src}/foo | _filter_xfs_io > + $BTRFS_UTIL_PROG subvolume snapshot -r ${src} ${src}/snap1 | \ > + _filter_testdir_and_scratch > + > + echo Send ${src} | _filter_testdir_and_scratch > + $BTRFS_UTIL_PROG send -f ${sendfile} ${src}/snap1 2>&1 | \ > + _filter_testdir_and_scratch > + echo Receive ${dst} | _filter_testdir_and_scratch > + $BTRFS_UTIL_PROG receive -f ${sendfile} ${dst} | \ > + _filter_testdir_and_scratch > + echo -e -n "Send:\t" > + md5sum ${src}/foo | _filter_testdir_and_scratch > + echo -e -n "Recv:\t" > + md5sum ${dst}/snap1/foo | _filter_testdir_and_scratch > +} > + > +mkdir -p $tempfsid_mnt > + > +echo -e \\nFrom non-tempfsid ${SCRATCH_MNT} to tempfsid ${tempfsid_mnt} | \ > + _filter_testdir_and_scratch > +send_receive_tempfsid $SCRATCH_MNT $tempfsid_mnt > + > +_scratch_unmount > +_cleanup > +mkdir -p $tempfsid_mnt > + > +echo -e \\nFrom tempfsid ${tempfsid_mnt} to non-tempfsid ${SCRATCH_MNT} | \ > + _filter_testdir_and_scratch > +send_receive_tempfsid $tempfsid_mnt $SCRATCH_MNT > + > +_scratch_dev_pool_put > + > +# success, all done > +status=0 > +exit > diff --git a/tests/btrfs/314.out b/tests/btrfs/314.out > new file mode 100644 > index 000000000000..21963899c2b2 > --- /dev/null > +++ b/tests/btrfs/314.out > @@ -0,0 +1,23 @@ > +QA output created by 314 > + > +From non-tempfsid SCRATCH_MNT to tempfsid TEST_DIR/314/tempfsid_mnt > +wrote 9000/9000 bytes at offset 0 > +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > +Create a readonly snapshot of 'SCRATCH_MNT' in 'SCRATCH_MNT/snap1' > +Send SCRATCH_MNT > +At subvol SCRATCH_MNT/snap1 > +Receive TEST_DIR/314/tempfsid_mnt > +At subvol snap1 > +Send: 42d69d1a6d333a7ebdf64792a555e392 SCRATCH_MNT/foo > +Recv: 42d69d1a6d333a7ebdf64792a555e392 TEST_DIR/314/tempfsid_mnt/snap1/foo > + > +From tempfsid TEST_DIR/314/tempfsid_mnt to non-tempfsid SCRATCH_MNT > +wrote 9000/9000 bytes at offset 0 > +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > +Create a readonly snapshot of 'TEST_DIR/314/tempfsid_mnt' in 'TEST_DIR/314/tempfsid_mnt/snap1' > +Send TEST_DIR/314/tempfsid_mnt > +At subvol TEST_DIR/314/tempfsid_mnt/snap1 > +Receive SCRATCH_MNT > +At subvol snap1 > +Send: 42d69d1a6d333a7ebdf64792a555e392 TEST_DIR/314/tempfsid_mnt/foo > +Recv: 42d69d1a6d333a7ebdf64792a555e392 SCRATCH_MNT/snap1/foo > -- > 2.39.3 >
On 2/20/24 22:27, Filipe Manana wrote: > On Mon, Feb 19, 2024 at 7:50 PM Anand Jain <anand.jain@oracle.com> wrote: >> >> Given concurrent mounting of both the original and its clone device on >> the same system, this test confirms the integrity of send and receive >> operations in the presence of active tempfsid. >> >> Signed-off-by: Anand Jain <anand.jain@oracle.com> >> --- >> v2: >> Organize changes to its right patch. >> Fix _fail erorr message. >> Declare local variables for fsid and uuid. >> >> tests/btrfs/314 | 81 +++++++++++++++++++++++++++++++++++++++++++++ >> tests/btrfs/314.out | 23 +++++++++++++ >> 2 files changed, 104 insertions(+) >> create mode 100755 tests/btrfs/314 >> create mode 100644 tests/btrfs/314.out >> >> diff --git a/tests/btrfs/314 b/tests/btrfs/314 >> new file mode 100755 >> index 000000000000..59c6359a2ad8 >> --- /dev/null >> +++ b/tests/btrfs/314 >> @@ -0,0 +1,81 @@ >> +#! /bin/bash >> +# SPDX-License-Identifier: GPL-2.0 >> +# Copyright (c) 2024 Oracle. All Rights Reserved. >> +# >> +# FS QA Test 314 >> +# >> +# Send and receive functionality test between a normal and >> +# tempfsid filesystem. >> +# >> +. ./common/preamble >> +_begin_fstest auto quick snapshot send tempfsid >> + >> +_cleanup() >> +{ >> + cd / >> + $UMOUNT_PROG $tempfsid_mnt 2>/dev/null >> + rm -r -f $tmp.* >> + rm -r -f $sendfile >> + rm -r -f $tempfsid_mnt >> +} >> + >> +. ./common/filter.btrfs >> + >> +_supported_fs btrfs >> +_require_btrfs_sysfs_fsid >> +_require_scratch_dev_pool 2 >> +_require_btrfs_fs_feature temp_fsid >> +_require_btrfs_command inspect-internal dump-super >> +_require_btrfs_mkfs_uuid_option > > So same as before, these last 2 _require_* are because of the > mkfs_clone() function, > defined at common/btrfs, so they should be in the function and not > spread over every test case that calls it. > Yep. Fixed it. Thanks, Anand > Thanks. > >> + >> +_scratch_dev_pool_get 2 >> + >> +# mount point for the tempfsid device >> +tempfsid_mnt=$TEST_DIR/$seq/tempfsid_mnt >> +sendfile=$TEST_DIR/$seq/replicate.send >> + >> +send_receive_tempfsid() >> +{ >> + local src=$1 >> + local dst=$2 >> + >> + # Use first 2 devices from the SCRATCH_DEV_POOL >> + mkfs_clone ${SCRATCH_DEV} ${SCRATCH_DEV_NAME[1]} >> + _scratch_mount >> + _mount ${SCRATCH_DEV_NAME[1]} ${tempfsid_mnt} >> + >> + $XFS_IO_PROG -fc 'pwrite -S 0x61 0 9000' ${src}/foo | _filter_xfs_io >> + $BTRFS_UTIL_PROG subvolume snapshot -r ${src} ${src}/snap1 | \ >> + _filter_testdir_and_scratch >> + >> + echo Send ${src} | _filter_testdir_and_scratch >> + $BTRFS_UTIL_PROG send -f ${sendfile} ${src}/snap1 2>&1 | \ >> + _filter_testdir_and_scratch >> + echo Receive ${dst} | _filter_testdir_and_scratch >> + $BTRFS_UTIL_PROG receive -f ${sendfile} ${dst} | \ >> + _filter_testdir_and_scratch >> + echo -e -n "Send:\t" >> + md5sum ${src}/foo | _filter_testdir_and_scratch >> + echo -e -n "Recv:\t" >> + md5sum ${dst}/snap1/foo | _filter_testdir_and_scratch >> +} >> + >> +mkdir -p $tempfsid_mnt >> + >> +echo -e \\nFrom non-tempfsid ${SCRATCH_MNT} to tempfsid ${tempfsid_mnt} | \ >> + _filter_testdir_and_scratch >> +send_receive_tempfsid $SCRATCH_MNT $tempfsid_mnt >> + >> +_scratch_unmount >> +_cleanup >> +mkdir -p $tempfsid_mnt >> + >> +echo -e \\nFrom tempfsid ${tempfsid_mnt} to non-tempfsid ${SCRATCH_MNT} | \ >> + _filter_testdir_and_scratch >> +send_receive_tempfsid $tempfsid_mnt $SCRATCH_MNT >> + >> +_scratch_dev_pool_put >> + >> +# success, all done >> +status=0 >> +exit >> diff --git a/tests/btrfs/314.out b/tests/btrfs/314.out >> new file mode 100644 >> index 000000000000..21963899c2b2 >> --- /dev/null >> +++ b/tests/btrfs/314.out >> @@ -0,0 +1,23 @@ >> +QA output created by 314 >> + >> +From non-tempfsid SCRATCH_MNT to tempfsid TEST_DIR/314/tempfsid_mnt >> +wrote 9000/9000 bytes at offset 0 >> +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +Create a readonly snapshot of 'SCRATCH_MNT' in 'SCRATCH_MNT/snap1' >> +Send SCRATCH_MNT >> +At subvol SCRATCH_MNT/snap1 >> +Receive TEST_DIR/314/tempfsid_mnt >> +At subvol snap1 >> +Send: 42d69d1a6d333a7ebdf64792a555e392 SCRATCH_MNT/foo >> +Recv: 42d69d1a6d333a7ebdf64792a555e392 TEST_DIR/314/tempfsid_mnt/snap1/foo >> + >> +From tempfsid TEST_DIR/314/tempfsid_mnt to non-tempfsid SCRATCH_MNT >> +wrote 9000/9000 bytes at offset 0 >> +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) >> +Create a readonly snapshot of 'TEST_DIR/314/tempfsid_mnt' in 'TEST_DIR/314/tempfsid_mnt/snap1' >> +Send TEST_DIR/314/tempfsid_mnt >> +At subvol TEST_DIR/314/tempfsid_mnt/snap1 >> +Receive SCRATCH_MNT >> +At subvol snap1 >> +Send: 42d69d1a6d333a7ebdf64792a555e392 TEST_DIR/314/tempfsid_mnt/foo >> +Recv: 42d69d1a6d333a7ebdf64792a555e392 SCRATCH_MNT/snap1/foo >> -- >> 2.39.3 >>
diff --git a/tests/btrfs/314 b/tests/btrfs/314 new file mode 100755 index 000000000000..59c6359a2ad8 --- /dev/null +++ b/tests/btrfs/314 @@ -0,0 +1,81 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2024 Oracle. All Rights Reserved. +# +# FS QA Test 314 +# +# Send and receive functionality test between a normal and +# tempfsid filesystem. +# +. ./common/preamble +_begin_fstest auto quick snapshot send tempfsid + +_cleanup() +{ + cd / + $UMOUNT_PROG $tempfsid_mnt 2>/dev/null + rm -r -f $tmp.* + rm -r -f $sendfile + rm -r -f $tempfsid_mnt +} + +. ./common/filter.btrfs + +_supported_fs btrfs +_require_btrfs_sysfs_fsid +_require_scratch_dev_pool 2 +_require_btrfs_fs_feature temp_fsid +_require_btrfs_command inspect-internal dump-super +_require_btrfs_mkfs_uuid_option + +_scratch_dev_pool_get 2 + +# mount point for the tempfsid device +tempfsid_mnt=$TEST_DIR/$seq/tempfsid_mnt +sendfile=$TEST_DIR/$seq/replicate.send + +send_receive_tempfsid() +{ + local src=$1 + local dst=$2 + + # Use first 2 devices from the SCRATCH_DEV_POOL + mkfs_clone ${SCRATCH_DEV} ${SCRATCH_DEV_NAME[1]} + _scratch_mount + _mount ${SCRATCH_DEV_NAME[1]} ${tempfsid_mnt} + + $XFS_IO_PROG -fc 'pwrite -S 0x61 0 9000' ${src}/foo | _filter_xfs_io + $BTRFS_UTIL_PROG subvolume snapshot -r ${src} ${src}/snap1 | \ + _filter_testdir_and_scratch + + echo Send ${src} | _filter_testdir_and_scratch + $BTRFS_UTIL_PROG send -f ${sendfile} ${src}/snap1 2>&1 | \ + _filter_testdir_and_scratch + echo Receive ${dst} | _filter_testdir_and_scratch + $BTRFS_UTIL_PROG receive -f ${sendfile} ${dst} | \ + _filter_testdir_and_scratch + echo -e -n "Send:\t" + md5sum ${src}/foo | _filter_testdir_and_scratch + echo -e -n "Recv:\t" + md5sum ${dst}/snap1/foo | _filter_testdir_and_scratch +} + +mkdir -p $tempfsid_mnt + +echo -e \\nFrom non-tempfsid ${SCRATCH_MNT} to tempfsid ${tempfsid_mnt} | \ + _filter_testdir_and_scratch +send_receive_tempfsid $SCRATCH_MNT $tempfsid_mnt + +_scratch_unmount +_cleanup +mkdir -p $tempfsid_mnt + +echo -e \\nFrom tempfsid ${tempfsid_mnt} to non-tempfsid ${SCRATCH_MNT} | \ + _filter_testdir_and_scratch +send_receive_tempfsid $tempfsid_mnt $SCRATCH_MNT + +_scratch_dev_pool_put + +# success, all done +status=0 +exit diff --git a/tests/btrfs/314.out b/tests/btrfs/314.out new file mode 100644 index 000000000000..21963899c2b2 --- /dev/null +++ b/tests/btrfs/314.out @@ -0,0 +1,23 @@ +QA output created by 314 + +From non-tempfsid SCRATCH_MNT to tempfsid TEST_DIR/314/tempfsid_mnt +wrote 9000/9000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +Create a readonly snapshot of 'SCRATCH_MNT' in 'SCRATCH_MNT/snap1' +Send SCRATCH_MNT +At subvol SCRATCH_MNT/snap1 +Receive TEST_DIR/314/tempfsid_mnt +At subvol snap1 +Send: 42d69d1a6d333a7ebdf64792a555e392 SCRATCH_MNT/foo +Recv: 42d69d1a6d333a7ebdf64792a555e392 TEST_DIR/314/tempfsid_mnt/snap1/foo + +From tempfsid TEST_DIR/314/tempfsid_mnt to non-tempfsid SCRATCH_MNT +wrote 9000/9000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +Create a readonly snapshot of 'TEST_DIR/314/tempfsid_mnt' in 'TEST_DIR/314/tempfsid_mnt/snap1' +Send TEST_DIR/314/tempfsid_mnt +At subvol TEST_DIR/314/tempfsid_mnt/snap1 +Receive SCRATCH_MNT +At subvol snap1 +Send: 42d69d1a6d333a7ebdf64792a555e392 TEST_DIR/314/tempfsid_mnt/foo +Recv: 42d69d1a6d333a7ebdf64792a555e392 SCRATCH_MNT/snap1/foo
Given concurrent mounting of both the original and its clone device on the same system, this test confirms the integrity of send and receive operations in the presence of active tempfsid. Signed-off-by: Anand Jain <anand.jain@oracle.com> --- v2: Organize changes to its right patch. Fix _fail erorr message. Declare local variables for fsid and uuid. tests/btrfs/314 | 81 +++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/314.out | 23 +++++++++++++ 2 files changed, 104 insertions(+) create mode 100755 tests/btrfs/314 create mode 100644 tests/btrfs/314.out