* 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 ();