diff --git a/test/shell/pvscan-autoactivate.sh b/test/shell/pvscan-autoactivate.sh new file mode 100644 index 000000000..af6f2b2d4 --- /dev/null +++ b/test/shell/pvscan-autoactivate.sh @@ -0,0 +1,143 @@ +#!/usr/bin/env bash + +# 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, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +SKIP_WITH_LVMPOLLD=1 + +. lib/inittest + +aux prepare_pvs 2 + +vgcreate $vg1 "$dev1" "$dev2" +lvcreate -n $lv1 -l 4 -a n $vg1 + +# the first pvscan scans all devs + +rm /run/lvm/pvs_online/* + +pvscan --cache -aay +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# the first pvscan scans all devs even when +# only one device is specified + +rm /run/lvm/pvs_online/* + +pvscan --cache -aay "$dev1" +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# touch foo to disable first-pvscan case, +# then check pvscan with no args scans all + +rm /run/lvm/pvs_online/* +touch /run/lvm/pvs_online/foo + +pvscan --cache -aay +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# touch foo to disable first-pvscan case, +# then check that vg is activated only after +# both devs appear separately + +rm /run/lvm/pvs_online/* +touch /run/lvm/pvs_online/foo + +pvscan --cache -aay "$dev1" +check lv_field $vg1/$lv1 lv_active "" +pvscan --cache -aay "$dev2" +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# touch foo to disable first-pvscan case, +# then check that vg is activated when both +# devs appear together + +rm /run/lvm/pvs_online/* +touch /run/lvm/pvs_online/foo + +pvscan --cache -aay "$dev1" "$dev2" +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# Set up tests where one dev has no metadata + +vgchange -an $vg1 +vgremove -ff $vg1 +pvremove "$dev1" +pvremove "$dev2" +pvcreate --metadatacopies 0 "$dev1" +pvcreate --metadatacopies 1 "$dev2" +vgcreate $vg1 "$dev1" "$dev2" +lvcreate -n $lv1 -l 4 -a n $vg1 + +# touch foo to disable first-pvscan case, +# test case where dev with metadata appears first + +rm /run/lvm/pvs_online/* +touch /run/lvm/pvs_online/foo + +pvscan --cache -aay "$dev2" +check lv_field $vg1/$lv1 lv_active "" +pvscan --cache -aay "$dev1" +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# touch foo to disable first-pvscan case, +# test case where dev without metadata +# appears first which triggers scanning all + +rm /run/lvm/pvs_online/* +touch /run/lvm/pvs_online/foo + +pvscan --cache -aay "$dev1" +check lv_field $vg1/$lv1 lv_active "active" +pvscan --cache -aay "$dev2" +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# dev without metadata is scanned, but +# first-pvscan case scans all devs + +rm /run/lvm/pvs_online/* + +pvscan --cache -aay "$dev1" +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# use the --cache option to record a dev +# is online without the -aay option to +# activate until after they are online + +rm /run/lvm/pvs_online/* +touch /run/lvm/pvs_online/foo + +pvscan --cache "$dev1" +check lv_field $vg1/$lv1 lv_active "" +pvscan --cache "$dev2" +check lv_field $vg1/$lv1 lv_active "" +pvscan --cache -aay +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + +# like previous + +rm /run/lvm/pvs_online/* +touch /run/lvm/pvs_online/foo + +pvscan --cache "$dev1" +check lv_field $vg1/$lv1 lv_active "" +pvscan --cache -aay "$dev2" +check lv_field $vg1/$lv1 lv_active "active" +lvchange -an $vg1 + diff --git a/test/shell/lvmetad-pvscan-autoactivation-polling.sh b/test/shell/pvscan-autoactivation-polling.sh similarity index 98% rename from test/shell/lvmetad-pvscan-autoactivation-polling.sh rename to test/shell/pvscan-autoactivation-polling.sh index 46c454b7c..53adf5187 100644 --- a/test/shell/lvmetad-pvscan-autoactivation-polling.sh +++ b/test/shell/pvscan-autoactivation-polling.sh @@ -11,7 +11,6 @@ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA SKIP_WITH_LVMLOCKD=1 -SKIP_WITHOUT_LVMETAD=1 . lib/inittest diff --git a/test/shell/lvmetad-pvscan-cache.sh b/test/shell/pvscan-cache.sh similarity index 98% rename from test/shell/lvmetad-pvscan-cache.sh rename to test/shell/pvscan-cache.sh index 367220e77..c272c6cee 100644 --- a/test/shell/lvmetad-pvscan-cache.sh +++ b/test/shell/pvscan-cache.sh @@ -11,7 +11,6 @@ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA SKIP_WITH_LVMLOCKD=1 -SKIP_WITHOUT_LVMETAD=1 SKIP_WITH_LVMPOLLD=1 . lib/inittest diff --git a/test/shell/lvmetad-pvscan-nomda-bg.sh b/test/shell/pvscan-nomda-bg.sh similarity index 56% rename from test/shell/lvmetad-pvscan-nomda-bg.sh rename to test/shell/pvscan-nomda-bg.sh index 351e44613..f8ecc080a 100644 --- a/test/shell/lvmetad-pvscan-nomda-bg.sh +++ b/test/shell/pvscan-nomda-bg.sh @@ -11,14 +11,10 @@ # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA SKIP_WITH_LVMLOCKD=1 -SKIP_WITHOUT_LVMETAD=1 SKIP_WITH_LVMPOLLD=1 . lib/inittest -kill "$(< LOCAL_LVMETAD)" -rm LOCAL_LVMETAD - aux prepare_devs 2 pvcreate --metadatacopies 0 "$dev1" @@ -26,34 +22,20 @@ pvcreate --metadatacopies 1 "$dev2" vgcreate $vg1 "$dev1" "$dev2" lvcreate -n foo -l 1 -an --zero n $vg1 -# start lvmetad but make sure it doesn't know about $dev1 or $dev2 -aux disable_dev "$dev1" "$dev2" -aux prepare_lvmetad -lvs -mv LOCAL_LVMETAD XXX -aux enable_dev "$dev2" "$dev1" -mv XXX LOCAL_LVMETAD - -aux lvmconf 'global/use_lvmetad = 0' check inactive $vg1 foo -aux lvmconf 'global/use_lvmetad = 1' + +# create a file in pvs_online to disable the pvscan init +# case which scans everything when the first dev appears. +mkdir /run/lvm/pvs_online/ +touch /run/lvm/pvs_online/foo pvscan --cache --background "$dev2" -aay -aux lvmconf 'global/use_lvmetad = 0' -# FIXME: inconclusive. may be a timing issue check inactive $vg1 foo -aux lvmconf 'global/use_lvmetad = 1' pvscan --cache --background "$dev1" -aay -aux lvmconf 'global/use_lvmetad = 0' -i=100 -while ! check active $vg1 foo; do - test $i -lt 0 && fail "Failed to autoactivate" - sleep .1 - i=$((i-1)) -done -aux lvmconf 'global/use_lvmetad = 1' +check active $vg1 foo +rm /run/lvm/pvs_online/foo vgremove -ff $vg1