From 630dbab749280f61e5464ce9c4d33b54a351083d Mon Sep 17 00:00:00 2001 From: Petr Rockai Date: Wed, 10 Jun 2009 20:17:32 +0000 Subject: [PATCH] Allow metadata correction even when PVs are missing. --- lib/metadata/metadata.c | 4 ++++ test/t-unlost-pv.sh | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 4a8f8f6cd..36e27fca2 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -1835,6 +1835,7 @@ static struct volume_group *_vg_read(struct cmd_context *cmd, int inconsistent_vgid = 0; int inconsistent_pvs = 0; unsigned use_precommitted = precommitted; + unsigned saved_handles_missing_pvs = cmd->handles_missing_pvs; struct dm_list *pvids; struct pv_list *pvl, *pvl2; struct dm_list all_pvs; @@ -2076,11 +2077,14 @@ static struct volume_group *_vg_read(struct cmd_context *cmd, log_warn("WARNING: Inconsistent metadata found for VG %s - updating " "to use version %u", vgname, correct_vg->seqno); + cmd->handles_missing_pvs = 1; if (!vg_write(correct_vg)) { log_error("Automatic metadata correction failed"); vg_release(correct_vg); + cmd->handles_missing_pvs = saved_handles_missing_pvs; return NULL; } + cmd->handles_missing_pvs = saved_handles_missing_pvs; if (!vg_commit(correct_vg)) { log_error("Automatic metadata correction commit " diff --git a/test/t-unlost-pv.sh b/test/t-unlost-pv.sh index 5c1fdfb0f..7a120fbf4 100644 --- a/test/t-unlost-pv.sh +++ b/test/t-unlost-pv.sh @@ -29,7 +29,6 @@ vgreduce --removemissing --force $vg enable_dev $dev1 check -exit 0 # FIXME, bug demonstration code follows # 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 vgextend $vg $dev1 -- 2.43.5