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; + } } }