From 7de533ad12972f5a9c5bf2d2b477d8320f7e4a8e Mon Sep 17 00:00:00 2001 From: Jonathan Brassow Date: Fri, 8 Nov 2013 09:52:00 -0600 Subject: [PATCH] mirror: Handle failures in tmp mirror used when up-converting. Failures in the temporary mirror used when up-converting cause dmeventd to issue 'lvconvert --repair' on the sub-LV, _mimagetmp_?. The 'lvconvert' command refuses to deal with this sub-LV outright - it expects to be given the name of the top-level LV. So, just like we do with mirrored logs, we strip-off the portion of the name that is not the top-level LV and issue the command on the top-level LV instead. --- WHATS_NEW | 1 + daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index f0a764b89..5eb4abe50 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.104 - =================================== + Handle failures in temporary mirror used when adding images to mirrors. Fix and improve logic for implicitely exclusive activations. Return success when LV cannot be activated because of volume_list filter. Return proper error state for remote exclusive activation. diff --git a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c index 5d5a46b80..6d2c3de21 100644 --- a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c +++ b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c @@ -159,8 +159,8 @@ int dmeventd_lvm2_command(struct dm_pool *mem, char *buffer, size_t size, } /* strip off the mirror component designations */ - layer = strstr(lv, "_mlog"); - if (layer) + if ((layer = strstr(lv, "_mimagetmp")) || + (layer = strstr(lv, "_mlog"))) *layer = '\0'; r = dm_snprintf(buffer, size, "%s %s/%s", cmd, vg, lv);