Date: Mon, 10 Aug 2015 23:54:17 +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: <CALJbWeqEXxL1xFy=qhV6ye9wO_CW=417nLTfu=aDNbYSo4soog@mail.gmail.com> In-Reply-To: <CALJbWepd%2BWq9=7joOGUu_7=_U29pGLD-vJjp946gVQMpNbY_qw@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> <CALJbWerDVXCi0K4nv7%2BZNUbUQ=GmgOag9mbk0dBTU8nV3XaMBA@mail.gmail.com> <CALJbWepoKqX4z6033oLKju%2BpE3sTnoEWZJUa1AWnfhLR_dNEvA@mail.gmail.com> <CALJbWeq%2BVNow=9cOVOkr9HveihNc9fvN%2BRKxAUnFfGqZ_aaqiw@mail.gmail.com> <CALJbWepd%2BWq9=7joOGUu_7=_U29pGLD-vJjp946gVQMpNbY_qw@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
1. Fixed broken sort functionality 2. Printf compilation problem is fixed 3. Started working on multiple SPA support Tasks for next week ================ Complete multiple SPA support. - Prasad On Aug 4, 2015 1:01 AM, "Prasad Joshi" <prasadjoshi.linux@gmail.com> wrote: > Status Report > =========== > 1. Added flat zap support > 2. Removed common, unnecessary code. > 3. When machine bootsup, instead of waiting for a keypress to show > bootmenu, now it is displayed as soon as machine starts. If no key is > pressed, default BE is used for booting in 5 seconds > > Tasks for coming week > ================== > 1. Fix broken sort functionality > 2. Fix util.c and libstand.a compilation problem > 3. Special keys for example arrow keys, home, pageup etc aren't working > till now > > On Tue, Jul 28, 2015 at 1:04 AM, Prasad Joshi > <prasadjoshi.linux@gmail.com> wrote: > > Status report > > ========== > > The BEs menu is working. With my code changes, when machine is booted > > by default gptzfsboot tries to boot an active BE. However, if user > > presses any key, the code finds out all BEs and displays menu for > > selection to user. Once user selects a BE to boot from, appropriate > > information is passed to next stage of boot loader. > > > > Tasks for coming week > > ================= > > 1. I disabled some of the existing gptzfsboot code which handles > > serial console. I will try to enable it again and check if menu > > functionality works on serial console. > > > > Thanks and Regards, > > Prasad > > > > On Sun, Jul 12, 2015 at 10:03 PM, Prasad Joshi > > <prasadjoshi.linux@gmail.com> wrote: > >> Status report for past two weeks > >> ========================= > >> - Last two weeks I struggled to get non-active BE to boot completely - > >> after zfs mount -a all files in /dev/ used to disappear. Finally > >> disabling canmount property on each dataset helped me boot non-active > >> BEs. > >> > >> - I added code to pass mountpoint information from gptzfsboot to > >> zfsloader, then from zfsloader I could set vfs.root.mountfrom env > >> variable. > >> > >> - Added code to find timestamp of each BE clone, with this change BEs > >> could now be sorted on either timestamp, BE name, or object number > >> > >> Tasks For coming week > >> ================== > >> 1. start the initial implementation of menu functionality. > >> > >> On Tue, Jun 30, 2015 at 7:26 PM, Prasad Joshi > >> <prasadjoshi.linux@gmail.com> wrote: > >>> 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?CALJbWeqEXxL1xFy=qhV6ye9wO_CW=417nLTfu=aDNbYSo4soog>