2008-05-07 Robert Millan <rmh@aybabtu.com>

* util/biosdisk.c (linux_find_partition, get_os_disk): Handle CCISS
        devices.
        * util/grub-mkdevicemap.c (get_cciss_disk_name)
        (make_device_map): Likewise.
        Reported by Roland Dreier <rdreier@cisco.com>
This commit is contained in:
robertmh 2008-05-07 20:28:26 +00:00
parent 7f8866edc1
commit b56c4eaa3f
3 changed files with 62 additions and 1 deletions

View file

@ -233,7 +233,7 @@ linux_find_partition (char *dev, unsigned long sector)
p = real_dev + 8;
format = "%d";
}
else if (strncmp (real_dev + 5, "rd/c", 4) == 0)
else if (strncmp (real_dev + 5, "rd/c", 4) == 0) /* dac960 */
{
p = strchr (real_dev + 9, 'd');
if (! p)
@ -243,6 +243,18 @@ linux_find_partition (char *dev, unsigned long sector)
while (*p && isdigit (*p))
p++;
format = "p%d";
}
else if (strncmp (real_dev + 5, "cciss/c", sizeof("cciss/c")-1) == 0)
{
p = strchr (real_dev + 5 + sizeof("cciss/c")-1, 'd');
if (! p)
return 0;
p++;
while (*p && isdigit (*p))
p++;
format = "p%d";
}
else
@ -645,6 +657,17 @@ get_os_disk (const char *os_dev)
return path;
}
/* If this is a CCISS disk. */
if (strncmp ("cciss/c", p, sizeof ("cciss/c") - 1) == 0)
{
/* /dev/cciss/c[0-9]+d[0-9]+(p[0-9]+)? */
p = strchr (p, 'p');
if (p)
*p = '\0';
return path;
}
/* If this is an IDE disk or a SCSI disk. */
if ((strncmp ("hd", p, 2) == 0
|| strncmp ("sd", p, 2) == 0)