2015-08-21 23:06:28 +03:00
#!/bin/sh
# Copyright (C) 2008-2012 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,
2016-01-21 13:49:46 +03:00
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2015-08-21 23:06:28 +03:00
test_description = 'Check lvmlockd lock_args for different LV types'
. lib/inittest
2015-08-22 01:00:21 +03:00
[ -z " $LVM_TEST_LVMLOCKD " ] && skip;
2015-08-21 23:06:28 +03:00
if test -n " $LVM_TEST_LOCK_TYPE_SANLOCK " ; then
LOCKARGS1 = "1.0.0:70254592"
LOCKARGS2 = "1.0.0:71303168"
LOCKARGS3 = "1.0.0:72351744"
fi
if test -n " $LVM_TEST_LOCK_TYPE_DLM " ; then
LOCKARGS1 = "dlm"
LOCKARGS2 = "dlm"
LOCKARGS3 = "dlm"
fi
2016-01-15 01:12:46 +03:00
if test -n " $LVM_TEST_LVMLOCKD_TEST " ; then
LOCKARGS1 = "dlm"
LOCKARGS2 = "dlm"
LOCKARGS3 = "dlm"
fi
2015-08-21 23:06:28 +03:00
aux prepare_devs 5
vgcreate --shared $vg " $dev1 " " $dev2 " " $dev3 " " $dev4 " " $dev5 "
#
# thin pool, thin lv, thin snap
#
lvcreate -L 8M -n pool1 $vg
check lva_field $vg /pool1 lockargs $LOCKARGS1
lvcreate -L 8M -n pool1_meta $vg
check lva_field $vg /pool1_meta lockargs $LOCKARGS2
lvconvert -y --type thin-pool --poolmetadata $vg /pool1_meta $vg /pool1
check lva_field $vg /pool1 lockargs $LOCKARGS3
check lva_field $vg /pool1_tdata lockargs ""
check lva_field $vg /pool1_tmeta lockargs ""
lvcreate -n thin1 -V 1G --thinpool $vg /pool1
check lva_field $vg /thin1 lockargs ""
lvcreate -s -n snap1 $vg /thin1
check lva_field $vg /snap1 lockargs ""
lvchange -ay -K $vg /snap1
lvchange -an $vg /snap1
lvchange -an $vg /thin1
lvchange -an $vg /pool1
lvremove $vg /snap1
lvremove $vg /thin1
lvremove $vg /pool1
# the first sanlock lock should be found and reused
lvcreate -L 8M -n lv1 $vg
check lva_field $vg /lv1 lockargs $LOCKARGS1
lvchange -an $vg /lv1
lvremove $vg /lv1
#
# with automatic metadata lv
#
lvcreate -L 8M -n pool2 $vg
check lva_field $vg /pool2 lockargs $LOCKARGS1
lvconvert -y --type thin-pool $vg /pool2
check lva_field $vg /pool2 lockargs $LOCKARGS2
check lva_field $vg /pool2_tdata lockargs ""
check lva_field $vg /pool2_tmeta lockargs ""
lvcreate -n thin2 -V 1G --thinpool $vg /pool2
check lva_field $vg /thin2 lockargs ""
lvchange -an $vg /thin2
lvchange -an $vg /pool2
lvremove $vg /thin2
lvremove $vg /pool2
#
# cache pool, cache lv
#
lvcreate -L 8M -n cache1 $vg
check lva_field $vg /cache1 lockargs $LOCKARGS1
lvcreate -L 8M -n cache1_meta $vg
check lva_field $vg /cache1_meta lockargs $LOCKARGS2
lvconvert -y --type cache-pool --poolmetadata $vg /cache1_meta $vg /cache1
check lva_field $vg /cache1 lockargs ""
check lva_field $vg /cache1_cdata lockargs ""
check lva_field $vg /cache1_cmeta lockargs ""
lvcreate -n lv1 -L 8M $vg
check lva_field $vg /lv1 lockargs $LOCKARGS1
lvconvert -y --type cache --cachepool $vg /cache1 $vg /lv1
check lva_field $vg /lv1 lockargs $LOCKARGS1
check lva_field $vg /cache1 lockargs ""
check lva_field $vg /cache1_cdata lockargs ""
check lva_field $vg /cache1_cmeta lockargs ""
lvconvert --splitcache $vg /lv1
check lva_field $vg /lv1 lockargs $LOCKARGS1
check lva_field $vg /cache1 lockargs ""
check lva_field $vg /cache1_cdata lockargs ""
check lva_field $vg /cache1_cmeta lockargs ""
lvchange -an $vg /cache1
lvchange -an $vg /lv1
lvremove $vg /cache1
lvremove $vg /lv1
#
# cow snap
#
lvcreate -n lv2 -L 8M $vg
check lva_field $vg /lv2 lockargs $LOCKARGS1
lvcreate -s -n lv2snap -L 8M $vg /lv2
check lva_field $vg /lv2 lockargs $LOCKARGS1
check lva_field $vg /lv2snap lockargs ""
lvchange -y -an $vg /lv2
lvremove $vg /lv2snap
lvremove $vg /lv2
#
# mirror
#
lvcreate --type mirror -m 1 -n lv3 -L 8M $vg
check lva_field $vg /lv3 lockargs $LOCKARGS1
lvchange -an $vg /lv3
lvremove $vg /lv3
#
# raid1
#
lvcreate --type raid1 -m 1 -n lv4 -L 8M $vg
check lva_field $vg /lv4 lockargs $LOCKARGS1
lvchange -an $vg /lv4
lvremove $vg /lv4
vgremove $vg