zfs loader: allow access to any filesystem in a pool

Andriy Gapon avg at icyb.net.ua
Sun Jul 25 10:45:54 UTC 2010


This is a ZFS boot patch that I would like to present you for review and testing:
http://people.freebsd.org/~avg/zfsboot.diff

Currently in zfsloader you can only switch between pools, but you can only
access one predetermined filesystem within a pool - wither root dataset of a
pool or a filesystem pointed to by bootfs pool property.
With this patch it is possible to access any filesystem in a pool and, thus, to
boot kernel and modules from an alternative filesystem.  This is another
stepping stone in so called Boot Environments support.

An example.
You can boot kernel from a different filesystem by doing the following at the
loader prompt:
set currdev=zfs:tank/some/fs:
(note the trailing colon).
This is a breakdown of device name format:
"zfs" - is type of a device
"tank" - is a sample pool name
"some/fs" - is a sample name of a filesystem within the pool

You can access an individual file e.g. like this:
load zfs:tank/some/fs:boot/kernel/module.ko
"boot/kernel/module.ko" is a path within the specified filesystem (from its root).

As an additional feature, default filesystem (either root dataset or the one
pointed to by bootfs) is resolved to its name, so currdev and loaddev will be in
the format shown above.

Thank you in advance for any feedback!
-- 
Andriy Gapon


More information about the freebsd-fs mailing list