diff options
author | Dave Wysochanski <dwysocha@redhat.com> | 2010-06-28 20:38:06 +0000 |
---|---|---|
committer | Dave Wysochanski <dwysocha@redhat.com> | 2010-06-28 20:38:06 +0000 |
commit | 60a5f61fc85e8a88fab556f9eb0aca44ea3398b1 (patch) | |
tree | ecb471776e13b2f7eed9eabdafdc38fc05ef99b0 /tools/pvchange.c | |
parent | 1b5434332805efd05c5e1805f6789f7c0db111b3 (diff) | |
download | lvm2-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.c | 11 |
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)) { |