[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] 10_linux: avoid multi-device root= kernel argument
From: |
Michael Chang |
Subject: |
Re: [PATCH] 10_linux: avoid multi-device root= kernel argument |
Date: |
Fri, 29 Jan 2016 11:17:42 +0800 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
On Thu, Jan 28, 2016 at 07:46:41PM +0300, Andrei Borzenkov wrote:
> 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 and even if we managed to quote it, kernel does not know how
> to interpret it anyway. Multidev btrfs requires user space device scanning,
> so passing single device would not work too.
>
> This still respects user settings GRUB_DISABLE_LINUX_UUID. Not sure what we
> should do in this case.
>
> Closes: 45709
JFYI, this patch also has verified to solve a reported installation
problem in Btrfs RAID 0 configuration in SUSE Linux. It would be great
to have this patch included in upstream.
Thanks,
Michael
>
> ---
> util/grub.d/10_linux.in | 4 +++-
> util/grub.d/20_linux_xen.in | 4 +++-
> 2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
> index 859b608..5a78513 100644
> --- a/util/grub.d/10_linux.in
> +++ b/util/grub.d/10_linux.in
> @@ -43,9 +43,11 @@ 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 force UUID in this
> case.
> 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
> + || test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm;
> then
> LINUX_ROOT_DEVICE=${GRUB_DEVICE}
> else
> LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
> diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
> index f532fb9..46045db 100644
> --- a/util/grub.d/20_linux_xen.in
> +++ b/util/grub.d/20_linux_xen.in
> @@ -43,9 +43,11 @@ 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 force UUID in this
> case.
> 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
> + || test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm;
> then
> LINUX_ROOT_DEVICE=${GRUB_DEVICE}
> else
> LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
> --
> tg: (ff84a9b..) u/btrfs-multidev (depends on: master)
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel