mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
fa2a728a39
Lift all the snapshot utilities (merge, split, combine) out of the monolithic lvconvert implementation, using the command definitions. The old code associated with these commands is now unused and will be removed separately.
75 lines
1.8 KiB
Bash
75 lines
1.8 KiB
Bash
#!/bin/sh
|
|
# Copyright (C) 2016 Red Hat, Inc. All rights reserved.
|
|
#
|
|
# This copyrighted material is made available to anyone wishing to use,
|
|
# modify, copy, or redistribute it subject to the terms and conditions
|
|
# of the GNU General Public License v.2.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software Foundation,
|
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
SKIP_WITH_LVMLOCKD=1
|
|
SKIP_WITHOUT_LVMETAD=1
|
|
|
|
. lib/inittest
|
|
|
|
# test if snapshot-merge target is available
|
|
aux target_at_least dm-snapshot-merge 1 0 0 || skip
|
|
|
|
which mkfs.ext3 || skip
|
|
|
|
lvdev_() {
|
|
echo "$DM_DEV_DIR/$1/$2"
|
|
}
|
|
|
|
snap_lv_name_() {
|
|
echo ${1}_snap
|
|
}
|
|
|
|
setup_merge_() {
|
|
local VG_NAME=$1
|
|
local LV_NAME=$2
|
|
local NUM_EXTRA_SNAPS=${3:-0}
|
|
local BASE_SNAP_LV_NAME
|
|
|
|
BASE_SNAP_LV_NAME=$(snap_lv_name_ $LV_NAME)
|
|
|
|
lvcreate -aey -n $LV_NAME -l 50%FREE $VG_NAME
|
|
lvs
|
|
lvcreate -s -n $BASE_SNAP_LV_NAME -l 20%FREE ${VG_NAME}/${LV_NAME}
|
|
mkfs.ext3 "$(lvdev_ $VG_NAME $LV_NAME)"
|
|
|
|
if [ $NUM_EXTRA_SNAPS -gt 0 ]; then
|
|
for i in $(seq 1 $NUM_EXTRA_SNAPS); do
|
|
lvcreate -s -n ${BASE_SNAP_LV_NAME}_${i} -l 20%ORIGIN ${VG_NAME}/${LV_NAME}
|
|
done
|
|
fi
|
|
}
|
|
|
|
aux prepare_pvs 1 50
|
|
|
|
vgcreate $vg1 "$dev1"
|
|
mkdir test_mnt
|
|
|
|
setup_merge_ $vg1 $lv1
|
|
mount "$(lvdev_ $vg1 $lv1)" test_mnt
|
|
lvconvert --mergesnapshot $vg1/$(snap_lv_name_ $lv1)
|
|
umount test_mnt
|
|
vgchange -an $vg1
|
|
|
|
# check snapshot get removed on autoactivation
|
|
pvscan --cache -aay "$dev1"
|
|
|
|
check active $vg1 $lv1
|
|
i=100
|
|
while ! check lv_not_exists $vg1/$(snap_lv_name_ $lv1); do
|
|
test $i -lt 0 && fail "Background polling failed to remove merged snapshot LV"
|
|
sleep .1
|
|
i=$((i-1))
|
|
done
|
|
|
|
# TODO: add similar simple tests for other interrupted/unfinished polling operation
|
|
|
|
vgremove -ff $vg1
|