On Tue, Sep 02, 2025 at 02:46:00PM +0800, Michael Chang via Grub-devel wrote: > This patch changes set_variables so that it can use an external > environment block when one is present. The variable next_entry is > written into the external block, env_block is treated as read only, and > all other variables are written into the normal file based envblk. > > A cleanup step is added to handle cases where GRUB at runtime writes > variables into the external block because file based updates are not > safe on a copy on write filesystem such as Btrfs. For example, the > savedefault command can update saved_entry, and on Btrfs GRUB will place > that update in the external block instead of the file envblk. If an > older copy remains in the external block, it would override the newer > value from the file envblk when GRUB first loads the file and then > applies the external block on top of it. To avoid this, whenever a > variable is updated in the file envblk, any same named key in the > external block is deleted.
Sorry, I do not understand that. Why do you use two environment blocks instead of one? I think only one should be used. When env block is moved to Brtfs bootloader block then environment file should be immediately deleted from the filesystem. > Signed-off-by: Michael Chang <[email protected]> > Reviewed-by: Neal Gompa <[email protected]> > --- > util/grub-editenv.c | 55 +++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 53 insertions(+), 2 deletions(-) > > diff --git a/util/grub-editenv.c b/util/grub-editenv.c > index a319d01b7..ca3787c98 100644 > --- a/util/grub-editenv.c > +++ b/util/grub-editenv.c > @@ -391,12 +391,33 @@ fs_envblk_write (grub_envblk_t envblk) > fclose (fp); > } > > +struct var_lookup_ctx { > + const char *varname; > + int found; bool please... Daniel _______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
