summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2017-02-24 05:58:45 +0100
committerHeinz Mauelshagen <heinzm@redhat.com>2017-02-24 05:58:45 +0100
commit3bdc4045c2abbf9ea11000b76eeefab9fed16033 (patch)
treef9c6967c0c06f109df46529ab2bbe818d4c2c418
parentd768fbe010914161e3e7bfff6e4e6e0e2cd3907d (diff)
downloadlvm2-3bdc4045c2abbf9ea11000b76eeefab9fed16033.tar.gz
lvconvert: fix 2 issues identified in intesting
Allow regionsize on upconvert from linear: fix related commit 2574d3257ad41 to actually work Related: rhbz1394427 Remove setting raid5_n on conversions from raid1 as of commit 932db3db5357 because any raid5 mapping may be requested. Related: rhbz834579 Related: rhbz1191935 Related: rhbz1191978
-rw-r--r--lib/metadata/raid_manip.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index ab0bfab3d..34567bd54 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -2696,12 +2696,14 @@ static int _raid_add_images(struct logical_volume *lv,
int commit, int use_existing_area_len)
{
int rebuild_flag_cleared = 0;
- struct lv_segment *seg;
- uint32_t s;
+ struct lv_segment *seg = first_seg(lv);
+ uint32_t region_size = seg->region_size, s;
if (!_raid_add_images_without_commit(lv, new_count, pvs, use_existing_area_len))
return_0;
+ first_seg(lv)->region_size = region_size;
+
if (!commit)
return 1;
@@ -5623,7 +5625,7 @@ static uint64_t _raid_seg_flag_6_to_5(const struct lv_segment *seg)
return _get_r56_flag(seg, 1);
}
-/* Change segtype for raid4 <-> raid5 <-> raid6 or raid1 <-> raid5 takeover where necessary. */
+/* Change segtype for raid4 <-> raid5 <-> raid6 where necessary. */
static int _set_convenient_raid1456_segtype_to(const struct lv_segment *seg_from,
const struct segment_type **segtype,
int yes)
@@ -5650,12 +5652,6 @@ static int _set_convenient_raid1456_segtype_to(const struct lv_segment *seg_from
goto replaced;
}
- /* raid1 -> raid5_n with 2 areas */
- } else if (seg_is_raid1(seg_from) && seg_from->area_count == 2 &&
- segtype_is_any_raid5(*segtype) && !segtype_is_raid5_n(*segtype)) {
- seg_flag = SEG_RAID5_N;
- goto replaced;
-
/* raid4 -> raid5_n */
} else if (seg_is_raid4(seg_from) && segtype_is_any_raid5(*segtype)) {
seg_flag = SEG_RAID5_N;