[gsoc15] dynamically discover bes

Prasad Joshi prasadjoshi.linux at gmail.com
Mon Jun 22 18:12:04 UTC 2015


Week 4 update

- I have been able to discover BEs on console. I could detect active BE.
Created list of BEs. Code to sort BEs on object number, name, or timestamp
is added.

- I am able to boot from nonactive BE to some extent. At the moment, code
requires me to enter BE number to boot from.

Tasks next week
1. Identify a problem with be bootup.
2. Pass mount point info through env variable to loader.
3. Start with console based menu.

Thanks and Regards,
Prasad
 On Jun 15, 2015 7:48 PM, "Prasad Joshi" <prasadjoshi.linux at gmail.com>
wrote:

> Week 3 status
> ==========
> After understanding on disk representation of snapshots and clones, I
> have been able to find names of the BEs created using beadm command. I
> could print the BE names on console.
>
> The next task would be to convert BE names to object numbers, create
> list of BEs.
>
> Thanks and Regards,
> Prasad
>
> On Tue, Jun 9, 2015 at 6:36 AM, Prasad Joshi
> <prasadjoshi.linux at gmail.com> wrote:
> > Last week I mostly worked on understanding beadm and gptzfsboot code
> >
> > beadm create prepares new BE by creating a snapshot and clone of that
> > snapshot. beadm activate command sets bootfs property of the POOL.
> > bootfs property contains object number of active dataset object.
> > During bootup gptzfsboot probes all the disks, creating SPA for any
> > valid pool. gptzfsboot assumes the first pool it finds as a primary
> > pool, it then reads meta object set, then tries to find object nunber
> > of active dataset object either through
> > a. bootfs - it would be set if BE was already created
> > b. mos->properties_zap->root_dataset->dd_head_dataset_obj (through
> > root_datasets bonus buffer)
> > Once the object number is obtaind gptzfsboot mounts the dataset.
> >
> > After mounting, few files are looked up like /boot/config or
> > /boot.config for presense of boot command (did not went into details
> > of this). Then (if keyboard is not hit), gptzfsboot execs
> > /boot/zfsloader. If gptzfsboot is interrupted by keyboard, then it
> > displays default BE or POOL it is trying to boot from (using
> > zfs_rlookup() to map active dataset object to string BE name). Though
> > I haven't checked this but through serial console user would be
> > allowed to enter other pool or BE to boot from.
> >
> > I could not go into details of how gptzfsboot reads /boot/zfsloader from
> disk.
> >
> > Pending Tasks
> > =============
> > 1. Understand upon keyboard interruption, how user entered zfs paths
> > (format [zfs:pool/filesystem:][/path/to/loader]) are converted in
> > object numbers?
> > 2. Learn ZFS on disk format in more details so as to identify active
> > dataset object numbers of all BEs. Once the object numbers are
> > available, I can use zfs_rlookup() function to map object number to
> > printable pool name.
> > 3. Prepare library for console based menu.
> >
> > Plan for next week
> > ==================
> > Pending task 2 above
>


More information about the soc-status mailing list