diff options
author | Heinz Mauelshagen <heinzm@redhat.com> | 2017-02-24 05:58:45 +0100 |
---|---|---|
committer | Heinz Mauelshagen <heinzm@redhat.com> | 2017-02-24 05:58:45 +0100 |
commit | 3bdc4045c2abbf9ea11000b76eeefab9fed16033 (patch) | |
tree | f9c6967c0c06f109df46529ab2bbe818d4c2c418 | |
parent | d768fbe010914161e3e7bfff6e4e6e0e2cd3907d (diff) | |
download | lvm2-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.c | 14 |
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; |