]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Correctly distinguish mdraid flavours.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 8 Oct 2010 21:27:27 +0000 (23:27 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 8 Oct 2010 21:27:27 +0000 (23:27 +0200)
* grub-core/disk/raid.c (grub_raid_getname) [GRUB_UTIL]: New function.
(insert_array): New argument raid.
* include/grub/disk.h (grub_disk_dev) [GRUB_UTIL]: New member raidname.
* include/grub/raid.h (grub_raid_array) [GRUB_UTIL]: New member driver.
* util/grub-probe.c (probe): PRint raidname instead of plainly "mdraid".

ChangeLog
grub-core/disk/raid.c
include/grub/disk.h
include/grub/raid.h
util/grub-probe.c

index 09b5d5c2973761cf6aff8a74847e78f69b343292..79030343b6c6cc432e5b7accc6357f43a61cac43 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2010-10-08  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Correctly distinguish mdraid flavours.
+
+       * grub-core/disk/raid.c (grub_raid_getname) [GRUB_UTIL]: New function.
+       (insert_array): New argument raid.
+       * include/grub/disk.h (grub_disk_dev) [GRUB_UTIL]: New member raidname.
+       * include/grub/raid.h (grub_raid_array) [GRUB_UTIL]: New member driver.
+       * util/grub-probe.c (probe): PRint raidname instead of plainly "mdraid".
+
 2010-10-09  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/kern/i386/pc/startup.S (grub_console_getkey): Fix incorrect
index 2fd6aa9dec3bcf379f65cf5abff9003a11d4d122..c7c641ebd00e0e8baae1b0b6e20d0ca3f3bfde0b 100644 (file)
@@ -107,6 +107,14 @@ grub_raid_memberlist (grub_disk_t disk)
 
   return list;
 }
+
+static const char *
+grub_raid_getname (struct grub_disk *disk)
+{
+  struct grub_raid_array *array = disk->data;
+
+  return array->driver->name;
+}
 #endif
 
 static grub_err_t
@@ -476,7 +484,8 @@ grub_raid_write (grub_disk_t disk __attribute ((unused)),
 
 static grub_err_t
 insert_array (grub_disk_t disk, struct grub_raid_array *new_array,
-              grub_disk_addr_t start_sector, const char *scanner_name)
+              grub_disk_addr_t start_sector, const char *scanner_name,
+             grub_raid_t raid __attribute__ ((unused)))
 {
   struct grub_raid_array *array = 0, *p;
 
@@ -524,6 +533,9 @@ insert_array (grub_disk_t disk, struct grub_raid_array *new_array,
 
       *array = *new_array;
       array->nr_devs = 0;
+#ifdef GRUB_UTIL
+      array->driver = raid;
+#endif
       grub_memset (&array->device, 0, sizeof (array->device));
       grub_memset (&array->start_sector, 0, sizeof (array->start_sector));
 
@@ -662,7 +674,8 @@ grub_raid_register (grub_raid_t raid)
 
       if ((disk->total_sectors != GRUB_ULONG_MAX) &&
          (! grub_raid_list->detect (disk, &array, &start_sector)) &&
-         (! insert_array (disk, &array, start_sector, grub_raid_list->name)))
+         (! insert_array (disk, &array, start_sector, grub_raid_list->name,
+                          grub_raid_list)))
        return 0;
 
       /* This error usually means it's not raid, no need to display
@@ -706,6 +719,7 @@ static struct grub_disk_dev grub_raid_dev =
     .write = grub_raid_write,
 #ifdef GRUB_UTIL
     .memberlist = grub_raid_memberlist,
+    .raidname = grub_raid_getname,
 #endif
     .next = 0
   };
index 9c5653e0041a58be8bac9653835ba69856975a01..66db1149a4394810d29ebce9c35cbfb5169a2341 100644 (file)
@@ -78,6 +78,7 @@ struct grub_disk_dev
 
 #ifdef GRUB_UTIL
   struct grub_disk_memberlist *(*memberlist) (struct grub_disk *disk);
+  const char * (*raidname) (struct grub_disk *disk);
 #endif
 
   /* The next disk device.  */
index 711a7f79c2c85f47fb7605a6e0e7c3aaf978f98f..b7e18b56758087c9b3d99cb8aaed49f91324aeec 100644 (file)
@@ -54,6 +54,10 @@ struct grub_raid_array
   grub_disk_addr_t start_sector[GRUB_RAID_MAX_DEVICES];
                           /* Start of each device, in 512 byte sectors. */
   struct grub_raid_array *next;
+
+#ifdef GRUB_UTIL
+  struct grub_raid *driver;
+#endif
 };
 
 struct grub_raid
index b92d301f0334c86542511a212370a15e03efb3be..1d00a7db3c26b6f9c243393df8dc7326ed04e648 100644 (file)
@@ -175,7 +175,8 @@ probe (const char *path, char *device_name)
            printf ("raid5rec ");
          if (is_raid6)
            printf ("raid6rec ");
-         printf ("mdraid ");
+         if (dev->disk->dev->raidname)
+           printf ("%s ", dev->disk->dev->raidname (dev->disk));
        }
 
       if (is_lvm)