grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] add support for Linux MD linear level


From: Andrey Borzenkov
Subject: [PATCH] add support for Linux MD linear level
Date: Sat, 8 Jun 2013 16:40:10 +0400

This appears to be trivial enough and occasionally useful.

It also fixes level translation for 1.x super which was broken
for multipath level as well.

Signed-off-by: Andrey Borzenkov <address@hidden>

---
 ChangeLog                       | 8 ++++++++
 grub-core/disk/mdraid1x_linux.c | 6 +++---
 grub-core/disk/mdraid_linux.c   | 4 ++--
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4d8f343..e4c1980 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-06-08  Andrey Borzenkov <address@hidden>
+
+       * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Support
+       linear level by mapping it to RAID1. Pass correct mapped level
+       to grub_diskfilter_make_raid.
+       * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Support
+       linear level by mapping it to RAID1.
+
 2013-06-07  Andrey Borzenkov <address@hidden>
 
        * grub-core/script/execute.c (grub_script_execute_sourcecode): Split
diff --git a/grub-core/disk/mdraid1x_linux.c b/grub-core/disk/mdraid1x_linux.c
index a0e65a8..3c18c79 100644
--- a/grub-core/disk/mdraid1x_linux.c
+++ b/grub-core/disk/mdraid1x_linux.c
@@ -160,8 +160,8 @@ grub_mdraid_detect (grub_disk_t disk,
 
       level = grub_le_to_cpu32 (sb.level);
 
-      /* Multipath.  */
-      if ((int) level == -4)
+      /* Multipath or linear  */
+      if ((int) level == -4 || (int) level == -1)
        level = 1;
 
       if (level != 0 && level != 1 && level != 4 &&
@@ -207,7 +207,7 @@ grub_mdraid_detect (grub_disk_t disk,
                                         : grub_le_to_cpu64 (sb.data_size),
                                         grub_le_to_cpu32 (sb.chunksize),
                                         grub_le_to_cpu32 (sb.layout),
-                                        grub_le_to_cpu32 (sb.level));
+                                        level);
 
       return array;
     }
diff --git a/grub-core/disk/mdraid_linux.c b/grub-core/disk/mdraid_linux.c
index f408fd3..4e64d72 100644
--- a/grub-core/disk/mdraid_linux.c
+++ b/grub-core/disk/mdraid_linux.c
@@ -216,8 +216,8 @@ grub_mdraid_detect (grub_disk_t disk,
   /* FIXME: Check the checksum.  */
 
   level = grub_md_to_cpu32 (sb.level);
-  /* Multipath.  */
-  if ((int) level == -4)
+  /* Multipath or linear  */
+  if ((int) level == -4 || (int) level == -1)
     level = 1;
 
   if (level != 0 && level != 1 && level != 4 &&
-- 
tg: (ac72fb7..) u/md_linear (depends on: master)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]