From 1a67bfe396610c79d7467faf4abe5da3f831bda2 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sat, 14 Oct 2023 21:26:39 +0200 Subject: [PATCH] tests: extend the usability for older systems Extend the test a bit futher so we can keep logic of resize working similarly well for older and newer systems. Test uses new 'aux have_fsinfo'function to regnize compiled version of lvm. --- test/shell/lvresize-fs-crypt.sh | 6 ++++-- test/shell/lvresize-fs.sh | 31 +++++++++++++++++++++++++++---- test/shell/lvresize-xfs.sh | 6 ++++-- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/test/shell/lvresize-fs-crypt.sh b/test/shell/lvresize-fs-crypt.sh index 302fd5fc9..2b2f617d6 100644 --- a/test/shell/lvresize-fs-crypt.sh +++ b/test/shell/lvresize-fs-crypt.sh @@ -15,10 +15,12 @@ SKIP_WITH_LVMPOLLD=1 . lib/inittest -aux prepare_vg 3 256 - which mkfs.xfs || skip +aux have_fsinfo || skip "Test needs --fs checksize support" + +aux prepare_vg 3 256 + # Tests require a libblkid version that shows FSLASTBLOCK lvcreate -n $lv1 -L 300 $vg mkfs.xfs -f "$DM_DEV_DIR/$vg/$lv1" diff --git a/test/shell/lvresize-fs.sh b/test/shell/lvresize-fs.sh index d2c4ac707..b95149692 100644 --- a/test/shell/lvresize-fs.sh +++ b/test/shell/lvresize-fs.sh @@ -21,14 +21,18 @@ which mkfs.ext4 || skip which resize2fs || skip # -# Workaroudn for kernel bug fixed with: +# Blkid is not able to detected 'running' filesystem after resize +# freeeing and unfreezing stores fs metadata on disk +# +# Workaround for kernel bug fixed with: # a408f33e895e455f16cf964cb5cd4979b658db7b # refreshing DM device - using fsfreeze with suspend # workaround_() { - blkid -p "$DM_DEV_DIR/$vg/$lv" >/dev/null || { - dmsetup suspend $vg-$lv - dmsetup resume $vg-$lv + local vol=${1-$lv} + blkid -p "$DM_DEV_DIR/$vg/$vol" >/dev/null || { + dmsetup suspend $vg-$vol + dmsetup resume $vg-$vol } } @@ -90,6 +94,11 @@ lvreduce -L-10M $vg/$lv check lv_field $vg/$lv lv_size "40.00m" lvchange -an $vg/$lv +HAVE_FSINFO=1 +aux have_fsinfo || HAVE_FSINFO= + +if [ -n "$HAVE_FSINFO" ]; then + # lvreduce, no fs, inactive, no --fs setting is same as --fs checksize not lvreduce -L-10M $vg/$lv lvreduce --fs checksize -L-10M $vg/$lv @@ -104,6 +113,8 @@ lvchange -ay $vg/$lv not lvreduce -L-10M --fs resize $vg/$lv check lv_field $vg/$lv lv_size "20.00m" +fi # HAVE_FSINFO + lvremove -f $vg/$lv @@ -146,6 +157,8 @@ diff df1 df2 # keep mounted fs # lvextend, ext4, active, mounted, --fs resize +workaround_ + lvextend --fs resize -L+10M $vg/$lv check lv_field $vg/$lv lv_size "50.00m" df --output=size "$mount_dir" |tee df2 @@ -162,6 +175,8 @@ df --output=size "$mount_dir" |tee df2 not diff df1 df2 # keep mounted fs +if [ -n "$HAVE_FSINFO" ]; then + workaround_ # lvextend, ext4, active, mounted, --fs resize --fsmode manage (same as --fs resize) @@ -193,6 +208,8 @@ df --output=size "$mount_dir" |tee df2 not diff df1 df2 # keep mounted fs +fi # HAVE_FSINFO + # lvextend|lvreduce, ext4, active, mounted, --fs resize, renamed LV lvrename $vg/$lv $vg/$lv2 not lvextend --fs resize -L+32M $vg/$lv2 @@ -245,11 +262,17 @@ umount "$mount_dir" umount "$mount_dir_2" mount "$DM_DEV_DIR/$vg/$lv3" "$mount_dir" lvextend -r -L+8M $vg/$lv3 + +workaround_ $lv3 + lvreduce -r -y -L-8M $vg/$lv3 umount "$mount_dir" lvremove -f $vg/$lv3 +# Following test require --fs checksize being compiled in +test -z "$HAVE_FSINFO" && exit 0 + ##################################### # # Now let do some unmounted tests diff --git a/test/shell/lvresize-xfs.sh b/test/shell/lvresize-xfs.sh index 7f3193941..da204dac6 100644 --- a/test/shell/lvresize-xfs.sh +++ b/test/shell/lvresize-xfs.sh @@ -15,11 +15,13 @@ SKIP_WITH_LVMPOLLD=1 . lib/inittest -aux prepare_vg 1 500 - which mkfs.xfs || skip which xfs_growfs || skip +aux have_fsinfo || skip "Test needs --fs checksize support" + +aux prepare_vg 1 500 + mount_dir="mnt_lvresize_fs" mkdir -p "$mount_dir"