grub-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]