]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/disk/diskfilter.c (insert_array): Fix order to discover
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 7 Jun 2013 13:41:10 +0000 (15:41 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 7 Jun 2013 13:41:10 +0000 (15:41 +0200)
ambigouos RAID before discovering RAIDs on top of it.
Reported by: bodom.

ChangeLog
grub-core/disk/diskfilter.c

index fa6c165d7df1a55938c8ac67249c6c090581cb9d..7a8391789227589908f59802e550e6581f118566 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-06-07  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/disk/diskfilter.c (insert_array): Fix order to discover
+       ambigouos RAID before discovering RAIDs on top of it.
+       Reported by: bodom.
+
 2013-06-07  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Fix typo (failback vs fallback).
index c4eb97eb7bdba11fb6b5e152c2849c78ca76e09d..c8d267a6b589fb7e0f616fce9e627730c711c3d3 100644 (file)
@@ -1045,10 +1045,14 @@ insert_array (grub_disk_t disk, const struct grub_diskfilter_pv_id *id,
 {
   struct grub_diskfilter_pv *pv;
 
-  grub_dprintf ("diskfilter", "Inserting %s into %s (%s)\n", disk->name,
+  grub_dprintf ("diskfilter", "Inserting %s (+%lld,%lld) into %s (%s)\n", disk->name,
+               (unsigned long long) grub_partition_get_start (disk->partition),
+               (unsigned long long) grub_disk_get_size (disk),
                array->name, diskfilter->name);
 #ifdef GRUB_UTIL
-  grub_util_info ("Inserting %s into %s (%s)\n", disk->name,
+  grub_util_info ("Inserting %s (+%lld,%lld) into %s (%s)\n", disk->name,
+                 (unsigned long long) grub_partition_get_start (disk->partition),
+                 (unsigned long long) grub_disk_get_size (disk),
                  array->name, diskfilter->name);
   array->driver = diskfilter;
 #endif
@@ -1092,14 +1096,7 @@ insert_array (grub_disk_t disk, const struct grub_diskfilter_pv_id *id,
        /* Add the device to the array. */
        for (lv = array->lvs; lv; lv = lv->next)
          if (!lv->became_readable_at && lv->fullname && is_lv_readable (lv, 0))
-           {
-             lv->became_readable_at = ++inscnt;
-             if (is_lv_readable (lv, 1))
-               {
-                 scan_disk (lv->fullname, 1);
-                 lv->scanned = 1;
-               }
-           }
+           lv->became_readable_at = ++inscnt;
        break;
       }