mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
3c49a2e43c
When using --all, if one VG is skipped, continue adding other VGs, and do not return an error from the command if some VGs are added. (A VG is skipped if it's missing PVs.) If the command fails during devices file setup or device scanning, then remove the devices file if it has been newly created by the command, and exit with an error. If devices from a named VG are not imported (e.g. the VG is missing devices), then remove the devices file if it has been newly created by the command, and exit with an error. If --all VGs are being imported, and no devices are found to include in the devices file, then remove the devices file if it has been newly created by the command, and exit with an error.
309 lines
5.9 KiB
Bash
309 lines
5.9 KiB
Bash
|
|
#!/usr/bin/env bash
|
|
|
|
# Copyright (C) 2020 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
|
|
|
|
test_description='vgimportdevices'
|
|
|
|
. lib/inittest
|
|
|
|
aux prepare_devs 5
|
|
|
|
DFDIR="$LVM_SYSTEM_DIR/devices"
|
|
mkdir "$DFDIR" || true
|
|
DF="$DFDIR/system.devices"
|
|
|
|
aux lvmconf 'devices/use_devicesfile = 1'
|
|
|
|
not ls "$DF"
|
|
pvcreate "$dev1"
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
rm -f "$DF"
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
|
|
#
|
|
# vgimportdevices -a with no prev df
|
|
#
|
|
|
|
# no devs found
|
|
not vgimportdevices -a
|
|
not ls "$DF"
|
|
|
|
# one orphan pv, no vgs
|
|
pvcreate "$dev1"
|
|
rm -f "$DF"
|
|
not vgimportdevices -a
|
|
not ls "$DF"
|
|
|
|
# one complete vg
|
|
vgcreate $vg1 "$dev1"
|
|
rm -f "$DF"
|
|
vgimportdevices -a
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# two complete vgs
|
|
vgcreate $vg1 "$dev1"
|
|
vgcreate $vg2 "$dev2"
|
|
rm -f "$DF"
|
|
vgimportdevices -a
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
grep "$dev2" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# one incomplete vg
|
|
vgcreate $vg1 "$dev1" "$dev2"
|
|
lvcreate -l1 -an $vg1
|
|
rm -f "$DF"
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
not vgimportdevices -a
|
|
not ls "$DF"
|
|
vgs $vg1
|
|
pvs "$dev2"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# three complete, one incomplete vg
|
|
vgcreate $vg1 "$dev1"
|
|
vgcreate $vg2 "$dev2"
|
|
vgcreate $vg3 "$dev3"
|
|
vgcreate $vg4 "$dev4" "$dev5"
|
|
rm -f "$DF"
|
|
dd if=/dev/zero of="$dev5" bs=1M count=1
|
|
vgimportdevices -a
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
grep "$dev2" "$DF"
|
|
grep "$dev3" "$DF"
|
|
not grep "$dev4" "$DF"
|
|
not grep "$dev5" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
dd if=/dev/zero of="$dev3" bs=1M count=1
|
|
dd if=/dev/zero of="$dev4" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
|
|
#
|
|
# vgimportdevices -a with existing df
|
|
#
|
|
|
|
# no devs found
|
|
vgcreate $vg1 "$dev1"
|
|
grep "$dev1" "$DF"
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
not vgimportdevices -a
|
|
ls "$DF"
|
|
|
|
# one complete vg
|
|
vgcreate $vg1 "$dev1"
|
|
vgimportdevices -a
|
|
grep "$dev1" "$DF"
|
|
vgcreate --devicesfile "" $vg2 "$dev2"
|
|
not grep "$dev2" "$DF"
|
|
vgimportdevices -a
|
|
grep "$dev1" "$DF"
|
|
grep "$dev2" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# two complete vgs
|
|
vgcreate --devicesfile "" $vg1 "$dev1"
|
|
vgcreate --devicesfile "" $vg2 "$dev2"
|
|
rm -f "$DF"
|
|
vgimportdevices -a
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
grep "$dev2" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# one incomplete vg
|
|
vgcreate $vg1 "$dev1"
|
|
vgimportdevices -a
|
|
grep "$dev1" "$DF"
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
vgcreate --devicesfile "" $vg2 "$dev2" "$dev3"
|
|
not grep "$dev2" "$DF"
|
|
not grep "$dev3" "$DF"
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
not vgimportdevices -a
|
|
ls "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
dd if=/dev/zero of="$dev3" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# import the same vg again
|
|
vgcreate --devicesfile "" $vg1 "$dev1"
|
|
not ls "$DF"
|
|
vgimportdevices -a
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
vgimportdevices -a
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# import a series of vgs
|
|
vgcreate --devicesfile "" $vg1 "$dev1"
|
|
vgimportdevices -a
|
|
grep "$dev1" "$DF"
|
|
vgcreate --devicesfile "" $vg2 "$dev2"
|
|
vgimportdevices -a
|
|
grep "$dev1" "$DF"
|
|
grep "$dev2" "$DF"
|
|
vgcreate --devicesfile "" $vg3 "$dev3"
|
|
vgimportdevices -a
|
|
grep "$dev1" "$DF"
|
|
grep "$dev2" "$DF"
|
|
grep "$dev3" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
dd if=/dev/zero of="$dev3" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
#
|
|
# vgimportdevices vg with no prev df
|
|
#
|
|
|
|
# no devs found
|
|
not vgimportdevices $vg1
|
|
not ls "$DF"
|
|
|
|
# one complete vg
|
|
vgcreate $vg1 "$dev1"
|
|
rm -f "$DF"
|
|
vgimportdevices $vg1
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# two complete vgs
|
|
vgcreate $vg1 "$dev1"
|
|
vgcreate $vg2 "$dev2"
|
|
rm -f "$DF"
|
|
vgimportdevices $vg1
|
|
ls "$DF"
|
|
grep "$dev1" "$DF"
|
|
vgimportdevices $vg2
|
|
ls "$DF"
|
|
grep "$dev2" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# one incomplete vg
|
|
vgcreate $vg1 "$dev1" "$dev2"
|
|
lvcreate -l1 -an $vg1
|
|
rm -f "$DF"
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
not vgimportdevices $vg1
|
|
not ls "$DF"
|
|
vgs $vg1
|
|
pvs "$dev2"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# three complete, one incomplete vg
|
|
vgcreate $vg1 "$dev1"
|
|
vgcreate $vg2 "$dev2"
|
|
vgcreate $vg3 "$dev3"
|
|
vgcreate $vg4 "$dev4" "$dev5"
|
|
rm -f "$DF"
|
|
dd if=/dev/zero of="$dev5" bs=1M count=1
|
|
not vgimportdevices $vg4
|
|
not ls "$DF"
|
|
vgimportdevices $vg3
|
|
ls "$DF"
|
|
grep "$dev3" "$DF"
|
|
not grep "$dev1" "$DF"
|
|
not grep "$dev2" "$DF"
|
|
not grep "$dev4" "$DF"
|
|
not grep "$dev5" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
dd if=/dev/zero of="$dev3" bs=1M count=1
|
|
dd if=/dev/zero of="$dev4" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
#
|
|
# vgimportdevices vg with existing df
|
|
#
|
|
|
|
# vg not found
|
|
vgcreate $vg1 "$dev1"
|
|
vgimportdevices -a
|
|
grep "$dev1" "$DF"
|
|
not vgimportdevices $vg2
|
|
grep "$dev1" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
rm -f "$DF"
|
|
|
|
# vg incomplete
|
|
vgcreate $vg1 "$dev1"
|
|
vgimportdevices -a
|
|
grep "$dev1" "$DF"
|
|
vgcreate --devicesfile "" $vg2 "$dev2" "$dev3"
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
not vgimportdevices $vg2
|
|
grep "$dev1" "$DF"
|
|
not grep "$dev2" "$DF"
|
|
not grep "$dev3" "$DF"
|
|
|
|
# reset
|
|
dd if=/dev/zero of="$dev1" bs=1M count=1
|
|
dd if=/dev/zero of="$dev2" bs=1M count=1
|
|
dd if=/dev/zero of="$dev3" bs=1M count=1
|
|
dd if=/dev/zero of="$dev4" bs=1M count=1
|
|
rm -f "$DF"
|
|
|