From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Jl5GZ-0005Qb-Rl for mharc-grub-devel@gnu.org; Sun, 13 Apr 2008 12:41:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Jl5GY-0005Ox-6j for grub-devel@gnu.org; Sun, 13 Apr 2008 12:41:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Jl5GT-0005IX-1G for grub-devel@gnu.org; Sun, 13 Apr 2008 12:41:17 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Jl5GS-0005He-Bi for grub-devel@gnu.org; Sun, 13 Apr 2008 12:41:12 -0400 Received: from aybabtu.com ([69.60.117.155]) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Jl5GR-0000x7-QJ for grub-devel@gnu.org; Sun, 13 Apr 2008 12:41:12 -0400 Received: from [192.168.10.6] (helo=thorin) by aybabtu.com with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from ) id 1Jl5GP-0006mN-GS; Sun, 13 Apr 2008 18:41:10 +0200 Received: from rmh by thorin with local (Exim 4.63) (envelope-from ) id 1Jl5G0-0001Q9-A3; Sun, 13 Apr 2008 18:40:44 +0200 Date: Sun, 13 Apr 2008 18:40:44 +0200 From: Robert Millan To: Guntsche Michael Message-ID: <20080413164044.GA29656@thorin> References: <20080413150426.GB25883@thorin> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="huq684BweRXVnRxX" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Organization: free as in freedom X-Message-Flag: Worried about Outlook viruses? Switch to Thunderbird! www.mozilla.com/thunderbird X-Debbugs-No-Ack: true User-Agent: Mutt/1.5.13 (2006-08-11) X-detected-kernel: by monty-python.gnu.org: Genre and OS details not recognized. Cc: The development of GRUB 2 Subject: Re: [PATCH] Fix prefix problem with LVM on RAID X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Apr 2008 16:41:18 -0000 --huq684BweRXVnRxX Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Sun, Apr 13, 2008 at 06:07:22PM +0200, Guntsche Michael wrote: > > On Apr 13, 2008, at 17:04, Robert Millan wrote: > >On Sat, Feb 23, 2008 at 09:54:35PM +0100, Michael Guntsche wrote: > >>Hello, > >> > >>While testing a soon to be deployed setup here I noticed that grub- > >>setup is setting the prefix wrong if you run > >>LVM on Software RAID > >> > >>grub-setup -v /dev/md0 > >>... > >>grub-setup: info: dos partition is -2, bsd partition is -2, prefix is > >>(md0)(fatoftheland-main)/boot/grub > >>... > >> > >>As you can see the there is also (md0) in the prefix which does not > >>work. > >>Attached a small patch that fixes this problem for me. I am not sure > >>if it is the best way to fix it so please take a look. > >>If the root device is on LVM only add the LVM part if it is on RAID > >>only add the RAID part. > > > >Sorry for the delay in repliing. I think it's more correct this > >way. Does > >it work for you? > > Hello Robert, > > Take a look at the for loop later on in the MD case, that is not being > called with your patch. > The code gets all RAID disks and calls setup on each of them. I do not > think the setup call further down is doing the same thing, haven't > checked it though. With my patch "setup" is still called for each RAID > member with the correct prefix. In the case of a faulty disk you can > still boot from the degraded array, by choosing a different disk. Ok, second try. -- Robert Millan I know my rights; I want my phone call! What use is a phone call… if you are unable to speak? (as seen on /.) --huq684BweRXVnRxX Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="raid.diff" * util/i386/pc/grub-setup.c (main): When LVM is used on top of RAID, don't prepend the RAID device in setup()'s `prefix'. diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/util/i386/pc/grub-setup.c ./util/i386/pc/grub-setup.c --- ../grub2/util/i386/pc/grub-setup.c 2008-02-19 15:00:11.000000000 +0100 +++ ./util/i386/pc/grub-setup.c 2008-04-13 18:36:42.000000000 +0200 @@ -609,7 +609,7 @@ main (int argc, char *argv[]) char *root_dev = 0; char *prefix; char *dest_dev; - int must_embed = 0; + int root_in_lvm = 0; progname = "grub-setup"; @@ -741,7 +741,7 @@ main (int argc, char *argv[]) if (grub_util_lvm_isvolume (root_dev)) { char *newprefix; - must_embed = 1; + root_in_lvm = 1; newprefix = xmalloc (1 + strlen (root_dev) + 1 + strlen (prefix) + 1); sprintf (newprefix, "(%s)%s", root_dev, prefix); @@ -753,25 +753,26 @@ main (int argc, char *argv[]) && dest_dev[2] >= '0' && dest_dev[2] <= '9') { char **devicelist; - char *raid_prefix; int i; - raid_prefix = xmalloc (1 + strlen (dest_dev) + 1 + strlen (prefix) + 1); + if (! root_in_lvm) + { + char *newprefix = xmalloc (1 + strlen (dest_dev) + 1 + strlen (prefix) + 1); + sprintf (newprefix, "(%s)%s", dest_dev, prefix); + free (prefix); + prefix = newprefix; + } - sprintf (raid_prefix, "(%s)%s", dest_dev, prefix); - devicelist = grub_util_raid_getmembers (dest_dev); for (i = 0; devicelist[i]; i++) { - setup (raid_prefix, + setup (prefix, dir ? : DEFAULT_DIRECTORY, boot_file ? : DEFAULT_BOOT_FILE, core_file ? : DEFAULT_CORE_FILE, root_dev, grub_util_get_grub_dev (devicelist[i]), 1); } - - free (raid_prefix); } else #endif @@ -780,7 +781,7 @@ main (int argc, char *argv[]) dir ? : DEFAULT_DIRECTORY, boot_file ? : DEFAULT_BOOT_FILE, core_file ? : DEFAULT_CORE_FILE, - root_dev, dest_dev, must_embed); + root_dev, dest_dev, root_in_lvm); /* Free resources. */ grub_fini_all (); --huq684BweRXVnRxX--