]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Fix LVM-on-RAID probing.
authorColin Watson <cjwatson@ubuntu.com>
Fri, 26 Nov 2010 12:26:37 +0000 (12:26 +0000)
committerColin Watson <cjwatson@ubuntu.com>
Fri, 26 Nov 2010 12:26:37 +0000 (12:26 +0000)
* util/grub-probe.c (probe): Remember which disk was detected as
RAID (perhaps an LVM physical volume).  Use that disk's raidname
rather than that of the top-level disk.

ChangeLog
util/grub-probe.c

index 05bf3b270177c481269c6589e5338486a731521d..f9e24a808ba0b8ab9abcf6b3c59e1bb29f1cb74a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-11-26  Colin Watson  <cjwatson@ubuntu.com>
+
+       Fix LVM-on-RAID probing.
+
+       * util/grub-probe.c (probe): Remember which disk was detected as
+       RAID (perhaps an LVM physical volume).  Use that disk's raidname
+       rather than that of the top-level disk.
+
 2010-11-25  BVK Chaitanya  <bvk.groups@gmail.com>
 
        Fix cmdline argument quotes for setparams command of menuentry
index 1d00a7db3c26b6f9c243393df8dc7326ed04e648..0d5dac9021df260df50884d2271f1445c2b8155b 100644 (file)
@@ -142,6 +142,7 @@ probe (const char *path, char *device_name)
       int is_raid5 = 0;
       int is_raid6 = 0;
       int raid_level;
+      grub_disk_t raid_disk;
 
       raid_level = probe_raid_level (dev->disk);
       if (raid_level >= 0)
@@ -149,6 +150,7 @@ probe (const char *path, char *device_name)
          is_raid = 1;
          is_raid5 |= (raid_level == 5);
          is_raid6 |= (raid_level == 6);
+         raid_disk = dev->disk;
        }
 
       if ((is_lvm) && (dev->disk->dev->memberlist))
@@ -161,6 +163,7 @@ probe (const char *path, char *device_name)
              is_raid = 1;
              is_raid5 |= (raid_level == 5);
              is_raid6 |= (raid_level == 6);
+             raid_disk = list->disk;
            }
 
          tmp = list->next;
@@ -175,8 +178,8 @@ probe (const char *path, char *device_name)
            printf ("raid5rec ");
          if (is_raid6)
            printf ("raid6rec ");
-         if (dev->disk->dev->raidname)
-           printf ("%s ", dev->disk->dev->raidname (dev->disk));
+         if (raid_disk->dev->raidname)
+           printf ("%s ", raid_disk->dev->raidname (raid_disk));
        }
 
       if (is_lvm)