Always declare path specification in case of inconsistent declaration elsewhere. (bsc#1209165) --- util/grub-mkconfig.in | 3 ++- util/grub-mkconfig_lib.in | 4 ++++ util/grub.d/00_header.in | 23 ++++++++++++++++++++++- util/grub.d/10_linux.in | 11 ++++++++++- util/grub.d/20_linux_xen.in | 4 ++++ 5 files changed, 42 insertions(+), 3 deletions(-) --- a/util/grub-mkconfig_lib.in +++ b/util/grub-mkconfig_lib.in @@ -49,7 +49,11 @@ make_system_path_relative_to_its_root () { + if [ "x${SUSE_BTRFS_SNAPSHOT_BOOTING}" = "xtrue" ] ; then + "${grub_mkrelpath}" -r "$1" + else "${grub_mkrelpath}" "$1" + fi } is_path_readable_by_grub () --- a/util/grub.d/00_header.in +++ b/util/grub.d/00_header.in @@ -27,6 +27,21 @@ . "$pkgdatadir/grub-mkconfig_lib" +if [ "x${SUSE_BTRFS_SNAPSHOT_BOOTING}" = "xtrue" ] && + [ "x${GRUB_FS}" = "xbtrfs" ] ; then + cat </dev/null || true` @@ -295,7 +299,12 @@ if [ $PLATFORM != "emu" ]; then hotkey=0 else - rel_dirname=$dirname + if [ "x${SUSE_BTRFS_SNAPSHOT_BOOTING}" = "xtrue" ] && + [ "x${GRUB_FS}" = "xbtrfs" ] ; then + rel_dirname="\${btrfs_subvol}$dirname" + else + rel_dirname="$dirname" + fi fi version=`echo $basename | sed -e "s,^[^0-9]*-,,g"` alt_version=`echo $version | sed -e "s,\.old$,,g"` --- a/util/grub.d/20_linux_xen.in +++ b/util/grub.d/20_linux_xen.in @@ -81,10 +81,14 @@ case x"$GRUB_FS" in xbtrfs) + if [ "x${SUSE_BTRFS_SNAPSHOT_BOOTING}" = "xtrue" ]; then + GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX} \${extra_cmdline}" + else rootsubvol="`make_system_path_relative_to_its_root /`" rootsubvol="${rootsubvol#/}" if [ "x${rootsubvol}" != x ]; then GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}" + fi fi;; xzfs) rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`