From 7c36d7c90c77f8225432b451cb831711cea01883 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Wed, 14 Oct 2015 01:00:35 +0200 Subject: [PATCH] thin: enforce local activation when creation new thin As we need to check how full thin-pool is - require thin-pool is locally active. --- lib/metadata/lv_manip.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c index 8a0bbcd2d..7a3d9b950 100644 --- a/lib/metadata/lv_manip.c +++ b/lib/metadata/lv_manip.c @@ -7088,16 +7088,23 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg, } if (seg_is_thin_volume(lp)) { + thin_pool_was_active = lv_is_active(pool_lv); if (lv_is_new_thin_pool(pool_lv)) { - thin_pool_was_active = lv_is_active(pool_lv); if (!check_new_thin_pool(pool_lv)) return_NULL; /* New pool is now inactive */ - } else if (!pool_below_threshold(first_seg(pool_lv))) { - log_error("Cannot create new thin volume, free space in " - "thin pool %s reached threshold.", - display_lvname(pool_lv)); - return NULL; + } else { + if (!activate_lv_excl_local(cmd, pool_lv)) { + log_error("Aborting. Failed to locally activate thin pool %s.", + display_lvname(pool_lv)); + return 0; + } + if (!pool_below_threshold(first_seg(pool_lv))) { + log_error("Cannot create new thin volume, free space in " + "thin pool %s reached threshold.", + display_lvname(pool_lv)); + return NULL; + } } }