[lvm-devel] main - tests: add test for merging

Zdenek Kabelac zkabelac at sourceware.org
Mon Mar 15 10:14:25 UTC 2021


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=b4a74d1008e114d5976a235b3a6f793181bc5745
Commit:        b4a74d1008e114d5976a235b3a6f793181bc5745
Parent:        800a93d4ac78e2736c43cb2cf8099cf68b68b341
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Sun Mar 14 22:48:20 2021 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Mar 15 11:13:24 2021 +0100

tests: add test for merging

Check we handle mething of thin snapshot that is itself thick snapshot
origin.
Also use  lvpoll to better wait for finish of merging.
---
 test/shell/snapshot-merge-thin.sh | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/test/shell/snapshot-merge-thin.sh b/test/shell/snapshot-merge-thin.sh
index 26fae904d..447a93167 100644
--- a/test/shell/snapshot-merge-thin.sh
+++ b/test/shell/snapshot-merge-thin.sh
@@ -21,21 +21,50 @@ aux have_thin 1 0 0 || skip
 
 aux prepare_vg 2
 
+lvcreate -T -L1 -V1 -n $lv1 $vg/pool "$dev1"
+lvcreate -s -n $lv2 $vg/$lv1
+
+# Take also thick snapshot of thin snapshot
+lvcreate -s -L1 -n $lv3 $vg/$lv2
+
+sleep 10 < "$DM_DEV_DIR/$vg/$lv1" >/dev/null 2>&1 &
+PID_SLEEP=$!
+
+# initiated merge that cannot proceed, but there is no need to retry
+lvconvert --config 'activation/retry_deactivation=0' --merge $vg/$lv2
+
+kill $PID_SLEEP
+wait
+
+# Remove everything
+lvremove --yes $vg
+
+# No LV left in VG
+check  vg_field $vg  lv_count "0"
+
+
+# Create again pool with thin and thick snapshot
 lvcreate -T -L1 -V1 -n $lv1 $vg/pool "$dev1"
 lvcreate -s -n $lv2 -L2 $vg/$lv1 "$dev2"
 dd if=/dev/zero of="$DM_DEV_DIR/$vg/$lv2" bs=1M count=1 oflag=direct
 
+lvs -a -o+lv_merging,lv_merge_failed $vg
+aux delay_dev "$dev1" 0 100 "$(get first_extent_sector "$dev1"):"
+
 # Initiate background merge
 lvconvert -b --merge $vg/$lv2
 
 # Query status of snapshot immediatelly after start
 # - may hit race of checking already in-progress merge
-lvs -a -o+lv_merging,lv_merge_failed $vg
+#lvs -a -o+lv_merging,lv_merge_failed $vg
+check lv_field $vg/$lv1 lv_merging "merging"
 
-sleep 1
+lvm lvpoll -i 1 --polloperation merge $vg/$lv1
 
 # Here should be everything already merged
-lvs -a -o+lv_merging,lv_merge_failed $vg
+#lvs -a -o+lv_merging,lv_merge_failed $vg
+# check we see thin filled 100%  (1MiB written to 1MiB LV)
+check lv_field $vg/$lv1 data_percent "100.00"
 
 # -real must not exist for  $vg/$lv1
 not dmsetup info ${vg}-${lv1}-real 2>&1 | tee out




More information about the lvm-devel mailing list