summaryrefslogtreecommitdiff
path: root/test/shell/pvcreate-operation.sh
diff options
context:
space:
mode:
Diffstat (limited to 'test/shell/pvcreate-operation.sh')
-rw-r--r--test/shell/pvcreate-operation.sh130
1 files changed, 130 insertions, 0 deletions
diff --git a/test/shell/pvcreate-operation.sh b/test/shell/pvcreate-operation.sh
new file mode 100644
index 0000000..55fff4e
--- /dev/null
+++ b/test/shell/pvcreate-operation.sh
@@ -0,0 +1,130 @@
+# Copyright (C) 2008 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+. lib/test
+
+aux lvmconf 'devices/md_component_detection = 1'
+
+aux prepare_devs 4
+
+for mdatype in 1 2
+do
+# pvcreate (lvm$mdatype) refuses to overwrite an mounted filesystem (bz168330)
+ test ! -d mnt && mkdir mnt
+ if mke2fs "$dev1"; then
+ mount "$dev1" mnt
+ not pvcreate -M$mdatype "$dev1" 2>err
+ grep "Can't open "$dev1" exclusively. Mounted filesystem?" err
+ umount "$dev1"
+ fi
+
+# pvcreate (lvm$mdatype) succeeds when run repeatedly (pv not in a vg) (bz178216)
+ pvcreate -M$mdatype "$dev1"
+ pvcreate -M$mdatype "$dev1"
+ pvremove -f "$dev1"
+
+# pvcreate (lvm$mdatype) fails when PV belongs to VG
+# pvcreate -M$mdatype "$dev1"
+ vgcreate -M$mdatype $vg1 "$dev1"
+ not pvcreate -M$mdatype "$dev1"
+
+ vgremove -f $vg1
+ pvremove -f "$dev1"
+
+# pvcreate (lvm$mdatype) fails when PV1 does and PV2 does not belong to VG
+ pvcreate -M$mdatype "$dev1"
+ pvcreate -M$mdatype "$dev2"
+ vgcreate -M$mdatype $vg1 "$dev1"
+
+# pvcreate a second time on $dev2 and $dev1
+ not pvcreate -M$mdatype "$dev2" "$dev1"
+
+ vgremove -f $vg1
+ pvremove -f "$dev2" "$dev1"
+
+# NOTE: Force pvcreate after test completion to ensure clean device
+#test_expect_success
+# "pvcreate (lvm$mdatype) fails on md component device"
+# 'mdadm -C -l raid0 -n 2 /dev/md0 "$dev1" "$dev2" &&
+# pvcreate -M$mdatype "$dev1";
+# status=$?; echo status=$status; test $status != 0 &&
+# mdadm --stop /dev/md0 &&
+# pvcreate -ff -y -M$mdatype "$dev1" "$dev2" &&
+# pvremove -f "$dev1" "$dev2"'
+done
+
+# pvcreate (lvm2) fails without -ff when PV with metadatacopies=0 belongs to VG
+pvcreate --metadatacopies 0 "$dev1"
+pvcreate --metadatacopies 1 "$dev2"
+vgcreate $vg1 "$dev1" "$dev2"
+not pvcreate "$dev1"
+vgremove -f $vg1
+pvremove -f "$dev2" "$dev1"
+
+# pvcreate (lvm2) succeeds with -ff when PV with metadatacopies=0 belongs to VG
+pvcreate --metadatacopies 0 "$dev1"
+pvcreate --metadatacopies 1 "$dev2"
+vgcreate $vg1 "$dev1" "$dev2"
+pvcreate -ff -y "$dev1"
+vgreduce --removemissing $vg1
+vgremove -ff $vg1
+pvremove -f "$dev2" "$dev1"
+
+for i in 0 1 2 3
+do
+# pvcreate (lvm2) succeeds writing LVM label at sector $i
+ pvcreate --labelsector $i "$dev1"
+ dd if="$dev1" bs=512 skip=$i count=1 2>/dev/null | strings | grep LABELONE >/dev/null
+ pvremove -f "$dev1"
+done
+
+# pvcreate (lvm2) fails writing LVM label at sector 4
+not pvcreate --labelsector 4 "$dev1"
+
+backupfile=$PREFIX.mybackupfile
+uuid1=freddy-fred-fred-fred-fred-fred-freddy
+uuid2=freddy-fred-fred-fred-fred-fred-fredie
+bogusuuid=fred
+
+# pvcreate rejects uuid option with less than 32 characters
+not pvcreate --norestorefile --uuid $bogusuuid "$dev1"
+
+# pvcreate rejects uuid option without restorefile
+not pvcreate --uuid $uuid1 "$dev1"
+
+# pvcreate rejects uuid already in use
+pvcreate --norestorefile --uuid $uuid1 "$dev1"
+not pvcreate --norestorefile --uuid $uuid1 "$dev2"
+
+# pvcreate rejects non-existent file given with restorefile
+not pvcreate --uuid $uuid1 --restorefile $backupfile "$dev1"
+
+# pvcreate rejects restorefile with uuid not found in file
+pvcreate --norestorefile --uuid $uuid1 "$dev1"
+vgcfgbackup -f $backupfile
+not pvcreate --uuid $uuid2 --restorefile $backupfile "$dev2"
+
+# vgcfgrestore of a VG containing a PV with zero PEs (bz #820116)
+# (use case: one PV in a VG used solely to keep metadata)
+size_mb=$(($(blockdev --getsz $dev1) / 2048))
+pvcreate --metadatasize $size_mb $dev1
+vgcreate $vg1 $dev1
+vgcfgbackup -f $backupfile
+vgcfgrestore -f $backupfile $vg1
+vgremove -f $vg1
+pvremove -f $dev1
+
+# pvcreate wipes swap signature when forced
+dd if=/dev/zero of="$dev1" bs=1024 count=64
+mkswap "$dev1"
+blkid -c /dev/null "$dev1" | grep "swap"
+pvcreate -f "$dev1"
+# blkid cannot make up its mind whether not finding anything it knows is a failure or not
+(blkid -c /dev/null "$dev1" || true) | not grep "swap"