2017-07-02 22:38:32 +03:00
#!/usr/bin/env bash
2012-10-08 00:31:33 +04:00
# Copyright (C) 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
2012-10-08 00:31:33 +04:00
2016-02-23 01:13:42 +03:00
SKIP_WITH_LVMLOCKD = 1
2015-10-27 02:45:37 +03:00
SKIP_WITH_LVMPOLLD = 1
2012-10-08 00:31:33 +04:00
2019-02-13 23:21:56 +03:00
RUNDIR = "/run"
test -d " $RUNDIR " || RUNDIR = "/var/run"
PVS_ONLINE_DIR = " $RUNDIR /lvm/pvs_online "
VGS_ONLINE_DIR = " $RUNDIR /lvm/vgs_online "
_clear_online_files( ) {
# wait till udev is finished
aux udev_wait
rm -f " $PVS_ONLINE_DIR " /*
rm -f " $VGS_ONLINE_DIR " /*
}
2015-10-27 02:45:37 +03:00
. lib/inittest
2012-10-08 09:23:13 +04:00
2012-10-08 00:31:33 +04:00
aux prepare_pvs 2
2014-10-07 11:54:47 +04:00
vgcreate $vg1 " $dev1 " " $dev2 "
2012-10-08 00:31:33 +04:00
vgs | grep $vg1
pvscan --cache
vgs | grep $vg1
2014-02-27 02:25:30 +04:00
2016-11-03 19:43:08 +03:00
# Check that an LV cannot be activated by lvchange while VG is exported
lvcreate -n $lv1 -l 4 -a n $vg1
check lv_exists $vg1
vgexport $vg1
fail lvs $vg1
fail lvchange -ay $vg1 /$lv1
vgimport $vg1
check lv_exists $vg1
2017-06-30 12:30:57 +03:00
check lv_field $vg1 /$lv1 lv_active ""
2016-11-03 19:43:08 +03:00
# Check that an LV cannot be activated by pvscan while VG is exported
2019-02-13 23:21:56 +03:00
vgchange -an $vg1
_clear_online_files
2016-11-03 19:43:08 +03:00
vgexport $vg1
2019-02-13 23:21:56 +03:00
pvscan --cache -aay " $dev1 " || true
pvscan --cache -aay " $dev2 " || true
_clear_online_files
2016-11-03 19:43:08 +03:00
vgimport $vg1
check lv_exists $vg1
check lv_field $vg1 /$lv1 lv_active ""
pvscan --cache -aay " $dev1 "
pvscan --cache -aay " $dev2 "
check lv_field $vg1 /$lv1 lv_active "active"
lvchange -an $vg1 /$lv1
2015-03-16 19:00:36 +03:00
# When MDA is ignored on PV, do not read any VG
# metadata from such PV as it may contain old
# metadata which hasn't been updated for some
# time and also since the MDA is marked as ignored,
# it should really be *ignored*!
2019-02-13 23:21:56 +03:00
_clear_online_files
2015-03-16 19:00:36 +03:00
pvchange --metadataignore y " $dev1 "
aux disable_dev " $dev2 "
pvscan --cache
2016-02-29 21:43:07 +03:00
check pv_field " $dev1 " vg_name "[unknown]"
2015-03-16 19:00:36 +03:00
aux enable_dev " $dev2 "
pvscan --cache
check pv_field " $dev1 " vg_name " $vg1 "
2014-02-27 02:25:30 +04:00
vgremove -ff $vg1