Gitweb:
http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=7c36d7c90c77f8...
Commit: 7c36d7c90c77f8225432b451cb831711cea01883
Parent: bbef4edd06097a71601b1470a713ded17deb7cba
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Wed Oct 14 01:00:35 2015 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Wed Oct 14 01:00:35 2015 +0200
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 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
index 8a0bbcd..7a3d9b9 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;
+ }
}
}