mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-18 10:04:20 +03:00
lvconvert: fix interim segtype regression on raid6 conversions
When converting from striped/raid0/raid0_meta to raid6 with > 2 stripes, allow possible direct conversion (to raid6_n_6). In case of 2 stripes, first convert to raid5_n to restripe to at least 3 data stripes (the raid6 minimum in lvm2) in a second conversion before finally converting to raid6_n_6. As before, raid6_n_6 then can be converted to any other raid6 layout. Enhance lvconvert-raid-takeover.sh to test the 2 stripes conversions to raid6. Resolves: rhbz1624038
This commit is contained in:
parent
22a1304368
commit
e2e30a64ab
@ -1,5 +1,6 @@
|
|||||||
Version 3.0.0
|
Version 3.0.0
|
||||||
=============
|
=============
|
||||||
|
Fix lvconvert striped/raid0/raid0_meta -> raid6 regression.
|
||||||
Add 'lvm2-activation-generator:' prefix for kmsg messages logged by generator.
|
Add 'lvm2-activation-generator:' prefix for kmsg messages logged by generator.
|
||||||
Add After=rbdmap.service to {lvm2-activation-net,blk-availability}.service.
|
Add After=rbdmap.service to {lvm2-activation-net,blk-availability}.service.
|
||||||
Reduce max concurrent aios to avoid EMFILE with many devices.
|
Reduce max concurrent aios to avoid EMFILE with many devices.
|
||||||
|
@ -6127,9 +6127,9 @@ static int _set_convenient_raid145610_segtype_to(const struct lv_segment *seg_fr
|
|||||||
/* striped/raid0 -> */
|
/* striped/raid0 -> */
|
||||||
} else if (seg_is_striped(seg_from) || seg_is_any_raid0(seg_from)) {
|
} else if (seg_is_striped(seg_from) || seg_is_any_raid0(seg_from)) {
|
||||||
if (segtype_is_any_raid6(*segtype))
|
if (segtype_is_any_raid6(*segtype))
|
||||||
seg_flag = SEG_RAID6_N_6;
|
seg_flag = seg_from->area_count < 3 ? SEG_RAID5_N : SEG_RAID6_N_6;
|
||||||
|
|
||||||
if (segtype_is_linear(*segtype) ||
|
else if (segtype_is_linear(*segtype) ||
|
||||||
(!segtype_is_raid4(*segtype) && !segtype_is_raid10(*segtype) && !segtype_is_striped(*segtype)))
|
(!segtype_is_raid4(*segtype) && !segtype_is_raid10(*segtype) && !segtype_is_striped(*segtype)))
|
||||||
seg_flag = SEG_RAID5_N;
|
seg_flag = SEG_RAID5_N;
|
||||||
|
|
||||||
|
@ -108,11 +108,19 @@ function _invalid_raid5_conversions
|
|||||||
not _lvconvert raid6 raid6_n_6 4 6 $vg $lv1
|
not _lvconvert raid6 raid6_n_6 4 6 $vg $lv1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check raid6 conversion constrainst of minimum 3 stripes
|
# Check raid6 conversion constrainst for 2 stripes
|
||||||
_lvcreate striped 2 2 4m $vg $lv1
|
for type in striped raid0 raid0_meta
|
||||||
|
do
|
||||||
|
_lvcreate $type 2 2 4m $vg $lv1
|
||||||
not _lvconvert raid6 raid6_n_6 2 4 $vg $lv1
|
not _lvconvert raid6 raid6_n_6 2 4 $vg $lv1
|
||||||
|
_lvconvert raid6 raid5_n 2 3 $vg $lv1
|
||||||
|
_lvconvert raid6 raid5_n 3 4 $vg $lv1
|
||||||
|
_lvconvert raid6 raid6_n_6 3 5 $vg $lv1
|
||||||
lvremove -y $vg
|
lvremove -y $vg
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# Check raid6 conversion constrainst of minimum 3 stripes
|
||||||
_lvcreate raid0 3 3 4m $vg $lv1
|
_lvcreate raid0 3 3 4m $vg $lv1
|
||||||
_lvconvert raid6 raid6_n_6 3 5 $vg $lv1
|
_lvconvert raid6 raid6_n_6 3 5 $vg $lv1
|
||||||
lvremove -y $vg
|
lvremove -y $vg
|
||||||
|
Loading…
x
Reference in New Issue
Block a user