summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2021-07-23 16:31:11 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2021-07-23 16:35:47 +0200
commit9cbc9e8296752df35626a9b50de1cb551ff5e99e (patch)
tree5eaca5dd90cf759e03157e04383fb5bbfdb7bff4
parent06602942a31d82cb69e9d1874f3b63825c0f93ac (diff)
downloadlvm2-9cbc9e8296752df35626a9b50de1cb551ff5e99e.tar.gz
vgmerge: remove one of merge pmspare LVs
When merging 2 VG, where both of them have pmspare volume, select the bigger one and remove the other.
-rw-r--r--tools/vgmerge.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/vgmerge.c b/tools/vgmerge.c
index 895018a6f..884ad4b8d 100644
--- a/tools/vgmerge.c
+++ b/tools/vgmerge.c
@@ -92,6 +92,20 @@ static int _vgmerge_single(struct cmd_context *cmd, const char *vg_name_to,
}
}
+ if (vg_from->pool_metadata_spare_lv &&
+ vg_to->pool_metadata_spare_lv) {
+ if (vg_from->pool_metadata_spare_lv->le_count >
+ vg_to->pool_metadata_spare_lv->le_count)
+ /* Preserve bigger pmspare from VG_FROM */
+ lv = vg_to->pool_metadata_spare_lv;
+ else
+ lv = vg_from->pool_metadata_spare_lv;
+
+ log_debug_metadata("Removing pool metadata spare %s.", display_lvname(lv));
+ if (!lv_remove_single(cmd, lv, DONT_PROMPT, 0))
+ return_ECMD_FAILED;
+ }
+
if (!vgs_are_compatible(cmd, vg_from, vg_to))
goto_bad;