On Mon, Feb 19, 2024 at 7:50 PM Anand Jain <anand.jain@xxxxxxxxxx> 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@xxxxxxxxxx> > --- > 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 >