From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Yjv5F-0003PS-JD for mharc-grub-devel@gnu.org; Sun, 19 Apr 2015 15:40:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36231) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yjv5D-0003PH-30 for grub-devel@gnu.org; Sun, 19 Apr 2015 15:40:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yjv59-0006zw-T1 for grub-devel@gnu.org; Sun, 19 Apr 2015 15:40:47 -0400 Received: from mail-la0-x232.google.com ([2a00:1450:4010:c03::232]:36594) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yjv59-0006zq-K3 for grub-devel@gnu.org; Sun, 19 Apr 2015 15:40:43 -0400 Received: by lagv1 with SMTP id v1so112872921lag.3 for ; Sun, 19 Apr 2015 12:40:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=F1qdsEJ+Q/e9YH0RJkzD3TkAUf2/CGU5oQcyB5UsvMA=; b=svfaq671zgdvg9+95X2XsMqmWjkijK6MNgjvDMBVeaxSqmzX4eubbQDVBy0AZnK/oX kBcJ6Sc4H5yHczJ8as6pckSt8CGiTwSN1t+OD1CsBUS2BW510UykTBYcfEFPq0c1htuW UjQvRFV6zx7tUiFcjuZLlojW1O8t0Dp65liVYW6kPYmF+4faCmQvH4LL4A1KuRWHUGLi t3eLyDLOeJQjUCyI/p6/GBaq1q7jjepTivjaXTt2KUnliK1FMBnImQBpusm47pU1+XWp p3dW+3slddknWcDtX9zjgI0dyT8mUeeODFwI/Yy8My8uHtmloyh3XtW1pMTYOexcckgp Fe5g== X-Received: by 10.152.7.175 with SMTP id k15mr13082388laa.7.1429472442683; Sun, 19 Apr 2015 12:40:42 -0700 (PDT) Received: from opensuse.site (ppp91-76-14-38.pppoe.mtu-net.ru. [91.76.14.38]) by mx.google.com with ESMTPSA id t8sm3851247lby.24.2015.04.19.12.40.41 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 19 Apr 2015 12:40:41 -0700 (PDT) Date: Sun, 19 Apr 2015 22:40:40 +0300 From: Andrei Borzenkov To: Toomas Soome Subject: Re: [PATCH 5/5] zfs extensible_dataset and large_blocks feature support Message-ID: <20150419224040.44ec3e70@opensuse.site> In-Reply-To: References: X-Mailer: Claws Mail 3.11.0 (GTK+ 2.24.27; x86_64-suse-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::232 Cc: The development of GNU GRUB X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Apr 2015 19:40:48 -0000 =D0=92 Thu, 16 Apr 2015 08:24:38 +0300 Toomas Soome =D0=BF=D0=B8=D1=88=D0=B5=D1=82: >=20 Could you explain how these changes affect large block read? As far as I understand, this feature is basically "for free" - changes were needed to allow large block writes, but on disk format already supported them so reading should have just worked? > --- > grub-core/fs/zfs/zfs.c | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) >=20 > diff --git a/grub-core/fs/zfs/zfs.c b/grub-core/fs/zfs/zfs.c > index da44131..4a542e0 100644 > --- a/grub-core/fs/zfs/zfs.c > +++ b/grub-core/fs/zfs/zfs.c > @@ -283,6 +283,8 @@ static const char *spa_feature_names[] =3D { > "org.illumos:lz4_compress", > "com.delphix:hole_birth", > "com.delphix:embedded_data", > + "com.delphix:extensible_dataset", > + "org.open-zfs:large_blocks", > NULL > }; > =20 > @@ -3080,7 +3082,7 @@ get_filesystem_dnode (dnode_end_t * mosmdn, char *f= sname, > =20 > grub_dprintf ("zfs", "alive\n"); > =20 > - err =3D dnode_get (mosmdn, objnum, DMU_OT_DSL_DIR, mdn, data); > + err =3D dnode_get (mosmdn, objnum, 0, mdn, data); > if (err) > return err; > =20 > @@ -3113,7 +3115,7 @@ get_filesystem_dnode (dnode_end_t * mosmdn, char *f= sname, > if (err) > return err; > =20 > - err =3D dnode_get (mosmdn, objnum, DMU_OT_DSL_DIR, mdn, data); > + err =3D dnode_get (mosmdn, objnum, 0, mdn, data); > if (err) > return err; > =20 > @@ -3268,8 +3270,7 @@ dnode_get_fullpath (const char *fullpath, struct su= bvolume *subvol, > =20 > grub_dprintf ("zfs", "endian =3D %d\n", subvol->mdn.endian); > =20 > - err =3D dnode_get (&(data->mos), headobj, DMU_OT_DSL_DATASET, &subvol-= >mdn, > - data); > + err =3D dnode_get (&(data->mos), headobj, 0, &subvol->mdn, data); > if (err) > { > grub_free (fsname); > @@ -3665,8 +3666,11 @@ zfs_mount (grub_device_t dev) > if (ub->ub_version >=3D SPA_VERSION_FEATURES && > check_mos_features(&((objset_phys_t *) osp)->os_meta_dnode,ub_endi= an, > data) !=3D 0) > - return NULL; > -=09 > + { > + grub_error (GRUB_ERR_BAD_FS, "Unsupported features in pool"); > + return NULL; > + } > + > /* Got the MOS. Save it at the memory addr MOS. */ > grub_memmove (&(data->mos.dn), &((objset_phys_t *) osp)->os_meta_dnode, > DNODE_SIZE); > @@ -3963,7 +3967,7 @@ fill_fs_info (struct grub_dirhook_info *info, > { > headobj =3D grub_zfs_to_cpu64 (((dsl_dir_phys_t *) DN_BONUS (&mdn.= dn))->dd_head_dataset_obj, mdn.endian); > =20 > - err =3D dnode_get (&(data->mos), headobj, DMU_OT_DSL_DATASET, &mdn= , data); > + err =3D dnode_get (&(data->mos), headobj, 0, &mdn, data); > if (err) > { > grub_dprintf ("zfs", "failed here\n");