From c489dd2e1764216de07be80d36b1025fb4f6fc85 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Wed, 29 Nov 2017 22:19:46 +0100 Subject: [PATCH] pvmove: add missing segment merging When pvmove is finished and metadata are updated, the code missed to merge possible mergable segments - so add explicit merging call after pvmoved volumes are unlocked. This avoids weird results where i.e. lvs could have been reporting non-matching segments as lvs upon metadata read is doing silent segment merging while dm table left after pvmove was still preserving non-merged segments. --- WHATS_NEW | 1 + lib/metadata/lv_manip.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/WHATS_NEW b/WHATS_NEW index 32ed3c93b..093fc953c 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.177 - ==================================== + Merge segments when pvmove is finished. Remove label_verify that has never been used. Ensure very large numbers used as arguments are not casted to lower values. Enhance reading and validation of options stripes and stripes_size. diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c index d4a4b8bc7..fb152ac3d 100644 --- a/lib/metadata/lv_manip.c +++ b/lib/metadata/lv_manip.c @@ -6637,6 +6637,8 @@ int remove_layers_for_segments_all(struct cmd_context *cmd, dm_list_iterate_items(lvl, lvs_changed) { /* FIXME Assumes only one pvmove at a time! */ lvl->lv->status &= ~LOCKED; + if (!lv_merge_segments(lvl->lv)) + return_0; } return 1; -- 2.43.5