SHA256
1
0
forked from pool/grub2

Accepting request 403817 from home:michael-chang:branches:Base:System

- Fix grub2-editenv error on encrypted lvm installation (bsc#981621) 
  * modified grub2-btrfs-workaround-grub2-once.patch
- Add missing closing bracket in 'grub2-snapper-plugin.sh'.
- Fix snapshot booting on s390x (bsc#955115)
  * modified grub2-snapper-plugin.sh 
- Fallback to old subvol name scheme to support old snapshot config
  (bsc#953538)
  * added grub2-btrfs-07-subvol-fallback.patch

OBS-URL: https://build.opensuse.org/request/show/403817
OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=221
This commit is contained in:
Andrei Borzenkov 2016-06-21 16:44:17 +00:00 committed by Git OBS Bridge
parent b9810479d0
commit 79b1983d8c
5 changed files with 101 additions and 22 deletions

View File

@ -0,0 +1,46 @@
Index: grub-2.02~beta3/grub-core/fs/btrfs.c
===================================================================
--- grub-2.02~beta3.orig/grub-core/fs/btrfs.c
+++ grub-2.02~beta3/grub-core/fs/btrfs.c
@@ -925,10 +925,40 @@ lookup_root_by_name(struct grub_btrfs_da
}
static grub_err_t
+lookup_root_by_name_fallback(struct grub_btrfs_data *data, const char *path)
+{
+ grub_err_t err;
+ grub_uint64_t tree = 0;
+ grub_uint8_t type;
+ struct grub_btrfs_key key;
+
+ err = find_path (data, path, &key, &tree, &type);
+ if (err)
+ return grub_error(GRUB_ERR_FILE_NOT_FOUND, "couldn't locate %s\n", path);
+
+ if (key.object_id != grub_cpu_to_le64_compile_time (GRUB_BTRFS_OBJECT_ID_CHUNK) || tree == 0)
+ return grub_error(GRUB_ERR_BAD_FILE_TYPE, "%s: not a subvolume\n", path);
+
+ data->fs_tree = tree;
+ return GRUB_ERR_NONE;
+}
+
+static grub_err_t
btrfs_handle_subvol(struct grub_btrfs_data *data __attribute__ ((unused)))
{
if (btrfs_default_subvol)
- return lookup_root_by_name(data, btrfs_default_subvol);
+ {
+ grub_err_t err;
+ err = lookup_root_by_name(data, btrfs_default_subvol);
+
+ /* Fallback to old schemes */
+ if (err == GRUB_ERR_FILE_NOT_FOUND)
+ {
+ err = GRUB_ERR_NONE;
+ return lookup_root_by_name_fallback(data, btrfs_default_subvol);
+ }
+ return err;
+ }
if (btrfs_default_subvolid)
return lookup_root_by_id(data, btrfs_default_subvolid);

View File

@ -1,7 +1,7 @@
Index: grub-2.02~beta2/grub-core/kern/fs.c
Index: grub-2.02~beta3/grub-core/kern/fs.c
===================================================================
--- grub-2.02~beta2.orig/grub-core/kern/fs.c
+++ grub-2.02~beta2/grub-core/kern/fs.c
--- grub-2.02~beta3.orig/grub-core/kern/fs.c
+++ grub-2.02~beta3/grub-core/kern/fs.c
@@ -27,6 +27,7 @@
#include <grub/mm.h>
#include <grub/term.h>
@ -24,11 +24,11 @@ Index: grub-2.02~beta2/grub-core/kern/fs.c
ret += size;
len -= size;
sector -= ((size + offset) >> GRUB_DISK_SECTOR_BITS);
Index: grub-2.02~beta2/util/grub-editenv.c
Index: grub-2.02~beta3/util/grub-editenv.c
===================================================================
--- grub-2.02~beta2.orig/util/grub-editenv.c
+++ grub-2.02~beta2/util/grub-editenv.c
@@ -23,8 +23,10 @@
--- grub-2.02~beta3.orig/util/grub-editenv.c
+++ grub-2.02~beta3/util/grub-editenv.c
@@ -23,8 +23,11 @@
#include <grub/util/misc.h>
#include <grub/lib/envblk.h>
#include <grub/i18n.h>
@ -37,10 +37,11 @@ Index: grub-2.02~beta2/util/grub-editenv.c
#include <grub/util/install.h>
+#include <grub/emu/getroot.h>
+#include <grub/fs.h>
+#include <grub/crypto.h>
#include <stdio.h>
#include <unistd.h>
@@ -120,6 +122,140 @@ block, use `rm %s'."),
@@ -120,6 +123,140 @@ block, use `rm %s'."),
NULL, help_filter, NULL
};
@ -181,7 +182,7 @@ Index: grub-2.02~beta2/util/grub-editenv.c
static grub_envblk_t
open_envblk_file (const char *name)
{
@@ -176,10 +312,17 @@ static void
@@ -176,10 +313,17 @@ static void
list_variables (const char *name)
{
grub_envblk_t envblk;
@ -199,7 +200,7 @@ Index: grub-2.02~beta2/util/grub-editenv.c
}
static void
@@ -202,6 +345,38 @@ write_envblk (const char *name, grub_env
@@ -202,6 +346,38 @@ write_envblk (const char *name, grub_env
}
static void
@ -238,7 +239,7 @@ Index: grub-2.02~beta2/util/grub-editenv.c
set_variables (const char *name, int argc, char *argv[])
{
grub_envblk_t envblk;
@@ -217,8 +392,26 @@ set_variables (const char *name, int arg
@@ -217,8 +393,26 @@ set_variables (const char *name, int arg
*(p++) = 0;
@ -267,7 +268,7 @@ Index: grub-2.02~beta2/util/grub-editenv.c
argc--;
argv++;
@@ -226,26 +419,147 @@ set_variables (const char *name, int arg
@@ -226,26 +420,158 @@ set_variables (const char *name, int arg
write_envblk (name, envblk);
grub_envblk_close (envblk);
@ -319,8 +320,8 @@ Index: grub-2.02~beta2/util/grub-editenv.c
+ {
+ have_abstraction = 1;
+ }
+}
+
}
+static fs_envblk_t
+probe_fs_envblk (fs_envblk_spec_t spec)
+{
@ -338,6 +339,16 @@ Index: grub-2.02~beta2/util/grub-editenv.c
+
+ grub_util_biosdisk_init (DEFAULT_DEVICE_MAP);
+ grub_init_all ();
+ grub_gcry_init_all ();
+
+ grub_lvm_fini ();
+ grub_mdraid09_fini ();
+ grub_mdraid1x_fini ();
+ grub_diskfilter_fini ();
+ grub_diskfilter_init ();
+ grub_mdraid09_init ();
+ grub_mdraid1x_init ();
+ grub_lvm_init ();
+
+ grub_devices = grub_guess_root_devices (DEFAULT_DIRECTORY);
+
@ -388,6 +399,7 @@ Index: grub-2.02~beta2/util/grub-editenv.c
+
+ free (grub_drives);
+ grub_device_close (grub_dev);
+ grub_gcry_fini_all ();
+ grub_fini_all ();
+ grub_util_biosdisk_fini ();
+
@ -409,13 +421,13 @@ Index: grub-2.02~beta2/util/grub-editenv.c
+ }
+
+ return NULL;
}
+}
+
+
int
main (int argc, char *argv[])
{
@@ -277,6 +591,9 @@ main (int argc, char *argv[])
@@ -277,6 +603,9 @@ main (int argc, char *argv[])
command = argv[curindex++];
}
@ -425,10 +437,10 @@ Index: grub-2.02~beta2/util/grub-editenv.c
if (strcmp (command, "create") == 0)
grub_util_create_envblk_file (filename);
else if (strcmp (command, "list") == 0)
Index: grub-2.02~beta2/util/grub.d/00_header.in
Index: grub-2.02~beta3/util/grub.d/00_header.in
===================================================================
--- grub-2.02~beta2.orig/util/grub.d/00_header.in
+++ grub-2.02~beta2/util/grub.d/00_header.in
--- grub-2.02~beta3.orig/util/grub.d/00_header.in
+++ grub-2.02~beta3/util/grub.d/00_header.in
@@ -46,6 +46,11 @@ cat << EOF
if [ -s \$prefix/grubenv ]; then
load_env

View File

@ -97,13 +97,19 @@ snapshot_submenu () {
title="${important}${NAME} ${VERSION} ($full_desc)"
fi
if test "$s390" = "1"; then
subvol="\$2"
else
subvol="\$3"
fi
cat <<EOF
if [ -f "${snapper_snapshot_path}/$num/snapshot/boot/grub2/grub.cfg" ]; then
snapshot_found=true
saved_subvol=\$btrfs_subvol
menuentry `print_hotkey` "$title" "${snapper_snapshot_path}/$num/snapshot" "`$grub_mkrelpath ${snapper_snapshot_path}/${num}/snapshot`" {
btrfs_subvol="\$3"
btrfs_subvol="$subvol"
extra_cmdline="rootflags=subvol=\$3"
export extra_cmdline
snapshot_num=$num
@ -157,7 +163,7 @@ ${cs}"
continue
fi
snapshot_cfg="${snapshot_cfg}
if [ -f \"$c/${snapshot_submenu_name}\"; then
if [ -f \"$c/${snapshot_submenu_name}\" ]; then
source \"$c/${snapshot_submenu_name}\"
fi"
done
@ -226,6 +232,7 @@ machine=`uname -m`
case "$machine" in
(s390|s390x)
hotkey=1
s390=1
;;
esac
cmdline="$0 $* hotkey='$hotkey'"

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Tue Jun 21 06:19:27 UTC 2016 - mchang@suse.com
- Fix grub2-editenv error on encrypted lvm installation (bsc#981621)
* modified grub2-btrfs-workaround-grub2-once.patch
- Add missing closing bracket in 'grub2-snapper-plugin.sh'.
- Fix snapshot booting on s390x (bsc#955115)
* modified grub2-snapper-plugin.sh
- Fallback to old subvol name scheme to support old snapshot config
(bsc#953538)
* added grub2-btrfs-07-subvol-fallback.patch
-------------------------------------------------------------------
Thu Jun 2 19:25:58 UTC 2016 - arvidjaar@gmail.com

View File

@ -193,6 +193,7 @@ Patch103: grub2-btrfs-03-follow_default.patch
Patch104: grub2-btrfs-04-grub2-install.patch
Patch105: grub2-btrfs-05-grub2-mkconfig.patch
Patch106: grub2-btrfs-06-subvol-mount.patch
Patch107: grub2-btrfs-07-subvol-fallback.patch
# Support EFI xen loader
Patch120: grub2-efi-xen-chainload.patch
Patch121: grub2-efi-chainloader-root.patch
@ -421,6 +422,7 @@ mv po/grub.pot po/%{name}.pot
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch107 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1