summaryrefslogtreecommitdiffstats
path: root/tools/pvchange.c
diff options
context:
space:
mode:
authorDave Wysochanski <dwysocha@redhat.com>2010-06-28 20:38:06 +0000
committerDave Wysochanski <dwysocha@redhat.com>2010-06-28 20:38:06 +0000
commit60a5f61fc85e8a88fab556f9eb0aca44ea3398b1 (patch)
treeecb471776e13b2f7eed9eabdafdc38fc05ef99b0 /tools/pvchange.c
parent1b5434332805efd05c5e1805f6789f7c0db111b3 (diff)
downloadlvm2-60a5f61fc85e8a88fab556f9eb0aca44ea3398b1.tar.gz
lvm2-60a5f61fc85e8a88fab556f9eb0aca44ea3398b1.tar.xz
lvm2-60a5f61fc85e8a88fab556f9eb0aca44ea3398b1.zip
Set vg_mda_copies when pvchange --metadataignore is given.
When a user explicitly sets a new mda ignore value for a PV, we should update vg_mda_copies accordingly. When the VG is written out, the user would not want the new ignore state to get lost as a result of the vg_mda_copies value and logic in the vg_write path. Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
Diffstat (limited to 'tools/pvchange.c')
-rw-r--r--tools/pvchange.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/tools/pvchange.c b/tools/pvchange.c
index 22988510..de521b36 100644
--- a/tools/pvchange.c
+++ b/tools/pvchange.c
@@ -147,6 +147,17 @@ static int _pvchange_single(struct cmd_context *cmd, struct volume_group *vg,
if (!pv_mda_set_ignored(pv, mda_ignore)) {
goto out;
}
+ /*
+ * Update vg_mda_copies based on the mdas in this PV.
+ * This is most likely what the user would expect - if they
+ * specify a specific PV to be ignored/un-ignored, they will
+ * most likely not want LVM to turn around and change the
+ * ignore / un-ignore value when it writes the VG to disk.
+ * This does not guarantee this PV's ignore bits will be
+ * preserved in future operations.
+ */
+ if (!is_orphan(pv) && vg_mda_copies(vg))
+ vg_set_mda_copies(vg, vg_mda_used_count(vg));
} else {
/* --uuid: Change PV ID randomly */
if (!id_create(&pv->id)) {