Hello community,

here is the log from the commit of package grub2 for openSUSE:Factory checked 
in at 2013-12-19 12:10:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grub2 (Old)
 and      /work/SRC/openSUSE:Factory/.grub2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "grub2"

Changes:
--------
--- /work/SRC/openSUSE:Factory/grub2/grub2.changes      2013-12-11 
15:40:08.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.grub2.new/grub2.changes 2013-12-19 
12:10:57.000000000 +0100
@@ -1,0 +2,9 @@
+Tue Dec 17 07:20:33 UTC 2013 - [email protected]
+
+- add new patches for booting btrfs snapshot (fate#316522) (fate#316232)
+  * 0001-btrfs-rename-skip_default-to-follow_default.patch
+  * 0002-btrfs-add-ability-to-boot-from-subvolumes.patch
+  * 0003-cmdline-add-envvar-loader_cmdline_append.patch
+  * 0004-btrfs-export-subvolume-envvars.patch
+
+-------------------------------------------------------------------

New:
----
  0001-btrfs-rename-skip_default-to-follow_default.patch
  0002-btrfs-add-ability-to-boot-from-subvolumes.patch
  0003-cmdline-add-envvar-loader_cmdline_append.patch
  0004-btrfs-export-subvolume-envvars.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ grub2.spec ++++++
--- /var/tmp/diff_new_pack.7g5EGy/_old  2013-12-19 12:10:58.000000000 +0100
+++ /var/tmp/diff_new_pack.7g5EGy/_new  2013-12-19 12:10:58.000000000 +0100
@@ -135,6 +135,11 @@
 Patch38:        grub2-fix-x86_64-efi-startup-stack-alignment.patch
 Patch39:        grub2-fix-x86_64-efi-callwrap-stack-alignment.patch
 Patch40:        0001-Fix-build-with-FreeType-2.5.1.patch
+# Btrfs snapshot booting related patches
+Patch100:       0001-btrfs-rename-skip_default-to-follow_default.patch
+Patch101:       0002-btrfs-add-ability-to-boot-from-subvolumes.patch
+Patch102:       0003-cmdline-add-envvar-loader_cmdline_append.patch
+Patch103:       0004-btrfs-export-subvolume-envvars.patch
 Requires:       gettext-runtime
 %if 0%{?suse_version} >= 1140
 Requires:       os-prober
@@ -254,6 +259,10 @@
 %patch38 -p1
 %patch39 -p1
 %patch40 -p1
+%patch100 -p1
+%patch101 -p1
+%patch102 -p1
+%patch103 -p1
 
 # Generate po/LINGUAS for message catalogs ...
 ./linguas.sh

++++++ 0001-btrfs-rename-skip_default-to-follow_default.patch ++++++
From: Jeff Mahoney <[email protected]>
Subject: grub2/btrfs: rename skip_default to follow_default

The skip_default code in find_path uses 1 to indicate that the default
should not be skipped, which is confusing. Let's rename that to
follow_default.

Signed-off-by: Jeff Mahoney <[email protected]>
---
 grub-core/fs/btrfs.c |   20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

--- a/grub-core/fs/btrfs.c      2013-06-16 08:24:05.000000000 -0400
+++ b/grub-core/fs/btrfs.c      2013-07-29 09:26:07.421380716 -0400
@@ -1208,7 +1208,7 @@ find_path (struct grub_btrfs_data *data,
   grub_size_t allocated = 0;
   struct grub_btrfs_dir_item *direl = NULL;
   struct grub_btrfs_key key_out;
-  int skip_default;
+  int follow_default;
   const char *ctoken;
   grub_size_t ctokenlen;
   char *path_alloc = NULL;
@@ -1220,14 +1220,14 @@ find_path (struct grub_btrfs_data *data,
   key->object_id = data->sblock.root_dir_objectid;
   key->type = GRUB_BTRFS_ITEM_TYPE_DIR_ITEM;
   key->offset = 0;
-  skip_default = 1;
+  follow_default = 1;
   origpath = grub_strdup (path);
   if (!origpath)
     return grub_errno;
 
   while (1)
     {
-      if (!skip_default)
+      if (!follow_default)
        {
          while (path[0] == '/')
            path++;
@@ -1254,9 +1254,9 @@ find_path (struct grub_btrfs_data *data,
 
       if (ctokenlen == 1 && ctoken[0] == '.')
        {
-         if (!skip_default)
+         if (!follow_default)
            path = slash;
-         skip_default = 0;
+         follow_default = 0;
        continue;
        }
       if (ctokenlen == 2 && ctoken[0] == '.' && ctoken[1] == '.')
@@ -1287,9 +1287,9 @@ find_path (struct grub_btrfs_data *data,
          *type = GRUB_BTRFS_DIR_ITEM_TYPE_DIRECTORY;
          key->object_id = key_out.offset;
 
-         if (!skip_default)
+         if (!follow_default)
            path = slash;
-         skip_default = 0;
+         follow_default = 0;
 
          continue;
        }
@@ -1359,9 +1359,9 @@ find_path (struct grub_btrfs_data *data,
          return err;
        }
 
-      if (!skip_default)
+      if (!follow_default)
        path = slash;
-      skip_default = 0;
+      follow_default = 0;
       if (cdirel->type == GRUB_BTRFS_DIR_ITEM_TYPE_SYMLINK)
        {
          struct grub_btrfs_inode inode;
@@ -1416,7 +1416,7 @@ find_path (struct grub_btrfs_data *data,
              key->object_id = data->sblock.root_dir_objectid;
              key->type = GRUB_BTRFS_ITEM_TYPE_DIR_ITEM;
              key->offset = 0;
-             skip_default = 1;
+             follow_default = 1;
            }
          continue;
        }
++++++ 0002-btrfs-add-ability-to-boot-from-subvolumes.patch ++++++
++++ 659 lines (skipped)

++++++ 0003-cmdline-add-envvar-loader_cmdline_append.patch ++++++
From: Michael Chang <[email protected]>
Subject: add loader_cmdline_append environment variable

Add loader_cmdline_append environment variable that appends it's
value to the loader's command line. We can use this variable to
assign values determined at run time. It will take effect on any
subsidiary configs loaded using configfile as well.

By means of this variable, we can, for example, set rootflags=
according to the selected btrfs snapshots and tell linux kernel's
btrfs module to mount the snapshot by the subvolume name or id.

Signed-off-by: Michael Chang <[email protected]>
---
 grub-core/lib/cmdline.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/grub-core/lib/cmdline.c b/grub-core/lib/cmdline.c
index a702e64..c5be945 100644
--- a/grub-core/lib/cmdline.c
+++ b/grub-core/lib/cmdline.c
@@ -19,6 +19,8 @@
 
 #include <grub/lib/cmdline.h>
 #include <grub/misc.h>
+#include <grub/mm.h>
+#include <grub/env.h>
 
 static unsigned int check_arg (char *c, int *has_space)
 {
@@ -65,6 +67,8 @@ int grub_create_loader_cmdline (int argc, char *argv[], char 
*buf,
   int i, space;
   unsigned int arg_size;
   char *c;
+  const char *append = NULL;
+  grub_size_t append_size = 0;
 
   for (i = 0; i < argc; i++)
     {
@@ -95,6 +99,23 @@ int grub_create_loader_cmdline (int argc, char *argv[], char 
*buf,
       *buf++ = ' ';
     }
 
+  append = grub_env_get ("loader_cmdline_append");
+
+  if (append)
+    append_size = grub_strlen (append);
+
+  if (append_size)
+    {
+      append_size++;
+      if (size >= append_size)
+        {
+          grub_strcpy (buf, append);
+          buf += append_size;
+          size -= append_size;
+          i++;
+        }
+    }
+
   /* Replace last space with null.  */
   if (i)
     buf--;
-- 
1.8.1.4

++++++ 0004-btrfs-export-subvolume-envvars.patch ++++++
From: Michael Chang <[email protected]>
Subject: export btrfs_subvol and btrfs_subvolid

We should export btrfs_subvol and btrfs_subvolid to have both visible 
to subsidiary configuration files loaded using configfile. 

Signed-off-by: Michael Chang <[email protected]>

Index: grub-2.00/grub-core/fs/btrfs.c
===================================================================
--- grub-2.00.orig/grub-core/fs/btrfs.c
+++ grub-2.00/grub-core/fs/btrfs.c
@@ -2252,6 +2252,8 @@ GRUB_MOD_INIT (btrfs)
                                subvol_set_env);
   grub_register_variable_hook ("btrfs_subvolid", subvolid_get_env,
                                subvolid_set_env);
+  grub_env_export ("btrfs_subvol");
+  grub_env_export ("btrfs_subvolid");
 }
 
 GRUB_MOD_FINI (btrfs)
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to