From owner-soc-status@FreeBSD.ORG Mon Jun 15 14:18:47 2015 Return-Path: Delivered-To: soc-status@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D652BC95 for ; Mon, 15 Jun 2015 14:18:47 +0000 (UTC) (envelope-from prasadjoshi.linux@gmail.com) Received: from mail-yh0-x229.google.com (mail-yh0-x229.google.com [IPv6:2607:f8b0:4002:c01::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 96C0F127 for ; Mon, 15 Jun 2015 14:18:47 +0000 (UTC) (envelope-from prasadjoshi.linux@gmail.com) Received: by yhan67 with SMTP id n67so43477813yha.3 for ; Mon, 15 Jun 2015 07:18:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=3RPOh1e1YYM52/gzFnO5u9Y5lKt6fZibnCHDV1go30g=; b=qIeHHDMLExiXii4Smw6CJKOU/qsSRFQX+3v+V1OFiSGKJIDul1qhr6EkjDJZ16Uk4H uF7mH2QNHlIduHYGLMj4j5u7u+VynZUUkWb5neZRrD38v6QyaCfmh9FoMXyFUeqsnuUQ wkv3SEucjBnJxSYofXxrgNW9q1MqDjPrC4YDOP8TQG/AaY8KqBILsqCYbY6zRnoiEWYC BmHQZwhwibrjbRq1q7Z5yu+h6EG+mJlyReuzBjwZyrypRq9bwwPY5GG9E7ZqHJjog5Zt 2s3jCjcUGP8nhx5eTsDub+4gycg51mHJrhaK+tMnXRPCJ4aDj4MS1uswSkdMLSoN+6N+ m8Og== MIME-Version: 1.0 X-Received: by 10.52.189.75 with SMTP id gg11mr40789758vdc.27.1434377926520; Mon, 15 Jun 2015 07:18:46 -0700 (PDT) Received: by 10.31.190.76 with HTTP; Mon, 15 Jun 2015 07:18:46 -0700 (PDT) In-Reply-To: References: Date: Mon, 15 Jun 2015 19:48:46 +0530 Message-ID: Subject: Re: [gsoc15] dynamically discover bes From: Prasad Joshi To: soc-status@freebsd.org Cc: Xin LI Content-Type: text/plain; charset=UTF-8 X-BeenThere: soc-status@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Summer of Code Status Reports and Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jun 2015 14:18:48 -0000 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 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