[lvm-devel] master - thin: restore conversion to raid
Zdenek Kabelac
zkabelac at sourceware.org
Mon Jun 19 21:31:13 UTC 2017
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=19cc03fa5275fa6d00a1f726bae40141559e2913
Commit: 19cc03fa5275fa6d00a1f726bae40141559e2913
Parent: 9e9163618ab36a6b046b6380d6ef58429b219ef8
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Mon Jun 19 23:11:11 2017 +0200
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Mon Jun 19 23:30:08 2017 +0200
thin: restore conversion to raid
Since commit 1bc546269a7d2cae156827e282715410a4967d51 we've disabled
coversion of raid. This however already got fixed, so reenable
commands like: 'lvconvert --type raid1 vg/pool_tdata'.
---
WHATS_NEW | 1 +
lib/metadata/raid_manip.c | 21 ++++++---------------
2 files changed, 7 insertions(+), 15 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 305e185..e60380a 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.172 -
===============================
+ Reenable conversion of data and metadata thin-pool volumes to raid.
Improve raid status reporting with lvs.
No longer necessary to '--force' a repair for RAID1
Linear to RAID1 upconverts now use "recover" sync action, not "resync".
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 8fc04fb..56cc592 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -2552,14 +2552,6 @@ static int _raid_add_images_without_commit(struct logical_volume *lv,
return 0;
}
- if (lv_is_active(lv_lock_holder(lv)) &&
- (old_count == 1) &&
- (lv_is_thin_pool_data(lv) || lv_is_thin_pool_metadata(lv))) {
- log_error("Can't add image to active thin pool LV %s yet. Deactivate first.",
- display_lvname(lv));
- return 0;
- }
-
if (!archive(lv->vg))
return_0;
@@ -6278,6 +6270,12 @@ int lv_raid_convert(struct logical_volume *lv,
log_error("%s must be active to perform this operation.",
display_lvname(lv));
return 0;
+ } else if (vg_is_clustered(lv->vg) &&
+ !lv_is_active_exclusive_locally(lv_lock_holder(lv))) {
+ /* In clustered VGs, the LV must be active on this node exclusively. */
+ log_error("%s must be active exclusive locally to "
+ "perform this operation.", display_lvname(lv));
+ return 0;
}
new_segtype = new_segtype ? : seg->segtype;
@@ -6406,13 +6404,6 @@ int lv_raid_convert(struct logical_volume *lv,
(segtype_is_striped_target(new_segtype) &&
(new_stripes == 1)) ? SEG_TYPE_NAME_LINEAR : new_segtype->name);
- /* In clustered VGs, the LV must be active on this node exclusively. */
- if (vg_is_clustered(lv->vg) && !lv_is_active_exclusive_locally(lv)) {
- log_error("%s must be active exclusive locally to "
- "perform this operation.", display_lvname(lv));
- return 0;
- }
-
/* LV must be in sync. */
if (!_raid_in_sync(lv)) {
log_error("Unable to convert %s while it is not in-sync.",
More information about the lvm-devel
mailing list