[PATCH v3 1/9] fstests: add _loop_image_create_clone() helper
Anand Jain <[email protected]>
| Newsgroups | org.kernel.vger.fstests,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-ext4,org.kernel.vger.linux-xfs |
|---|---|
| Message-ID | <05ace38b54ea49f462bcd6274c4a2528192e6949.1777281778.git.asj@kernel.org> |
Introduce _loop_image_create_clone() and _loop_image_destroy() to mkfs an image file and clone it to another image file, and attach a loop device to them. And its destroy part. Signed-off-by: Anand Jain <[email protected]> --- common/rc | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/common/rc b/common/rc index 9632b211b58f..0e7b7eb1d98f 100644 --- a/common/rc +++ b/common/rc @@ -1503,6 +1503,50 @@ _scratch_resvblks() esac } +_loop_image_create_clone() +{ + local -n _ret=$1 + local pre_clone_tune_func=$2 + local img_file=$TEST_DIR/${seq}.img + local img_file_clone=$TEST_DIR/${seq}_clone.img + local size=$(_small_fs_size_mb 128) # Smallest possible + local loop_devs + + size=$((size * 1024 * 1024)) + $XFS_IO_PROG -f -c "truncate $size" $img_file + + loop_devs=$(_create_loop_device $img_file) + _ret=($loop_devs) + + case $FSTYP in + xfs) + _mkfs_dev "-s size=4096" $img_file + ;; + btrfs) + _mkfs_dev $img_file + ;; + *) + _mkfs_dev $img_file + ;; + esac + + ($pre_clone_tune_func) + + cp $img_file $img_file_clone + + loop_devs="$loop_devs $(_create_loop_device $img_file_clone)" + + _ret=($loop_devs) +} + +_loop_image_destroy() +{ + for d in "$@"; do + local f=$(losetup --noheadings --output BACK-FILE $d) + _destroy_loop_device "$d" + [ -n "$f" ] && rm -f "$f" + done +} # Repair scratch filesystem. Returns 0 if the FS is good to go (either no # errors found or errors were fixed) and nonzero otherwise; also spits out -- 2.43.0