]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Skip
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 14 Jan 2012 10:37:34 +0000 (11:37 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 14 Jan 2012 10:37:34 +0000 (11:37 +0100)
disks with unknown size.
* grub-core/disk/raid.c (scan_devices): Allow disks with unknown sizes.

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

index 80c774256005a74e357ec9fb39619dea0bd09dbc..28cb5d79204a3d356feada3be87d3d0d5b3040fc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Skip
+       disks with unknown size.
+       * grub-core/disk/raid.c (scan_devices): Allow disks with unknown sizes.
+
 2012-01-14  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Remove defines pertaining to arbitrary limits not affecting GRUB
index 154193eb0372ff0898e4e8c4d1f34290354618af..08600519a44a36db0d08cf7fcc2f28e6a1a3b566 100644 (file)
@@ -100,8 +100,10 @@ grub_dmraid_nv_detect (grub_disk_t disk, struct grub_raid_array *array,
   if (disk->partition)
     return grub_error (GRUB_ERR_OUT_OF_RANGE, "skip partition");
 
-  sector = grub_disk_get_size (disk) - 2;
-
+  sector = grub_disk_get_size (disk);
+  if (sector == GRUB_DISK_SIZE_UNKNOWN)
+    return grub_error (GRUB_ERR_OUT_OF_RANGE, "not raid");
+  sector -= 2;
   if (grub_disk_read (disk, sector, 0, sizeof (sb), &sb))
     return grub_errno;
 
index db1e969b31ff1926f851f550b677b53968d772e3..490cfa92af2c8acf31430400c5c61979904f18fe 100644 (file)
@@ -131,8 +131,7 @@ scan_devices (const char *arname)
              }
        }
 
-      if ((disk->total_sectors != GRUB_ULONG_MAX) &&
-         (! raid->detect (disk, &array, &start_sector)) &&
+      if ((! raid->detect (disk, &array, &start_sector)) &&
          (! insert_array (disk, &array, start_sector, raid->name,
                           raid)))
        return 0;