[review request] zfsboot/zfsloader: support accessing filesystems within a pool

Ian Lepore freebsd at damnhippie.dyndns.org
Wed Apr 18 14:22:33 UTC 2012


On Wed, 2012-04-18 at 09:41 -0400, John Baldwin wrote:
> On Wednesday, April 18, 2012 2:02:22 am Andriy Gapon wrote:
> > on 17/04/2012 23:43 John Baldwin said the following:
> > > On Tuesday, April 17, 2012 4:22:19 pm Andriy Gapon wrote:
> > >> We already have a flag for ZFS (KARGS_FLAGS_ZFS, 0x4).  So the new flag could be
> > >> named something ZFS-specific (as silly as KARGS_FLAGS_ZFS2) or something more
> > >> general such as KARGS_FLAGS_32_BYTES meaning that the total size of arguments
> > >> area is 32 bytes (as opposed to 24 previously).
> > > 
> > > Does KARGS_FLAGS_GUID work?
> > > 
> > 
> > I think that's too terse, we already passed a pool guid via the existing
> > argument space.  So it should be something like KARGS_FLAGS_ZFS_FS_GUID or
> > KARGS_FLAGS_ZFS_DS_GUID (DS - dataset).
> 
> Ah.  I do think the flag should indicate that the bootinfo structure is larger,
> I was assuming you were adding a new GUID field that didn't exist before.
> I can't think of something better than KARGS_FLAGS_32.  What might be nice
> actually, is to add a new field to indicate the size of the argument area and
> to set a flag to indicate that the size field is present (KARGS_FLAGS_SIZE)?


YES!  A size field (preferably as the first field in the struct) along
with a flag to indicate that it's a new-style boot info struct that
starts with a size field, will allow future changes without a lot of
drama.  It can allow code that has to deal with the struct without
interpretting it (such as trampoline code that has to copy it to a new
stack or memory area as part of loading the kernel) to be immune to
future changes.

This probably isn't a big deal in the x86 world, but it can be important
for embedded systems where a proprietary bootloader has to pass info to
a proprietary board_init() type routine in the kernel using
non-proprietary loader/trampoline code that's part of the base.

We have a bit of a mess in this regard in the ARM world right now, and
it would be a lot lessy messy if something like this had been in place.

-- Ian




More information about the freebsd-hackers mailing list