Switch generic/744 to use the common _create_cloned_loop_devs() helper to format, modify, and clone the underlying loop devices, avoiding open-coded clone setup and teardown logic. Signed-off-by: Anand Jain --- tests/generic/744 | 70 ++++++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 43 deletions(-) diff --git a/tests/generic/744 b/tests/generic/744 index 330d86ce826a..c522d6f46713 100755 --- a/tests/generic/744 +++ b/tests/generic/744 @@ -10,71 +10,55 @@ . ./common/preamble _begin_fstest auto clone volume tempfsid -_cleanup() -{ - cd / - rm -r -f $tmp.* - - _unmount $mnt2 &> /dev/null - _unmount $mnt1 &> /dev/null - [ -b "$loop_dev2" ] && _destroy_loop_device $loop_dev2 - [ -b "$loop_dev1" ] && _destroy_loop_device $loop_dev1 - [ -n "$seq" ] && rm -rf $TEST_DIR/$seq -} - . ./common/filter . ./common/reflink -_require_clone_mount _require_test _require_block_device $TEST_DEV _require_test_reflink _require_cp_reflink _require_loop -clone_filesystem() +_cleanup() { - local dev1=$1 - local dev2=$2 - - _mkfs_dev $dev1 - - _mount $dev1 $mnt1 - $XFS_IO_PROG -fc 'pwrite -S 0x61 0 9000' $mnt1/foo >> $seqres.full - _unmount $mnt1 + cd / + rm -r -f $tmp.* - # device dump of $dev1 to $dev2 - dd if=$dev1 of=$dev2 conv=fsync status=none || _fail "dd failed: $?" + _unmount $mnt2 &> /dev/null + _unmount $mnt1 &> /dev/null + _destroy_cloned_loop_devs "${devs[@]}" 2> /dev/null } -[ -n "$seq" ] && rm -rf $TEST_DIR/$seq -mkdir $TEST_DIR/$seq +add_foo() +{ + local orig_dev="$1" + local temp_mnt="$TEST_DIR/$seq/temp_mnt" + + mkdir -p $temp_mnt + _mount $(_common_dev_mount_options) $(_clone_mount_options) $orig_dev $temp_mnt + $XFS_IO_PROG -fc 'pwrite -S 0x61 0 9000' $temp_mnt/foo >> $seqres.full + $XFS_IO_PROG -c 'fsync' $temp_mnt/foo + _unmount $temp_mnt +} +rm -rf $TEST_DIR/$seq 2>/dev/null +mkdir -p $TEST_DIR/$seq +# Setup base loop device and its clone +devs=() +_create_cloned_loop_devs devs add_foo mnt1=$TEST_DIR/$seq/mnt1 mnt2=$TEST_DIR/$seq/mnt2 -mkdir -p $mnt1 $mnt2 - -loop_file1="$TEST_DIR/$seq/image1" -truncate -s 300m "$loop_file1" -loop_dev1=$(_create_loop_device "$loop_file1") - -loop_file2="$TEST_DIR/$seq/image2" -truncate -s 300m "$loop_file2" -loop_dev2=$(_create_loop_device "$loop_file2") - -clone_filesystem ${loop_dev1} ${loop_dev2} +mkdir -p $mnt1 +mkdir -p $mnt2 # Mounting original device -_mount $(_common_dev_mount_options) $(_clone_mount_options) $loop_dev1 $mnt1 +_mount $(_common_dev_mount_options) $(_clone_mount_options) ${devs[0]} $mnt1 $XFS_IO_PROG -fc 'pwrite -S 0x61 0 9000' $mnt1/foo | _filter_xfs_io - # Mounting cloned device -_mount $(_common_dev_mount_options) $(_clone_mount_options) $loop_dev2 $mnt2 \ +_mount $(_common_dev_mount_options) $(_clone_mount_options) ${devs[1]} $mnt2 \ || _fail "mount of cloned device failed" # cp reflink across two different filesystems must fail _cp_reflink $mnt1/foo $mnt2/bar 2>&1 | _filter_test_dir -# success, all done -status=0 -exit +_exit 0 -- 2.43.0