mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
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.
This commit is contained in:
parent
800a93d4ac
commit
b4a74d1008
@ -21,21 +21,50 @@ aux have_thin 1 0 0 || skip
|
|||||||
|
|
||||||
aux prepare_vg 2
|
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 -T -L1 -V1 -n $lv1 $vg/pool "$dev1"
|
||||||
lvcreate -s -n $lv2 -L2 $vg/$lv1 "$dev2"
|
lvcreate -s -n $lv2 -L2 $vg/$lv1 "$dev2"
|
||||||
dd if=/dev/zero of="$DM_DEV_DIR/$vg/$lv2" bs=1M count=1 oflag=direct
|
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
|
# Initiate background merge
|
||||||
lvconvert -b --merge $vg/$lv2
|
lvconvert -b --merge $vg/$lv2
|
||||||
|
|
||||||
# Query status of snapshot immediatelly after start
|
# Query status of snapshot immediatelly after start
|
||||||
# - may hit race of checking already in-progress merge
|
# - 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
|
# 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
|
# -real must not exist for $vg/$lv1
|
||||||
not dmsetup info ${vg}-${lv1}-real 2>&1 | tee out
|
not dmsetup info ${vg}-${lv1}-real 2>&1 | tee out
|
||||||
|
Loading…
Reference in New Issue
Block a user