grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] 10_linux: avoid multi-device root= kernel argument
@ 2016-01-02 12:30 Andrei Borzenkov
  0 siblings, 0 replies; 9+ messages in thread
From: Andrei Borzenkov @ 2016-01-02 12:30 UTC (permalink / raw)
  To: grub-devel; +Cc: jamespharvey20

If root filesystem is multidev btrfs, do not attempt to pass all devices as
kernel root= argument. This results in splitting command line in GRUB due to
embedded newline. Multidev btrfs requires user space device scanning,
so passing single device makes no sense as well.

It means we may end up without any root= argument if either UUIDs are
not available or user explicitly disabled them.

Closes: 45709

---
 util/grub.d/10_linux.in     | 7 ++++++-
 util/grub.d/20_linux_xen.in | 7 ++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index 859b608..a3a4624 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -43,10 +43,15 @@ case ${GRUB_DEVICE} in
   ;;
 esac
 
+# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
+# and mounting btrfs requires user space scanning, so leave root= empty in this case.
+# We hope that whatever initramfs is used knows how to mount root.
 if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
     || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
     || uses_abstraction "${GRUB_DEVICE}" lvm; then
-  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+  if test -e "${GRUB_DEVICE}" ; then
+    LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+  fi
 else
   LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
 fi
diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
index f532fb9..761d289 100644
--- a/util/grub.d/20_linux_xen.in
+++ b/util/grub.d/20_linux_xen.in
@@ -43,10 +43,15 @@ case ${GRUB_DEVICE} in
   ;;
 esac
 
+# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
+# and mounting btrfs requires user space scanning, so leave root= empty in this case.
+# We hope that whatever initramfs is used knows how to mount root.
 if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
     || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
     || uses_abstraction "${GRUB_DEVICE}" lvm; then
-  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+  if test -e "${GRUB_DEVICE}" ; then
+    LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+  fi
 else
   LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
 fi
-- 
tg: (ba83ed1..) u/btrfs-multidev (depends on: master)


^ permalink raw reply related	[flat|nested] 9+ messages in thread
[parent not found: <CAC+fKQW3LZDiuuEiGqWzK8Zkk=eRvJNs02LmEC9Y8v_M8OGrbQ@mail.gmail.com>]

end of thread, other threads:[~2016-02-01 17:16 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-02 12:30 [PATCH] 10_linux: avoid multi-device root= kernel argument Andrei Borzenkov
     [not found] <CAC+fKQW3LZDiuuEiGqWzK8Zkk=eRvJNs02LmEC9Y8v_M8OGrbQ@mail.gmail.com>
2016-01-28 16:46 ` Andrei Borzenkov
2016-01-29  3:17   ` Michael Chang
2016-01-29  8:54   ` Olaf Hering
2016-01-29  8:57     ` Andrei Borzenkov
2016-01-29 16:23       ` Olaf Hering
2016-01-29 17:36         ` Andrei Borzenkov
2016-01-31 21:17   ` Juan Orti Alcaine
2016-02-01 17:16     ` Andrei Borzenkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).