From: Tim Walberg <twalberg@comcast.net>
To: Andrei Borzenkov <arvidjaar@gmail.com>
Cc: bug-grub@gnu.org, grub-devel@gnu.org, Tim Walberg <twalberg@comcast.net>
Subject: Re: [BUG] grub-install fails on devices with high minor numbers
Date: Fri, 6 Nov 2015 13:59:48 -0600 [thread overview]
Message-ID: <20151106195948.GR4710@comcast.net> (raw)
In-Reply-To: <563CF0B9.6090202@gmail.com>
On 11/06/2015 21:26 +0300, Andrei Borzenkov wrote:
>> 06.11.2015 19:08, Tim Walberg ??????????:
>> >On some relatively large systems that are used for virtualization,
>> >often containing upwards of 100 virtual machines, we've started running
>> >into issues with GRUB not being able to install on a new virtual machine
>> >(using the typical process of mounting all the VM file systems on the host
>> >and running grub-install under chroot). We've tracked the issue down to this
>> >code, which is clearly erroneous - device minor numbers have been more than
>> >8 bits for quite some time now - in grub-core/osdep/devmapper/getroot.c:
>> >
>> > char *
>> > grub_util_devmapper_part_to_disk (struct stat *st,
>> > int *is_part, const char *path)
>> > {
>> > int major, minor;
>> >
>> > if (grub_util_get_dm_node_linear_info (st->st_rdev,
>> > &major, &minor, 0))
>> > {
>> > *is_part = 1;
>> > return grub_find_device ("/dev",
>> > (major << 8) | minor); <<<<< --------- ERROR!
>> > }
>> > *is_part = 0;
>> > return xstrdup (path);
>> > }
>> >
>> >When we have enough device-mapper devices (including all their partitions)
>> >on a host that the next newly-added set of devices ends up with minor numbers
>> >outside the 8-bit range, this code fails, with the result that grub-install
>> >can't find the devices that it needs to complete the install.
>> >
>> >There might be other places in the code where similar assumptions are made.
>> >Someone more familiar with the code would probably be better for tracking
>> >those down. But, this one at least needs to be fixed.
>> >
>>
>>
>> Does attached patch help?
>> From: Andrei Borzenkov <arvidjaar@gmail.com>
>> Subject: [PATCH] devmapper/getroot: use makedev instead of direct shift
>>
>> Fixes device detection with large number of devices.
>>
>> Reported by Tim Wallberg <twalberg@comcast.net>
>>
>> ---
>> grub-core/osdep/devmapper/getroot.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/grub-core/osdep/devmapper/getroot.c b/grub-core/osdep/devmapper/getroot.c
>> index 0a77a04..64419f6 100644
>> --- a/grub-core/osdep/devmapper/getroot.c
>> +++ b/grub-core/osdep/devmapper/getroot.c
>> @@ -208,8 +208,7 @@ grub_util_devmapper_part_to_disk (struct stat *st,
>> &major, &minor, 0))
>> {
>> *is_part = 1;
>> - return grub_find_device ("/dev",
>> - (major << 8) | minor);
>> + return grub_find_device ("/dev", makedev (major, minor));
>> }
>> *is_part = 0;
>> return xstrdup (path);
>> --
>> tg: (cd6d79c..) u/makedev (depends on: master)
End of included message
Yes, that appears to have resolved the issue. I was already testing essentially
that patch on my own, but wasn't sure if there might be similar assumptions
made elsewhere in the code. This single fix handles at least the use case we
were having issues with.
Thanks!
tw
--
twalberg@gmail.com
next prev parent reply other threads:[~2015-11-06 22:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20151106160813.GP4710@comcast.net>
2015-11-06 18:26 ` [BUG] grub-install fails on devices with high minor numbers Andrei Borzenkov
2015-11-06 19:59 ` Tim Walberg [this message]
2015-11-07 6:48 ` Andrei Borzenkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151106195948.GR4710@comcast.net \
--to=twalberg@comcast.net \
--cc=arvidjaar@gmail.com \
--cc=bug-grub@gnu.org \
--cc=grub-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.