commit-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[1733] 2008-07-25 Robert Millan <address@hidden>


From: Robert Millan
Subject: [1733] 2008-07-25 Robert Millan <address@hidden>
Date: Fri, 25 Jul 2008 19:05:07 +0000

Revision: 1733
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=1733
Author:   robertmh
Date:     2008-07-25 19:05:06 +0000 (Fri, 25 Jul 2008)

Log Message:
-----------
2008-07-25  Robert Millan  <address@hidden>

        * util/getroot.c (find_root_device): Skip devices that match
        /dev/dm-[0-9].  This lets the real device be found for any type of
        abstraction (LVM, EVMS, RAID..).
        (grub_guess_root_device): Do not traverse /dev/mapper (for LVM)
        and /dev/evms (for EVMS) before traversing /dev.  If a /dev/dm-[0-9]
        device is found first, find_root_device() will now skip it.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/util/getroot.c

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog       2008-07-24 23:37:22 UTC (rev 1732)
+++ trunk/grub2/ChangeLog       2008-07-25 19:05:06 UTC (rev 1733)
@@ -1,3 +1,12 @@
+2008-07-25  Robert Millan  <address@hidden>
+
+       * util/getroot.c (find_root_device): Skip devices that match
+       /dev/dm-[0-9].  This lets the real device be found for any type of
+       abstraction (LVM, EVMS, RAID..).
+       (grub_guess_root_device): Do not traverse /dev/mapper (for LVM)
+       and /dev/evms (for EVMS) before traversing /dev.  If a /dev/dm-[0-9]
+       device is found first, find_root_device() will now skip it.
+
 2008-07-24  Pavel Roskin  <address@hidden>
 
        * include/grub/types.h: Use __builtin_bswap32() and

Modified: trunk/grub2/util/getroot.c
===================================================================
--- trunk/grub2/util/getroot.c  2008-07-24 23:37:22 UTC (rev 1732)
+++ trunk/grub2/util/getroot.c  2008-07-25 19:05:06 UTC (rev 1733)
@@ -229,6 +229,17 @@
 
       if (S_ISBLK (st.st_mode) && st.st_rdev == dev)
        {
+#ifdef __linux__
+         /* Skip useless device names like /dev/dm-0, which prevent us from
+            finding /dev/mapper/*, /dev/evms/*, /dev/md*, etc.  */
+         if (ent->d_name[0] == 'd' &&
+             ent->d_name[1] == 'm' &&
+             ent->d_name[2] == '-' &&
+             ent->d_name[3] >= '0' &&
+             ent->d_name[3] <= '9')
+           continue;
+#endif
+
          /* Found!  */
          char *res;
          char *cwd;
@@ -358,20 +369,6 @@
   if (stat (dir, &st) < 0)
     grub_util_error ("Cannot stat `%s'", dir);
 
-#ifdef __linux__
-  /* We first try to find the device in the /dev/mapper directory.  If
-     we don't do this, we get useless device names like /dev/dm-0 for
-     LVM.  */
-  os_dev = find_root_device ("/dev/mapper", st.st_dev);
-  if (os_dev)
-    return os_dev;
-
-  /* The same applies to /dev/evms directory (for EVMS volumes).  */
-  os_dev = find_root_device ("/dev/evms", st.st_dev);
-  if (os_dev)
-    return os_dev;
-#endif
-
 #ifdef __CYGWIN__
   /* Cygwin specific function.  */
   os_dev = find_cygwin_root_device (dir, st.st_dev);






reply via email to

[Prev in Thread] Current Thread [Next in Thread]