diff options
author | David Teigland <teigland@redhat.com> | 2022-01-06 10:15:16 -0600 |
---|---|---|
committer | David Teigland <teigland@redhat.com> | 2022-01-13 10:01:24 -0600 |
commit | 18f451e09e943eb3d51f8394f6fe8967e1e9f565 (patch) | |
tree | db8b031cd581f8cfe00b96a36ff8674d54db25db /test | |
parent | cb798ee1c102aadde93965a894c5aa59d4e76e4a (diff) | |
download | lvm2-18f451e09e943eb3d51f8394f6fe8967e1e9f565.tar.gz |
handle duplicate vgids
The approach to duplicate VGIDs has been that it is not possible
or not allowed, so the behavior has been undefined. The actual
result was unpredictable and/or broken, and generally unhelpful.
Improve this by recognizing the problem, displaying the VGs,
and printing a warning to fix the problem. Beyond this,
using VGs with duplicate VGIDs remains undefined, but should
work well enough to correct the problem with vgchange -u.
It's possible to create this condition without too much difficulty
by cloning PVs, followed by an incomplete attempt at making the two
VGs unique (vgrename and pvchange -u, but missing vgchange -u.)
Diffstat (limited to 'test')
-rw-r--r-- | test/shell/duplicate-vgid.sh | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/shell/duplicate-vgid.sh b/test/shell/duplicate-vgid.sh new file mode 100644 index 000000000..12163c2f0 --- /dev/null +++ b/test/shell/duplicate-vgid.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +# Copyright (C) 2008-2013 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. + +SKIP_WITH_LVMLOCKD=1 +SKIP_WITH_LVMPOLLD=1 + +. lib/inittest + +aux prepare_devs 2 + +vgcreate $vg1 "$dev1" +vgchange --setautoactivation n $vg1 +UUID1=$(vgs --noheading -o vg_uuid $vg1 | xargs) +lvcreate -l1 -an -n $lv1 $vg1 +dd if="$dev1" of="$dev2" bs=1M count=1 +aux disable_dev "$dev1" +vgrename $vg1 $vg2 +pvchange -u "$dev2" +aux enable_dev "$dev1" + +vgs -o+uuid |tee out +grep $vg1 out | tee out1 +grep $UUID1 out1 +grep $vg2 out | tee out2 +grep $UUID1 out2 + +vgs $vg1 +vgs $vg2 +lvs $vg1/$lv1 +lvs $vg2/$lv1 + +lvremove $vg1/$lv1 +lvremove $vg2/$lv1 + +lvcreate -l1 -an -n $lv2 $vg1 +lvcreate -l1 -an -n $lv3 $vg2 + +vgchange -u $vg2 + +vgs -o uuid $vg1 |tee out +grep $UUID1 out + +vgs -o uuid $vg2 |tee out +not grep $UUID1 out + +vgremove -ff $vg1 +vgremove -ff $vg2 |