]> sourceware.org Git - lvm2.git/commitdiff
lvconvert: avoid superfluous interim raid type
authorHeinz Mauelshagen <heinzm@redhat.com>
Fri, 31 Aug 2018 17:03:52 +0000 (19:03 +0200)
committerMarian Csontos <mcsontos@redhat.com>
Wed, 5 Sep 2018 14:41:14 +0000 (16:41 +0200)
When converting striped/raid0*/raid6_n_6 <-> raid4,
avoid superfluous interim raid5_n layout.

Related: rhbz1447809
(cherry picked from commit 22a13043683a5647e8cc4e3aead911e5269ffd2f)

lib/metadata/raid_manip.c

index d3e3a209fd63221dd27e425064a0e33e760738ad..3eee77a96ec3952323e1d43242c53a3c1e0e3b83 100644 (file)
@@ -6140,7 +6140,7 @@ static int _set_convenient_raid145610_segtype_to(const struct lv_segment *seg_fr
                        seg_flag = SEG_RAID6_N_6;
 
                if (segtype_is_linear(*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;
 
        /* raid1 -> */
@@ -6209,10 +6209,9 @@ static int _set_convenient_raid145610_segtype_to(const struct lv_segment *seg_fr
                                          lvseg_name(seg_from), display_lvname(seg_from->lv), *new_image_count);
                }
 
-       /* raid4 -> !raid4/raid5* */
-       } else if (seg_is_raid4(seg_from) &&
-                  !segtype_is_raid4(*segtype) && !segtype_is_any_raid5(*segtype)) {
-               seg_flag = SEG_RAID5_N;
+       /* raid4 -> * */
+       } else if (seg_is_raid4(seg_from) && !segtype_is_raid4(*segtype) && !segtype_is_striped(*segtype)) {
+               seg_flag = segtype_is_any_raid6(*segtype) ? SEG_RAID6_N_6 : SEG_RAID5_N;
 
        /* raid6 -> striped/raid0/raid5/raid10 */
        } else if (seg_is_any_raid6(seg_from)) {
This page took 0.039128 seconds and 5 git commands to generate.