]> git.proxmox.com Git - grub2.git/commitdiff
* grub-core/disk/raid.c (scan_devices): Check partition.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 28 Oct 2011 13:52:15 +0000 (15:52 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 28 Oct 2011 13:52:15 +0000 (15:52 +0200)
* grub-core/disk/lvm.c (do_lvm_scan): Likewise.

ChangeLog
grub-core/disk/lvm.c
grub-core/disk/raid.c

index cfb00531a2911b67190ff3cece3bf35ba6df63c8..d2fc4ba8438fe6e7190b6a2487b52aa185a8deb5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-28  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/disk/raid.c (scan_devices): Check partition.
+       * grub-core/disk/lvm.c (do_lvm_scan): Likewise.
+
 2011-10-27  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Support BFS (befs) UUID.
index 7c19f08de1d2e2495c6b04209b0bcca804292b77..7c65db4ab12fe40d6a03ba77696589f9ccadb07e 100644 (file)
@@ -23,6 +23,7 @@
 #include <grub/err.h>
 #include <grub/misc.h>
 #include <grub/lvm.h>
+#include <grub/partition.h>
 
 #ifdef GRUB_UTIL
 #include <grub/emu/misc.h>
@@ -153,7 +154,11 @@ do_lvm_scan (const char *scan_for)
     for (vg = vg_list; vg; vg = vg->next)
       for (pv = vg->pvs; pv; pv = pv->next)
        if (pv->disk && pv->disk->id == disk->id
-           && pv->disk->dev->id == disk->dev->id)
+           && pv->disk->dev->id == disk->dev->id
+           && grub_partition_get_start (pv->disk->partition)
+           == grub_partition_get_start (disk->partition)
+           && grub_partition_get_len (pv->disk->partition)
+           == grub_partition_get_len (disk->partition))
          {
            grub_disk_close (disk);
            return 0;
index 5d8326dafb97560d1dc40494f0a61dc23c6754ab..07249eabc3c34a601fd3c74db029207521a5b087 100644 (file)
@@ -23,6 +23,7 @@
 #include <grub/err.h>
 #include <grub/misc.h>
 #include <grub/raid.h>
+#include <grub/partition.h>
 #ifdef GRUB_UTIL
 #include <grub/util/misc.h>
 #endif
@@ -119,7 +120,11 @@ scan_devices (const char *arname)
          struct grub_raid_member *m;
          for (m = arr->members; m < arr->members + arr->nr_devs; m++)
            if (m->device && m->device->id == disk->id
-               && m->device->dev->id == m->device->dev->id)
+               && m->device->dev->id == m->device->dev->id
+               && grub_partition_get_start (m->device->partition)
+               == grub_partition_get_start (disk->partition)
+               && grub_partition_get_len (m->device->partition)
+               == grub_partition_get_len (disk->partition))
              {
                grub_disk_close (disk);
                return 0;