]> git.proxmox.com Git - grub2.git/commitdiff
2009-07-29 Felix Zielcke <fzielcke@z-51.de>
authorfzielcke <fzielcke@localhost>
Wed, 29 Jul 2009 14:11:50 +0000 (14:11 +0000)
committerfzielcke <fzielcke@localhost>
Wed, 29 Jul 2009 14:11:50 +0000 (14:11 +0000)
* util/deviceiter.c (get_acceleraid_disk_name): New static
function.
(grub_util_iterate_devices): Handle Accelraid devices.
* util/hostdisk.c (convert_system_partition_to_system_disk): Likewise.

ChangeLog
util/deviceiter.c
util/hostdisk.c

index c0bbc3197708f6a14a58baceb621b2f453e806bb..20637036840edfbe4a31f2778cdacd4079a32813 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-07-29  Felix Zielcke  <fzielcke@z-51.de>
+
+       * util/deviceiter.c (get_acceleraid_disk_name): New static
+       function.
+       (grub_util_iterate_devices): Handle Accelraid devices.
+       * util/hostdisk.c (convert_system_partition_to_system_disk): Likewise.
+
 2009-07-28  Robert Millan  <rmh.grub@aybabtu.com>
 
        * loader/i386/linux.c (grub_cmd_linux): Use ',' rather than ';' as
index 6443afa5e3230f3471da91ad96aa167c76ff26ea..b0a9e1388721f832295124f919d413bd9949fa70 100644 (file)
@@ -288,6 +288,12 @@ get_dac960_disk_name (char *name, int controller, int drive)
   sprintf (name, "/dev/rd/c%dd%d", controller, drive);
 }
 
+static void
+get_acceleraid_disk_name (char *name, int controller, int drive)
+{
+  sprintf (name, "/dev/rs/c%dd%d", controller, drive);
+}
+
 static void
 get_ataraid_disk_name (char *name, int unit)
 {
@@ -545,6 +551,27 @@ grub_util_iterate_devices (int NESTED_FUNC_ATTR (*hook) (const char *, int),
       }
   }
 
+  /* This is for Mylex Acceleraid - we have
+     /dev/rd/c<controller>d<logical drive>p<partition>.  */
+  {
+    int controller, drive;
+
+    for (controller = 0; controller < 8; controller++)
+      {
+       for (drive = 0; drive < 15; drive++)
+         {
+           char name[24];
+
+           get_acceleraid_disk_name (name, controller, drive);
+           if (check_device (name))
+             {
+               if (hook (name, 0))
+                 return;
+             }
+         }
+      }
+  }
+
   /* This is for CCISS - we have
      /dev/cciss/c<controller>d<logical drive>p<partition>.  */
   {
index 584269809847bc3ea6a323833286753936c5363a..fdf35148fa64762456cc844ff903bbfbe676c4ab 100644 (file)
@@ -743,6 +743,16 @@ convert_system_partition_to_system_disk (const char *os_dev)
          return path;
        }
 
+      /* If this is a Mylex AcceleRAID Array.  */
+      if (strncmp ("rs/c", p, 4) == 0)
+       {
+         /* /dev/rd/c[0-9]+d[0-9]+(p[0-9]+)? */
+         p = strchr (p, 'p');
+         if (p)
+           *p = '\0';
+
+         return path;
+       }
       /* If this is a CCISS disk.  */
       if (strncmp ("cciss/c", p, sizeof ("cciss/c") - 1) == 0)
        {