]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/kern/emu/getroot.c (grub_util_get_grub_dev): Check md/%s
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 4 Jan 2011 17:15:27 +0000 (18:15 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 4 Jan 2011 17:15:27 +0000 (18:15 +0100)
names.
Reported by: David Pravec.

ChangeLog
grub-core/kern/emu/getroot.c

index f3fa4d4c034b819f5e650e3546d780a069b6a093..bba94dfd9d432ca01b3b13fa2ffe6c2592da6bf8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-01-04  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/kern/emu/getroot.c (grub_util_get_grub_dev): Check md/%s
+       names.
+       Reported by: David Pravec.
+
 2011-01-04  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/disk/i386/pc/biosdisk.c (GRUB_MOD_INIT): Workaround buggy
index f51dcd7707432dfc28fd6cca19f3d6271c93ab39..5356685e978a7ea79f027bf344d758252a782edb 100644 (file)
@@ -794,11 +794,18 @@ grub_util_get_grub_dev (const char *os_dev)
 #ifdef __linux__
       {
        char *mdadm_name = get_mdadm_name (os_dev);
+       struct stat st;
 
        if (mdadm_name)
          {
-           free (grub_dev);
-           grub_dev = xasprintf ("md/%s", mdadm_name);
+           char *newname;
+           newname = xasprintf ("/dev/md/%s", mdadm_name);
+           if (stat (newname, &st) == 0)
+             {
+               free (grub_dev);
+               grub_dev = xasprintf ("md/%s", mdadm_name);
+             }
+           free (newname);
            free (mdadm_name);
          }
       }