Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Jun 2015 19:26:12 +0530
From:      Prasad Joshi <prasadjoshi.linux@gmail.com>
To:        soc-status@freebsd.org
Cc:        Xin LI <d@delphij.net>
Subject:   Re: [gsoc15] dynamically discover bes
Message-ID:  <CALJbWerDVXCi0K4nv7%2BZNUbUQ=GmgOag9mbk0dBTU8nV3XaMBA@mail.gmail.com>
In-Reply-To: <CALJbWert-6-0fa6_%2BdK0N8zcU053GyRSQ8hRoQ5DGfBxeGGu4g@mail.gmail.com>
References:  <CALJbWeobZj9BqDoYW5Si9NWFFxd2q=w1EsBPVOxcNML-vZF3aQ@mail.gmail.com> <CALJbWerHWL8=P-hJ57V8SfZTyJ5uV9g-=a2x%2B3epGLuit0vn3w@mail.gmail.com> <CALJbWert-6-0fa6_%2BdK0N8zcU053GyRSQ8hRoQ5DGfBxeGGu4g@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Week 5 Update

- I did not work on GSoC for 3 days in this week. Had to attend full
day sessions in the University.
- Last week I was faced with a problem with booting alternate
(non-active) BE. Plan in this week was to locate the problem. It seems
like, during bootup zfsloader needs to initialize libzfs library. The
libzfs library initialization fails because '/dev/zfs' cannot be
opened. I verified the zfs kernel modules, which create the device are
loaded. I think, and as suggested by mentor, I will have to set
vfs.root.mountfrom environment variable during bootup.

Thanks and Regards,
Prasad

On Mon, Jun 22, 2015 at 11:42 PM, Prasad Joshi
<prasadjoshi.linux@gmail.com> wrote:
> 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@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@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALJbWerDVXCi0K4nv7%2BZNUbUQ=GmgOag9mbk0dBTU8nV3XaMBA>