From: Andrei Borzenkov <arvidjaar@gmail.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Cc: buffer.g.overflow@gmail.com
Subject: Re: does grub understand LVM raid1 layouts?
Date: Sat, 27 Sep 2014 13:00:17 +0400 [thread overview]
Message-ID: <20140927130017.0d63a534@opensuse.site> (raw)
In-Reply-To: <CAB=GcTL+=4NWTxBw1Tq_tLVmFA-zf0O20tPdwkeS4PY_S-=e4Q@mail.gmail.com>
В Thu, 28 Aug 2014 14:31:30 +0100
Bayard Bell <buffer.g.overflow@gmail.com> пишет:
> In moving my boot device to mirrored LVM under Debian jessie, I ended up
> unable to boot. I thought my problem was that I failed to run install-grub
> after adding GRUB_PRELOAD_MODULES=lvm to /etc/default/grub, but when I
> finally sorted out a working PXE image for rescue, I found that I was
> unable to install while mirrored. That appears to be in part because Debian
> has taken upgrades to LVM2 that change the default mirroring layout from
> "mirror" to "raid1" (mirror_segtype_default = "raid1" in /etc/lvm/lvm.conf;
> the lvm pages are also clear on this distinction and the defaults), which
> results in an inability to successfully probe /boot/grub, which breaks
> grub-install. The clearest indication I could find of this as likely root
> cause was a debug message from grub-probe "Unknown LVM format raid1".
> Looking at the source head, it appears that there's first a check for raidX
> in lines 580-583 of grub-core/disk/lvm.c but that the subsequent switch at
> lines 587-600 provides for raid[456] but not raid1, which isn't defined in
> include/grub/diskfilter.h.
>
> I'm looking at doing a bit more debug to confirm this before assessing fix
> options, but am I on the right track thus far?
>
It turned out more straightforward than expected. Could you test patch
below? Lightly tested in user space using grub-probe and grub-fstest
(also in degraded mode).
From: Andrei Borzenkov <arvidjaar@gmail.com>
Subject: [PATCH] add LVM RAID1 support
---
grub-core/disk/lvm.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/grub-core/disk/lvm.c b/grub-core/disk/lvm.c
index 862a966..18aca81 100644
--- a/grub-core/disk/lvm.c
+++ b/grub-core/disk/lvm.c
@@ -577,13 +577,17 @@ grub_lvm_detect (grub_disk_t disk,
if (is_pvmove)
seg->node_count = 1;
}
- else if (grub_memcmp (p, "raid", sizeof ("raid") - 1)
- == 0 && (p[sizeof ("raid") - 1] >= '4'
- && p[sizeof ("raid") - 1] <= '6')
+ else if (grub_memcmp (p, "raid", sizeof ("raid") - 1) == 0
+ && ((p[sizeof ("raid") - 1] >= '4'
+ && p[sizeof ("raid") - 1] <= '6')
+ || p[sizeof ("raid") - 1] == '1')
&& p[sizeof ("raidX") - 1] == '"')
{
switch (p[sizeof ("raid") - 1])
{
+ case '1':
+ seg->type = GRUB_DISKFILTER_MIRROR;
+ break;
case '4':
seg->type = GRUB_DISKFILTER_RAID4;
seg->layout = GRUB_RAID_LAYOUT_LEFT_ASYMMETRIC;
@@ -608,16 +612,18 @@ grub_lvm_detect (grub_disk_t disk,
goto lvs_segment_fail;
}
- seg->stripe_size = grub_lvm_getvalue (&p, "stripe_size = ");
- if (p == NULL)
+ if (seg->type != GRUB_DISKFILTER_MIRROR)
{
+ seg->stripe_size = grub_lvm_getvalue (&p, "stripe_size = ");
+ if (p == NULL)
+ {
#ifdef GRUB_UTIL
- grub_util_info ("unknown stripe_size\n");
+ grub_util_info ("unknown stripe_size\n");
#endif
- goto lvs_segment_fail;
+ goto lvs_segment_fail;
+ }
}
-
seg->nodes = grub_zalloc (sizeof (seg->nodes[0])
* seg->node_count);
@@ -625,7 +631,7 @@ grub_lvm_detect (grub_disk_t disk,
if (p == NULL)
{
#ifdef GRUB_UTIL
- grub_util_info ("unknown mirrors\n");
+ grub_util_info ("unknown raids\n");
#endif
goto lvs_segment_fail2;
}
--
tg: (77063f4..) u/lvm-raid1 (depends on: master)
prev parent reply other threads:[~2014-09-27 9:00 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-28 13:31 does grub understand LVM raid1 layouts? Bayard Bell
2014-08-28 15:49 ` Andrei Borzenkov
2014-09-27 9:00 ` Andrei Borzenkov [this message]
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=20140927130017.0d63a534@opensuse.site \
--to=arvidjaar@gmail.com \
--cc=buffer.g.overflow@gmail.com \
--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.