2012-03-16 17:00:05 +04:00
#!/bin/sh
2014-03-31 00:45:02 +04:00
# Copyright (C) 2010-2014 Red Hat, Inc. All rights reserved.
2011-04-21 21:03:38 +04:00
#
# 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
2011-04-21 21:03:38 +04:00
2016-02-23 01:13:42 +03:00
SKIP_WITH_LVMLOCKD = 1
2015-10-27 17:10:06 +03:00
SKIP_WITH_LVMPOLLD = 1
2011-04-21 21:03:38 +04:00
2015-10-27 17:10:06 +03:00
. lib/inittest
2015-05-09 02:59:18 +03:00
2011-04-21 21:03:38 +04:00
aux prepare_devs 2
2013-05-31 23:11:51 +04:00
vgcreate --metadatasize 128k $vg1 " $dev1 "
2011-04-21 21:03:38 +04:00
lvcreate -l100%FREE -n $lv1 $vg1
2014-03-24 12:58:29 +04:00
# Test plain vgexport vgimport tools
2014-03-31 00:45:02 +04:00
# Argument is needed
invalid vgexport
invalid vgimport
# Cannot combine -a and VG name
invalid vgexport -a $vg
invalid vgimport -a $vg1
# Cannot export unknonw VG
fail vgexport ${ vg1 } -non
fail vgimport ${ vg1 } -non
# Cannot export VG with active volumes
fail vgexport $vg1
2014-03-24 12:58:29 +04:00
vgchange -an $vg1
vgexport $vg1
2014-03-31 00:45:02 +04:00
# Already exported
fail vgexport $vg1
2014-03-24 12:58:29 +04:00
vgimport $vg1
2014-03-31 00:45:02 +04:00
# Already imported
fail vgimport $vg1
2014-03-24 12:58:29 +04:00
vgchange -ay $vg1
2011-04-21 21:03:38 +04:00
# Clone the LUN
2012-03-16 17:00:05 +04:00
dd if = " $dev1 " of = " $dev2 " bs = 256K count = 1
aux notify_lvmetad " $dev2 "
2011-04-21 21:03:38 +04:00
# Verify pvs works on each device to give us vgname
2014-03-20 02:32:25 +04:00
aux hide_dev " $dev2 "
2012-03-16 17:00:05 +04:00
check pv_field " $dev1 " vg_name $vg1
2014-03-20 02:32:25 +04:00
aux unhide_dev " $dev2 "
2013-05-27 16:48:45 +04:00
2014-03-20 02:32:25 +04:00
aux hide_dev " $dev1 "
2012-03-16 17:00:05 +04:00
check pv_field " $dev2 " vg_name $vg1
2014-03-20 02:32:25 +04:00
aux unhide_dev " $dev1 "
2011-04-21 21:03:38 +04:00
# Import the cloned PV to a new VG
2012-03-16 17:00:05 +04:00
vgimportclone --basevgname $vg2 " $dev2 "
2011-04-21 21:03:38 +04:00
2012-02-23 17:11:07 +04:00
# We need to re-scan *both* $dev1 and $dev2 since a PV, as far as lvmetad is
# concerned, can only live on a single device. With the last pvscan, we told it
# that PV from $dev1 now lives on $dev2, but in fact this is not true anymore,
# since we wrote a different PV over $dev2.
2013-04-23 16:36:27 +04:00
rm -f $TESTDIR /etc/.cache
2012-03-16 17:00:05 +04:00
aux notify_lvmetad " $dev2 "
aux notify_lvmetad " $dev1 "
2012-02-23 17:11:07 +04:00
2011-04-21 21:03:38 +04:00
# Verify we can activate / deactivate the LV from both VGs
2011-09-07 12:31:16 +04:00
lvchange -ay $vg1 /$lv1 $vg2 /$lv1
vgchange -an $vg1 $vg2
2014-02-27 02:25:30 +04:00
vgremove -ff $vg1 $vg2
2015-10-12 13:54:35 +03:00
# Verify that if we provide the -n|--basevgname,
# the number suffix is not added unnecessarily.
vgcreate --metadatasize 128k A${ vg1 } B " $dev1 "
# vg1B is not the same as Avg1B - we don't need number suffix
dd if = " $dev1 " of = " $dev2 " bs = 256K count = 1
aux notify_lvmetad " $dev2 "
vgimportclone -n ${ vg1 } B " $dev2 "
check pv_field " $dev2 " vg_name ${ vg1 } B
# Avg1 is not the same as Avg1B - we don't need number suffix
dd if = " $dev1 " of = " $dev2 " bs = 256K count = 1
aux notify_lvmetad " $dev2 "
vgimportclone -n A${ vg1 } " $dev2 "
check pv_field " $dev2 " vg_name A${ vg1 }
# Avg1B is the same as Avg1B - we need to add the number suffix
dd if = " $dev1 " of = " $dev2 " bs = 256K count = 1
aux notify_lvmetad " $dev2 "
vgimportclone -n A${ vg1 } B " $dev2 "
aux vgs
check pv_field " $dev2 " vg_name A${ vg1 } B1
vgremove -ff A${ vg1 } B A${ vg1 } B1