1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00
lvm2/test/shell/pvscan-autoactivation-polling.sh

77 lines
1.8 KiB
Bash
Raw Normal View History

2017-07-02 22:38:32 +03:00
#!/usr/bin/env bash
# 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
. 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
aux lvmconf "global/event_activation = 1"
vgcreate $vg1 "$dev1"
mkdir test_mnt
setup_merge_ $vg1 $lv1
mount "$(lvdev_ $vg1 $lv1)" test_mnt
2017-07-10 11:40:09 +03:00
lvconvert --merge "$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
2017-07-10 11:40:09 +03:00
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