|
|
a4cb28 |
WHATS_NEW | 4 ++++
|
|
|
a4cb28 |
lib/metadata/lv_manip.c | 23 ++++++++++++++++++-----
|
|
|
a4cb28 |
2 files changed, 22 insertions(+), 5 deletions(-)
|
|
|
a4cb28 |
|
|
|
a4cb28 |
diff --git a/WHATS_NEW b/WHATS_NEW
|
|
|
a4cb28 |
index 1718c29..0fa6bb6 100644
|
|
|
a4cb28 |
--- a/WHATS_NEW
|
|
|
a4cb28 |
+++ b/WHATS_NEW
|
|
|
a4cb28 |
@@ -1,3 +1,7 @@
|
|
|
a4cb28 |
+Version 2.02.133 -
|
|
|
a4cb28 |
+======================================
|
|
|
a4cb28 |
+ Check for enough space in thin-pool in command before creating new thin.
|
|
|
a4cb28 |
+
|
|
|
a4cb28 |
Version 2.02.131 -
|
|
|
a4cb28 |
=====================================
|
|
|
a4cb28 |
Fix vgimportclone cache_dir path name (2.02.115).
|
|
|
a4cb28 |
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c
|
|
|
a4cb28 |
index 88c516b..32aa666 100644
|
|
|
a4cb28 |
--- a/lib/metadata/lv_manip.c
|
|
|
a4cb28 |
+++ b/lib/metadata/lv_manip.c
|
|
|
a4cb28 |
@@ -7038,12 +7038,25 @@ static struct logical_volume *_lv_create_an_lv(struct volume_group *vg,
|
|
|
a4cb28 |
}
|
|
|
a4cb28 |
}
|
|
|
a4cb28 |
|
|
|
a4cb28 |
- if (seg_is_thin_volume(lp) &&
|
|
|
a4cb28 |
- lv_is_new_thin_pool(pool_lv)) {
|
|
|
a4cb28 |
+ if (seg_is_thin_volume(lp)) {
|
|
|
a4cb28 |
thin_pool_was_active = lv_is_active(pool_lv);
|
|
|
a4cb28 |
- if (!check_new_thin_pool(pool_lv))
|
|
|
a4cb28 |
- return_NULL;
|
|
|
a4cb28 |
- /* New pool is now inactive */
|
|
|
a4cb28 |
+ if (lv_is_new_thin_pool(pool_lv)) {
|
|
|
a4cb28 |
+ if (!check_new_thin_pool(pool_lv))
|
|
|
a4cb28 |
+ return_NULL;
|
|
|
a4cb28 |
+ /* New pool is now inactive */
|
|
|
a4cb28 |
+ } else {
|
|
|
a4cb28 |
+ if (!activate_lv_excl_local(cmd, pool_lv)) {
|
|
|
a4cb28 |
+ log_error("Aborting. Failed to locally activate thin pool %s.",
|
|
|
a4cb28 |
+ display_lvname(pool_lv));
|
|
|
a4cb28 |
+ return 0;
|
|
|
a4cb28 |
+ }
|
|
|
a4cb28 |
+ if (!pool_below_threshold(first_seg(pool_lv))) {
|
|
|
a4cb28 |
+ log_error("Cannot create new thin volume, free space in "
|
|
|
a4cb28 |
+ "thin pool %s reached threshold.",
|
|
|
a4cb28 |
+ display_lvname(pool_lv));
|
|
|
a4cb28 |
+ return NULL;
|
|
|
a4cb28 |
+ }
|
|
|
a4cb28 |
+ }
|
|
|
a4cb28 |
}
|
|
|
a4cb28 |
|
|
|
a4cb28 |
if (seg_is_cache(lp) &&
|