From 67bb323a1c4f5587fa5e572bd537f3fe64c344be Mon Sep 17 00:00:00 2001 From: fzielcke Date: Wed, 29 Jul 2009 14:11:50 +0000 Subject: [PATCH] 2009-07-29 Felix Zielcke * 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 | 7 +++++++ util/deviceiter.c | 27 +++++++++++++++++++++++++++ util/hostdisk.c | 10 ++++++++++ 3 files changed, 44 insertions(+) diff --git a/ChangeLog b/ChangeLog index c0bbc3197..206370368 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-07-29 Felix Zielcke + + * 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 * loader/i386/linux.c (grub_cmd_linux): Use ',' rather than ';' as diff --git a/util/deviceiter.c b/util/deviceiter.c index 6443afa5e..b0a9e1388 100644 --- a/util/deviceiter.c +++ b/util/deviceiter.c @@ -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/cdp. */ + { + 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/cdp. */ { diff --git a/util/hostdisk.c b/util/hostdisk.c index 584269809..fdf35148f 100644 --- a/util/hostdisk.c +++ b/util/hostdisk.c @@ -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) {