Description of problem: Per the verification of bug 1438013, stripe -> raid1 conversion attempts wo enough PVs should fail with "Insufficient suitable allocatable extents for logical volume". If that is no longer the case, and instead an interim attempt to raid5_n should now be done we can adjust tests accordingly. [root@hayes-03 ~]# lvcreate --yes --type striped -i 10 -n stripe_takeover -L 300M raid_sanity Using default stripesize 64.00 KiB. Rounding size 300.00 MiB (75 extents) up to stripe boundary size 320.00 MiB(80 extents). Logical volume "stripe_takeover" created. [root@hayes-03 ~]# lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices stripe_takeover raid_sanity -wi-a----- 320.00m /dev/sdb1(0),/dev/sdc1(0),/dev/sdd1(0),/dev/sde1(0),/dev/sdf1(0),/dev/sdg1(0),/dev/sdh1(0),/dev/sdi1(0),/dev/sdj1(0),/dev/sdk1(0) [root@hayes-03 ~]# lvconvert --yes --type raid1 raid_sanity/stripe_takeover Replaced LV type raid1 with possible type raid5_n. Repeat this command to convert to raid1 after an interim conversion has finished. Logical volume raid_sanity/stripe_takeover successfully converted. [root@hayes-03 ~]# lvs -a -o +devices LV VG Attr LSize Cpy%Sync Convert Devices stripe_takeover raid_sanity rwi-a-r--- 320.00m 100.00 stripe_takeover_rimage_0(0),stripe_takeover_rimage_1(0),stripe_takeover_rimage_2(0),stripe_takeover_rimage_3(0),stripe_takeover_rimage_4(0),stripe_takeover_rimage_5(0),stripe_takeover_rimage_6(0),stripe_takeover_rimage_7(0),stripe_takeover_rimage_8(0),stripe_takeover_rimage_9(0),stripe_takeover_rimage_10(0) [stripe_takeover_rimage_0] raid_sanity iwi-aor--- 32.00m /dev/sdb1(0 [stripe_takeover_rimage_1] raid_sanity iwi-aor--- 32.00m /dev/sdc1(0 [stripe_takeover_rimage_10] raid_sanity iwi-aor--- 32.00m /dev/sdl1(1 [stripe_takeover_rimage_2] raid_sanity iwi-aor--- 32.00m /dev/sdd1(0) [stripe_takeover_rimage_3] raid_sanity iwi-aor--- 32.00m /dev/sde1(0) [stripe_takeover_rimage_4] raid_sanity iwi-aor--- 32.00m /dev/sdf1(0) [stripe_takeover_rimage_5] raid_sanity iwi-aor--- 32.00m /dev/sdg1(0) [stripe_takeover_rimage_6] raid_sanity iwi-aor--- 32.00m /dev/sdh1(0) [stripe_takeover_rimage_7] raid_sanity iwi-aor--- 32.00m /dev/sdi1(0) [stripe_takeover_rimage_8] raid_sanity iwi-aor--- 32.00m /dev/sdj1(0) [stripe_takeover_rimage_9] raid_sanity iwi-aor--- 32.00m /dev/sdk1(0) [stripe_takeover_rmeta_0] raid_sanity ewi-aor--- 4.00m /dev/sdb1(8) [stripe_takeover_rmeta_1] raid_sanity ewi-aor--- 4.00m /dev/sdc1(8) [stripe_takeover_rmeta_10] raid_sanity ewi-aor--- 4.00m /dev/sdl1(0) [stripe_takeover_rmeta_2] raid_sanity ewi-aor--- 4.00m /dev/sdd1(8) [stripe_takeover_rmeta_3] raid_sanity ewi-aor--- 4.00m /dev/sde1(8) [stripe_takeover_rmeta_4] raid_sanity ewi-aor--- 4.00m /dev/sdf1(8) [stripe_takeover_rmeta_5] raid_sanity ewi-aor--- 4.00m /dev/sdg1(8) [stripe_takeover_rmeta_6] raid_sanity ewi-aor--- 4.00m /dev/sdh1(8) [stripe_takeover_rmeta_7] raid_sanity ewi-aor--- 4.00m /dev/sdi1(8) [stripe_takeover_rmeta_8] raid_sanity ewi-aor--- 4.00m /dev/sdj1(8) [stripe_takeover_rmeta_9] raid_sanity ewi-aor--- 4.00m /dev/sdk1(8) [root@hayes-03 ~]# lvconvert --yes --type raid1 raid_sanity/stripe_takeover Converting raid5_n LV raid_sanity/stripe_takeover to 2 stripes first. WARNING: Removing stripes from active logical volume raid_sanity/stripe_takeover will shrink it from 320.00 MiB to 32.00 MiB! THIS MAY DESTROY (PARTS OF) YOUR DATA! If that leaves the logical volume larger than 800 extents due to stripe rounding, you may want to grow the content afterwards (filesystem etc.) WARNING: to remove freed stripes after the conversion has finished, you have to run "lvconvert --stripes 1 raid_sanity/stripe_takeover" Can't remove stripes without --force option. Reshape request failed on LV raid_sanity/stripe_takeover. Version-Release number of selected component (if applicable): kernel-4.18.0-240.el8 BUILT: Wed Sep 23 04:46:11 CDT 2020 lvm2-2.03.09-5.el8 BUILT: Wed Aug 12 15:51:50 CDT 2020 lvm2-libs-2.03.09-5.el8 BUILT: Wed Aug 12 15:51:50 CDT 2020
The tekover+reshape sequence striped -> raid5_n (11 stripes, 10 data stripes) -> raid5_n (2 stripes, 1 data stripe) -> raid1 is the mandatory conversion path from striped -> raid1 repeating "lvconvert -y -f --type raid1 $LV", closing.
*takeover+reshape*