mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
7d419b374a
Reduce warnings in tests.
422 lines
14 KiB
Bash
422 lines
14 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (C) 2008-2013,2018 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
|
|
SKIP_WITH_LVMLOCKD=1
|
|
|
|
|
|
. lib/inittest
|
|
|
|
SIZE=34
|
|
|
|
_prepare_vg() {
|
|
rm -f meta debug.log_DEBUG*
|
|
for i in "$@" ; do
|
|
dd if=/dev/zero of="$i" bs=1M count=1 oflag=direct
|
|
done
|
|
vgcreate $vg "$@"
|
|
}
|
|
|
|
_clear_devs() {
|
|
rm -f meta debug.log_DEBUG*
|
|
for i in "$@" ; do
|
|
dd if=/dev/zero of="$i" bs=1M count=$SIZE oflag=direct
|
|
done
|
|
}
|
|
|
|
_prepare_vg_with_copy() {
|
|
_clear_devs "$@"
|
|
vgcreate --pvmetadatacopies 2 $vg "$@"
|
|
}
|
|
|
|
aux prepare_devs 2 $SIZE
|
|
get_devs
|
|
|
|
# One PV, one mda, pv_header zeroed
|
|
_prepare_vg "$dev1"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, one mda, mda_header zeroed
|
|
_prepare_vg "$dev1"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=1 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, one mda, pv_header and mda_header zeroed
|
|
_prepare_vg "$dev1"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=1 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, one mda, metadata zeroed, use backup
|
|
_prepare_vg "$dev1"
|
|
vgcfgbackup
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2 seek=9
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata_search "$dev1" || true
|
|
pvck --repair -y -f etc/backup/$vg "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, one mda, mda_header and metadata zeroed, use backup
|
|
_prepare_vg "$dev1"
|
|
vgcfgbackup
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata_search "$dev1" || true
|
|
pvck --repair -y -f etc/backup/$vg "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, one mda, pv_header, mda_header and metadata zeroed, use backup
|
|
_prepare_vg "$dev1"
|
|
vgcfgbackup
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata_search "$dev1" || true
|
|
pvck --repair -y -f etc/backup/$vg "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, two mdas, pv_header zeroed
|
|
_prepare_vg_with_copy "$dev1"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, two mdas, mda_header1 zeroed
|
|
_prepare_vg_with_copy "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
dd if=/dev/zero of="$dev1" bs=512 count=1 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata_search --settings mda_num=1 "$dev1" || true
|
|
pvck --dump metadata_search --settings mda_num=2 "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=1 "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=2 "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=2 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, two mdas, pv_header and mda_header1 zeroed
|
|
_prepare_vg_with_copy "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=1 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=2 "$dev1" || true
|
|
pvck --dump metadata_search "$dev1" || true
|
|
pvck --dump metadata_search --settings mda_num=2 "$dev1" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, two mdas, metadata1 zeroed, use mda2
|
|
_prepare_vg_with_copy "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2 seek=9
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=2 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, two mdas, mda_header1 and metadata1 zeroed, use mda2
|
|
_prepare_vg_with_copy "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=2 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, two mdas, pv_header, mda_header1 and metadata1 zeroed, use mda2
|
|
_prepare_vg_with_copy "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=2 "$dev1" || true
|
|
pvck --dump metadata_search "$dev1" || true
|
|
pvck --dump metadata_search --settings mda_num=2 "$dev1" || true
|
|
pvck --dump metadata_search --settings "mda_num=2 seqno=1" -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, two mdas, pv_header, both mda_header, and both metadata zeroed, use backup
|
|
# only writes mda1 since there's no evidence that mda2 existed
|
|
_prepare_vg_with_copy "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgcfgbackup
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=67584
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=2 "$dev1" || true
|
|
pvck --dump metadata_search "$dev1" || true
|
|
pvck --dump metadata_search --settings mda_num=2 "$dev1" || true
|
|
pvck --repair -y -f etc/backup/$vg "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, two mdas, pv_header, both mda_header, and both metadata zeroed, use backup
|
|
# writes mda1 and also mda2 because of the mda2 settings passed to repair
|
|
_prepare_vg_with_copy "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgcfgbackup
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=67584
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata "$dev1" || true
|
|
pvck --dump metadata --settings mda_num=2 "$dev1" || true
|
|
pvck --dump metadata_search "$dev1" || true
|
|
pvck --dump metadata_search --settings mda_num=2 "$dev1" || true
|
|
pvck --repair --settings "mda2_offset=34603008 mda2_size=1048576" -y -f etc/backup/$vg "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda each, pv_header and mda_header zeroed on each
|
|
_prepare_vg "$dev1" "$dev2"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev2" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=1 seek=8
|
|
dd if=/dev/zero of="$dev2" bs=512 count=1 seek=8
|
|
pvck --dump headers "$dev1"
|
|
pvck --dump headers "$dev2"
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --repair -y -f meta "$dev2"
|
|
pvck --dump headers "$dev1"
|
|
pvck --dump headers "$dev2"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda each, metadata zeroed on each, use backup
|
|
_prepare_vg "$dev1" "$dev2"
|
|
vgcfgbackup
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2 seek=9
|
|
dd if=/dev/zero of="$dev2" bs=512 count=2 seek=9
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --repair -y -f etc/backup/$vg "$dev1"
|
|
pvck --repair -y -f etc/backup/$vg "$dev2"
|
|
pvck --dump headers "$dev1"
|
|
pvck --dump headers "$dev2"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda each, pv_header, mda_header and metadata zeroed on each, use backup
|
|
_prepare_vg "$dev1" "$dev2"
|
|
vgcfgbackup
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev2" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
dd if=/dev/zero of="$dev2" bs=512 count=3 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --repair -y -f etc/backup/$vg "$dev1"
|
|
pvck --repair -y -f etc/backup/$vg "$dev2"
|
|
pvck --dump headers "$dev1"
|
|
pvck --dump headers "$dev2"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda each, pv_header and mda_header zeroed on first
|
|
_prepare_vg "$dev1" "$dev2"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=1 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --dump metadata -f meta "$dev2"
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda each, metadata zeroed on first
|
|
_prepare_vg "$dev1" "$dev2"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2 seek=9
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --dump metadata -f meta "$dev2"
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda each, pv_header, mda_header and metadata zeroed on first
|
|
_prepare_vg "$dev1" "$dev2"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --dump metadata -f meta "$dev2"
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda on first, no mda on second, zero header on first
|
|
_clear_devs "$dev1" "$dev2"
|
|
pvcreate "$dev1"
|
|
pvcreate --pvmetadatacopies 0 "$dev2"
|
|
vgcreate $vg "$dev1" "$dev2"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --dump headers "$dev1"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda on first, no mda on second, zero headers on both
|
|
_clear_devs "$dev1" "$dev2"
|
|
pvcreate "$dev1"
|
|
pvcreate --pvmetadatacopies 0 "$dev2"
|
|
vgcreate $vg "$dev1" "$dev2"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev2" bs=512 count=2
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
pvck --repair -y --settings "mda_offset=0 mda_size=0" -f meta "$dev2"
|
|
pvck --dump headers "$dev1"
|
|
pvck --dump headers "$dev2"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda on first, no mda on second, zero all on first
|
|
_clear_devs "$dev1" "$dev2"
|
|
pvcreate "$dev1"
|
|
pvcreate --pvmetadatacopies 0 "$dev2"
|
|
vgcreate $vg "$dev1" "$dev2"
|
|
vgcfgbackup
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=3 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --repair -y -f etc/backup/$vg "$dev1"
|
|
pvck --repair -y --settings "mda_offset=0 mda_size=0" -f etc/backup/$vg "$dev2"
|
|
pvck --dump headers "$dev1"
|
|
pvck --dump headers "$dev2"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, two mda on each, pv_header and mda_header1 zeroed on both
|
|
_clear_devs "$dev1" "$dev2"
|
|
pvcreate --pvmetadatacopies 2 "$dev1"
|
|
pvcreate --pvmetadatacopies 2 "$dev2"
|
|
vgcreate $vg "$dev1" "$dev2"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev2" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=1 seek=8
|
|
dd if=/dev/zero of="$dev2" bs=512 count=1 seek=8
|
|
pvck --dump headers "$dev1"
|
|
pvck --dump headers "$dev2"
|
|
pvck --dump metadata_search --settings "mda_num=2 seqno=1" -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
rm meta
|
|
pvck --dump metadata_search --settings "mda_num=2 seqno=1" -f meta "$dev2" || true
|
|
pvck --repair -y -f meta "$dev2"
|
|
rm meta
|
|
pvck --dump headers "$dev1"
|
|
pvck --dump headers "$dev2"
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# Two PV, one mda each, pv_header and mda_header zeroed on each,
|
|
# non-standard data_offset/mda_size on first
|
|
_clear_devs "$dev1" "$dev2"
|
|
pvcreate --metadatasize 2048k --dataalignment 128k "$dev1"
|
|
pvcreate "$dev2"
|
|
vgcreate $vg "$dev1" "$dev2"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
dd if=/dev/zero of="$dev1" bs=512 count=1 seek=8
|
|
dd if=/dev/zero of="$dev2" bs=512 count=2
|
|
dd if=/dev/zero of="$dev2" bs=512 count=1 seek=8
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
pvck --repair -y -f meta "$dev1"
|
|
rm meta
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev2" || true
|
|
pvck --repair -y -f meta "$dev2"
|
|
rm meta
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump headers "$dev2" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
# One PV, one mda, pv_header zeroed, unmatching dev name requires specified uuid
|
|
_clear_devs "$dev1" "$dev2"
|
|
vgcreate $vg "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
UUID1=$(pvck --dump headers "$dev1" | grep pv_header.pv_uuid | awk '{print $2}')
|
|
echo "$UUID1"
|
|
dd if=/dev/zero of="$dev1" bs=512 count=2
|
|
pvck --dump headers "$dev1" || true
|
|
pvck --dump metadata_search --settings seqno=1 -f meta "$dev1" || true
|
|
sed 's/\/dev\/mapper\/LVMTEST/\/dev\/mapper\/BADTEST/' meta > meta.bad
|
|
grep device meta
|
|
grep device meta.bad
|
|
not pvck --repair -y -f meta.bad "$dev1"
|
|
pvck --repair -y -f meta.bad --settings pv_uuid=$UUID1 "$dev1"
|
|
pvck --dump headers "$dev1" || true
|
|
vgs $vg
|
|
lvcreate -l1 -an $vg
|
|
|
|
vgremove -f $vg
|