mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
Automatically restore MISSING PVs with no MDAs.
This commit is contained in:
parent
b3e9a09abe
commit
60668f823e
@ -1,5 +1,6 @@
|
|||||||
Version 2.02.99 -
|
Version 2.02.99 -
|
||||||
===================================
|
===================================
|
||||||
|
Automatically restore MISSING PVs with no MDAs.
|
||||||
When no '-i' argument is given for RAID10, default to 2 stripes.
|
When no '-i' argument is given for RAID10, default to 2 stripes.
|
||||||
Do not allow --splitmirrors on RAID10 logical volumes.
|
Do not allow --splitmirrors on RAID10 logical volumes.
|
||||||
Skip mlocking [vectors] on arm architecture.
|
Skip mlocking [vectors] on arm architecture.
|
||||||
|
@ -221,6 +221,12 @@ static int _read_pv(struct format_instance *fid,
|
|||||||
if (!pv->dev && !lvmetad_active())
|
if (!pv->dev && !lvmetad_active())
|
||||||
pv->status |= MISSING_PV;
|
pv->status |= MISSING_PV;
|
||||||
|
|
||||||
|
if ((pv->status & MISSING_PV) && pv->dev && pv_mda_used_count(pv) == 0) {
|
||||||
|
pv->status &= ~MISSING_PV;
|
||||||
|
log_info("Recovering a previously MISSING PV %s with no MDAs.",
|
||||||
|
pv_dev_name(pv));
|
||||||
|
}
|
||||||
|
|
||||||
/* Late addition */
|
/* Late addition */
|
||||||
if (dm_config_has_node(pvn, "dev_size") &&
|
if (dm_config_has_node(pvn, "dev_size") &&
|
||||||
!_read_uint64(pvn, "dev_size", &pv->size)) {
|
!_read_uint64(pvn, "dev_size", &pv->size)) {
|
||||||
|
31
test/shell/nomda-restoremissing.sh
Normal file
31
test/shell/nomda-restoremissing.sh
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (C) 2010 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 prepare_vg 3
|
||||||
|
|
||||||
|
pvchange --metadataignore y $dev1
|
||||||
|
|
||||||
|
lvcreate -m 1 -l 1 -n mirror $vg
|
||||||
|
lvchange -a n $vg/mirror
|
||||||
|
lvcreate -l 1 -n lv1 $vg "$dev1"
|
||||||
|
|
||||||
|
# try to just change metadata; we expect the new version (with MISSING_PV set
|
||||||
|
# on the reappeared volume) to be written out to the previously missing PV
|
||||||
|
aux disable_dev "$dev1"
|
||||||
|
lvremove $vg/mirror
|
||||||
|
not vgck $vg 2>&1 | tee log
|
||||||
|
grep "missing 1 physical volume" log
|
||||||
|
not lvcreate -m 1 -l 1 -n mirror $vg # write operations fail
|
||||||
|
aux enable_dev "$dev1"
|
||||||
|
lvcreate -m 1 -l 1 -n mirror $vg # no MDA => automatically restored
|
||||||
|
vgck $vg
|
Loading…
Reference in New Issue
Block a user