ping ---------------- Robert LeBlanc PGP Fingerprint 79A2 9CA4 6CC4 45DD A904 C70E E654 3BB2 FA62 B9F1
On Fri, Feb 24, 2017 at 10:01 AM, Robert LeBlanc <rob...@leblancnet.us> wrote: > On Wed, Jan 25, 2017 at 3:02 PM, Robert LeBlanc <rob...@leblancnet.us> wrote: >> Changes in v3: >> - Fix to return if not out of range instead of breaking out of the >> loop. >> >> Changes in v2: >> - Only continue checking for other metadata versions if we get an out >> of range error and reset grub_errno if we continue. >> >> When a mdadm RAID array is on a drive larger than 2TB, the array is not >> able to be detected and as such even if the array has a partition that >> holds /boot under the 2TB limit, it is unable to boot the machine. This >> is caused by metadata 1.0 being tested first which allocates the >> superblock at the end of the device. When it tries to access the end of >> the device it throws an error and the code returns without trying to >> find the superblock at other locations (metadata 1.1 and 1.2). This >> patch changes the error to not be fatal and allow for the checking for >> the other metadata versions and allowing the machine to boot as long as >> /boot is under the 2TB BIOS limit. This won't cause issues with 1.0 >> metadata because GRUB is able to read the partitions from the front of >> the drive/partition without having to determine the data offset, since >> the data for metadata 1.0 starts at sector 0. >> >> Signed-off-by: Robert LeBlanc <rob...@leblancnet.us> >> --- >> grub-core/disk/mdraid1x_linux.c | 12 +++++++++++- >> 1 file changed, 11 insertions(+), 1 deletion(-) >> >> diff --git a/grub-core/disk/mdraid1x_linux.c >> b/grub-core/disk/mdraid1x_linux.c >> index 7cc80d3df..f0aeb6829 100644 >> --- a/grub-core/disk/mdraid1x_linux.c >> +++ b/grub-core/disk/mdraid1x_linux.c >> @@ -148,7 +148,17 @@ grub_mdraid_detect (grub_disk_t disk, >> >> if (grub_disk_read (disk, sector, 0, sizeof (struct >> grub_raid_super_1x), >> &sb)) >> - return NULL; >> + { >> + if (grub_errno == GRUB_ERR_OUT_OF_RANGE) >> + { >> + grub_errno = GRUB_ERR_NONE; >> + continue; >> + } >> + else >> + { >> + return NULL; >> + } >> + } >> >> if (sb.magic != grub_cpu_to_le32_compile_time (SB_MAGIC) >> || grub_le_to_cpu64 (sb.super_offset) != sector) > > > Does this look okay? I'm not seeing this in patchworks to know what > the status is. > > Thanks, > Robert LeBlanc > ---------------- > Robert LeBlanc > PGP Fingerprint 79A2 9CA4 6CC4 45DD A904 C70E E654 3BB2 FA62 B9F1 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel