Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Jul 2010 13:45:50 +0300
From:      Andriy Gapon <avg@icyb.net.ua>
To:        freebsd-fs@freebsd.org
Subject:   zfs loader: allow access to any filesystem in a pool
Message-ID:  <4C4C15DE.1030802@icyb.net.ua>

next in thread | raw e-mail | index | archive | help

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C4C15DE.1030802>