From 400f6442861c6832f5f89d6e40e668517895b50d Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Wed, 21 Nov 2012 09:46:18 +0100 Subject: [PATCH] lv_manip: fix regresion from bf2741376d4 Commit bf2741376d47411994d4065863acab8e405ff5c7 started to use lv_is_active() instead of call for lv_info & info.exists so we cover also cluster activated devices. For snapshost the conversion was not correct and introduced regression by blocking creation of snapshot of inactive LV. Fix it by assigning lv_is_active() directly. Note: we still have minor issue to fix - to make lv_is_???? function able to return error states since lv_info() may fail. --- lib/metadata/lv_manip.c | 10 ++-------- test/shell/lvcreate-usage.sh | 2 ++ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c index dc315aca3..35a75ffd5 100644 --- a/lib/metadata/lv_manip.c +++ b/lib/metadata/lv_manip.c @@ -4367,14 +4367,8 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg, struct l log_warn("WARNING: See global/mirror_segtype_default in lvm.conf."); } - if (!lv_is_active(org)) { - log_error("Check for existence of active snapshot " - "origin '%s' failed.", org->name); - return NULL; - } - origin_active = 1; - - if (vg_is_clustered(vg) && + if ((origin_active = lv_is_active(org)) && + vg_is_clustered(vg) && !lv_is_active_exclusive_locally(org)) { log_error("%s must be active exclusively to" " create snapshot", org->name); diff --git a/test/shell/lvcreate-usage.sh b/test/shell/lvcreate-usage.sh index ddde401ac..c9c906abc 100644 --- a/test/shell/lvcreate-usage.sh +++ b/test/shell/lvcreate-usage.sh @@ -64,6 +64,8 @@ lvcreate -l1 -n $lv3 $vg not lvcreate -l1 -n $lv4 $vg lvremove -ff $vg/$lv3 +# check snapshot of inactive origin +lvchange -an $vg/$lv1 lvcreate -l1 -s -n $lv3 $vg/$lv1 not lvcreate -l1 -n $lv4 $vg not lvcreate -l1 -m1 -n $lv4 $vg