Re: [PATCH v6 00/12] Add support for external environment block on Btrfs

Daniel Kiper via Grub-devel <[email protected]>
Newsgroups org.gnu.grub-devel
Message-ID <aP/iKpq9/[email protected]>
On Mon, Oct 27, 2025 at 04:55:41PM -0400, Neal Gompa wrote:
> On Mon, Oct 20, 2025 at 11:04 AM Daniel Kiper <[email protected]> wrote:
> > On Fri, Oct 17, 2025 at 05:01:31PM +0800, Michael Chang via Grub-devel wrote:
> > > This patch series adds support for storing the GRUB environment block in
> > > a reserved area of the Btrfs header. On copy on write filesystems such
> > > as Btrfs, the normal file based envblk cannot be updated safely at
> > > runtime because block addresses are not stable. The reserved area
> > > provides a fixed location that GRUB can write directly, allowing
> > > commands such as grub-reboot and savedefault to work on Btrfs volumes.
> > >
> > > The series proceeds in small chunks to keep each change buildable and
> > > easier to review. The first patches add new data structures and helpers
> > > for creating, opening, and writing an environment block in the reserved
> > > area. Later patches update set_variables, unset_variables, and
> > > list_variables so they can use the external block when it is present. An
> > > entry is added to the Btrfs header to reserve space at 256 KiB for the
> > > environment block. Finally, grub.cfg is modified so that load_env and
> > > save_env use the external block automatically when env_block is defined.
> > >
> > > The first two patches are new in this series as feedback from the review
> > > to use a portable string specifier for size_t. Unfortunately the z
> > > length modifier is missing in GRUB printf routine's format specifier.
> > > The new patches add support and test case for that. In theory they can
> > > be reviewed separately.
> > >
> > > And also yet another new patch "btrfs: update doc link for bootloader
> > > support" added at the end to address v3 review feedback.
> > >
> > > v2:
> > > - Define ENV_BTRFS_OFFSET as 256*1024
> > > - Do not conflate type and variable definitions
> > > - Align typedef with struct declaration to follow coding style
> > > - Use bool as the return type of is_abstraction()
> > > - Add "if (dev->disk != NULL)" check in is_abstraction()
> > > - Refine the loop logic in is_abstraction() tests
> > > - Remove extra indentation and redundant lines in read_envblk_fs
> > > - Use off_t and size_t for offset and size variables, fix similar cases
> > >   throughout
> > > - Use explicit check "(fp == NULL)" instead of "(! fp)", fix similar
> > >   cases throughout
> > > - Use bool for the "found" field in var_lookup_ctx
> > > - Add documentation describing the Btrfs environment block and special
> > >   environment block variables
> > > v3:
> > > - Replace !fp with explicit (fp == NULL) for clarity
> > > - Fix missing blank line before return statement
> > > - Fix missing space after cast operator
> > > v4:
> > > - Rename ENV_BTRFS_OFFSET to GRUB_ENV_BTRFS_OFFSET
> > > - Move GRUB_ENV_BTRFS_OFFSET into "btrfs: add environment block to
> > >   reserved header area"
> > > - Adjust patch order to resolve relocated GRUB_ENV_BTRFS_OFFSET
> > > - Add patch "btrfs: update doc link for bootloader support"
> > > - Do better typedef
> > > - Add heads-up comments to both fs_envblk_spec and btrfs_head that they
> > >   have to stay in sync
> > > - Fix a few places to use explicit checks for NULL, true/false etc
> > > - Use goto labels to cleanup consistently
> > > - Mark function names with trailing "()" in commits and comments
> > > - Rename envblk_fs to envblk_on_block for better clarity
> > > - Avoid redundant curly braces in if .. else if clause
> > > - Highlight overflow guard around envioronment block in embed_region
> > > - Rename a few functions for clarity
> > > - Use portable printf formats for off_t and size_t
> > > - Support z length modifier in GRUB printf format string
> > > - Add z modifier to printf unit test
> > > v5:
> > > - Move fs_envblk_spec table into "btrfs: add environment block to
> > >   reserved header area"
> > > - Move "util/grub-editenv: add basic structures and probe call for
> > >   external envblk" the 9th patch behind all wiring patches and rename it
> > >   to "util/grub-editenv: add probe call for external envblk" as it now
> > >   only does probing
> > > - Add fs_envblk_init() to wire open helper in the base structures into
> > >   patch "util/grub-editenv: add fs_envblk open helper"
> > > - Add "Man 5 btrfs" an alternate to the doc link
> > > v6:
> > > - Move fs_envblk_spec structure typedef and variable from "btrfs: add
> > >   environment block to reserved header area" into "util/grub-editenv:
> > >   add fs_envblk open helper". The fs_envblk_spec remains empty since no
> > >   Btrfs area is defined yet.
> > > - Reorder "btrfs: add environment block to reserved header area" to
> > >   follow all groundwork patches, and provide the defined reserved area
> > >   to fs_envblk_spec so that it becomes supported in grub-editenv.
> > >
> > > Michael Chang (12):
> > >   misc: add z length modifier support
> > >   tests: add z modifier printf tests
> > >   util/grub-editenv: add fs_envblk open helper
> > >   util/grub-editenv: add fs_envblk write helper
> > >   util/grub-editenv: wire set_variables to optional fs_envblk
> > >   util/grub-editenv: wire unset_variables to optional fs_envblk
> > >   util/grub-editenv: wire list_variables to optional fs_envblk
> > >   util/grub-editenv: add probe call for external envblk
> > >   btrfs: add environment block to reserved header area
> > >   00_header.in: wire grub.cfg to use env_block when present
> > >   docs: add Btrfs env block and special env vars
> > >   btrfs: update doc link for bootloader support
> >
> > For all patches Reviewed-by: Daniel Kiper <[email protected]>...
>
> Sorry for resending this but it occurred to me that I was using the
> wrong email, so I'm asking again if this can land in time for GRUB 2.14?

If you take a look at the GRUB git repository you will see that relevant
patches are in for a few days...

Daniel

_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.