From 62b47f220af0801acafbf328b04c51ed6e3814ae Mon Sep 17 00:00:00 2001 From: Felix Zielcke Date: Tue, 24 Nov 2009 08:20:48 +0100 Subject: [PATCH] 2009-11-24 Felix Zielcke * util/getroot.c (grub_util_is_dmraid): New function. (grub_util_get_dev_abstraction): Treat dmraid and multipath devices as normal ones, not as LVM. --- ChangeLog | 6 ++++++ util/getroot.c | 30 +++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index decef53b0..b7887190d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-11-24 Felix Zielcke + + * util/getroot.c (grub_util_is_dmraid): New function. + (grub_util_get_dev_abstraction): Treat dmraid and multipath + devices as normal ones, not as LVM. + 2009-11-23 Robert Millan * po/id.po: New file. diff --git a/util/getroot.c b/util/getroot.c index 2915ab4f2..da78bc375 100644 --- a/util/getroot.c +++ b/util/getroot.c @@ -460,13 +460,41 @@ grub_guess_root_device (const char *dir) return os_dev; } +int +grub_util_is_dmraid (const char *os_dev) +{ + if (! strncmp (os_dev, "/dev/mapper/nvidia_", 19)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/isw_", 16)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/hpt37x_", 19)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/hpt45x_", 19)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/via_", 16)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/lsi_", 16)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/pdc_", 16)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/jmicron_", 20)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/asr_", 16)) + return 1; + else if (! strncmp (os_dev, "/dev/mapper/sil_", 16)) + return 1; + + return 0; +} int grub_util_get_dev_abstraction (const char *os_dev UNUSED) { #ifdef __linux__ /* Check for LVM. */ - if (!strncmp (os_dev, "/dev/mapper/", 12)) + if (!strncmp (os_dev, "/dev/mapper/", 12) + && ! grub_util_is_dmraid (os_dev) + && strncmp (os_dev, "/dev/mapper/mpath" != 0) return GRUB_DEV_ABSTRACTION_LVM; /* Check for RAID. */