From ddb31b62e5cdecd5b44176a5def6d1f0408a9e00 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Mon, 26 Mar 2012 20:33:40 +0000 Subject: [PATCH] Keep exclusive activation in pvmove if LV is already active. Pvmove should never try to downgrade exclusive lock for LVs. This allows pvmove to work again for exclusive activated LVs. --- WHATS_NEW | 1 + lib/locking/locking.c | 2 +- tools/pvmove.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/WHATS_NEW b/WHATS_NEW index 13cb12d72..eb5f53b05 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.96 - ================================ + Keep exclusive activation in pvmove if LV is already active. Disallow pvmove for exclusive LV if some affected LVs are not exclusively activated. Remove unused and wrongly set cluster VG flag from clvmd lock query command. Fix pvmove for exclusively activated LV pvmove in clustered VG. (2.02.86) diff --git a/lib/locking/locking.c b/lib/locking/locking.c index 1b4e0ac54..228078a2c 100644 --- a/lib/locking/locking.c +++ b/lib/locking/locking.c @@ -574,7 +574,7 @@ int activate_lvs(struct cmd_context *cmd, struct dm_list *lvs, unsigned exclusiv struct lv_list *lvl; dm_list_iterate_items(lvl, lvs) { - if (!exclusive) { + if (!exclusive && !lv_is_active_exclusive(lvl->lv)) { if (!activate_lv(cmd, lvl->lv)) { log_error("Failed to activate %s", lvl->lv->name); return 0; diff --git a/tools/pvmove.c b/tools/pvmove.c index 9b9fe5908..2d0e2d687 100644 --- a/tools/pvmove.c +++ b/tools/pvmove.c @@ -296,7 +296,7 @@ static int _activate_lv(struct cmd_context *cmd, struct logical_volume *lv_mirr, { int r = 0; - if (exclusive) + if (exclusive || lv_is_active_exclusive(lv_mirr)) r = activate_lv_excl(cmd, lv_mirr); else r = activate_lv(cmd, lv_mirr); -- 2.43.5