Blame SOURCES/lvm2-2_02_182-lvconvert-avoid-superfluous-interim-raid-type.patch

0d8a0a
From c43515c7ba1d13d54c92d43b76ca0a661c097292 Mon Sep 17 00:00:00 2001
0d8a0a
From: Heinz Mauelshagen <heinzm@redhat.com>
0d8a0a
Date: Fri, 31 Aug 2018 19:03:52 +0200
0d8a0a
Subject: [PATCH] lvconvert: avoid superfluous interim raid type
0d8a0a
0d8a0a
When converting striped/raid0*/raid6_n_6 <-> raid4,
0d8a0a
avoid superfluous interim raid5_n layout.
0d8a0a
0d8a0a
Related: rhbz1447809
0d8a0a
(cherry picked from commit 22a13043683a5647e8cc4e3aead911e5269ffd2f)
0d8a0a
(cherry picked from commit 0e03c686191b036a7cd6e570888793ddbdd5f958)
0d8a0a
---
0d8a0a
 lib/metadata/raid_manip.c | 9 ++++-----
0d8a0a
 1 file changed, 4 insertions(+), 5 deletions(-)
0d8a0a
0d8a0a
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
0d8a0a
index d3e3a20..3eee77a 100644
0d8a0a
--- a/lib/metadata/raid_manip.c
0d8a0a
+++ b/lib/metadata/raid_manip.c
0d8a0a
@@ -6140,7 +6140,7 @@ static int _set_convenient_raid145610_segtype_to(const struct lv_segment *seg_fr
0d8a0a
 			seg_flag = SEG_RAID6_N_6;
0d8a0a
 
0d8a0a
 		if (segtype_is_linear(*segtype) ||
0d8a0a
-		    (!segtype_is_raid10(*segtype) && !segtype_is_striped(*segtype)))
0d8a0a
+		    (!segtype_is_raid4(*segtype) && !segtype_is_raid10(*segtype) && !segtype_is_striped(*segtype)))
0d8a0a
 			seg_flag = SEG_RAID5_N;
0d8a0a
 
0d8a0a
 	/* raid1 -> */
0d8a0a
@@ -6209,10 +6209,9 @@ static int _set_convenient_raid145610_segtype_to(const struct lv_segment *seg_fr
0d8a0a
 					  lvseg_name(seg_from), display_lvname(seg_from->lv), *new_image_count);
0d8a0a
 		}
0d8a0a
 
0d8a0a
-	/* raid4 -> !raid4/raid5* */
0d8a0a
-	} else if (seg_is_raid4(seg_from) &&
0d8a0a
-		   !segtype_is_raid4(*segtype) && !segtype_is_any_raid5(*segtype)) {
0d8a0a
-		seg_flag = SEG_RAID5_N;
0d8a0a
+	/* raid4 -> * */
0d8a0a
+	} else if (seg_is_raid4(seg_from) && !segtype_is_raid4(*segtype) && !segtype_is_striped(*segtype)) {
0d8a0a
+		seg_flag = segtype_is_any_raid6(*segtype) ? SEG_RAID6_N_6 : SEG_RAID5_N;
0d8a0a
 
0d8a0a
 	/* raid6 -> striped/raid0/raid5/raid10 */
0d8a0a
 	} else if (seg_is_any_raid6(seg_from)) {
0d8a0a
-- 
0d8a0a
1.8.3.1
0d8a0a