From owner-freebsd-fs@freebsd.org Thu Jul 30 01:10:12 2020 Return-Path: Delivered-To: freebsd-fs@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9277B371626 for ; Thu, 30 Jul 2020 01:10:12 +0000 (UTC) (envelope-from allanjude@freebsd.org) Received: from tor1-11.mx.scaleengine.net (tor1-11.mx.scaleengine.net [209.51.186.6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4BHC50154Vz4VJv for ; Thu, 30 Jul 2020 01:10:11 +0000 (UTC) (envelope-from allanjude@freebsd.org) Received: from [10.1.1.2] (Seawolf.HML3.ScaleEngine.net [209.51.186.28]) (Authenticated sender: allanjude.freebsd@scaleengine.com) by tor1-11.mx.scaleengine.net (Postfix) with ESMTPSA id C17811DF91; Thu, 30 Jul 2020 01:10:05 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.10.3 tor1-11.mx.scaleengine.net C17811DF91 From: Allan Jude To: status-updates@freebsdfoundation.org, freebsd-fs , openzfs-developer References: <7b8842ad-d520-c575-22ee-2cd77244f2c6@freebsd.org> <708ec9f2-3c5c-6452-f6e6-bfb11a7f7eb2@freebsd.org> <528ca743-7889-d1fd-ca95-a17cd430725b@freebsd.org> <9d77cb73-c8e8-cca0-b4b8-28e6790268d6@freebsd.org> Autocrypt: addr=allanjude@freebsd.org; prefer-encrypt=mutual; keydata= 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 kiYh4ZtPB4Q= Subject: Re: ZSTD Project Weekly Status Update Message-ID: <327f4b10-9727-331e-2dc9-641dad96dd2a@freebsd.org> Date: Wed, 29 Jul 2020 21:10:00 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <9d77cb73-c8e8-cca0-b4b8-28e6790268d6@freebsd.org> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="HXdgsR2rk3L8d56jpFJrIXbETIpRJKU9d" X-Rspamd-Queue-Id: 4BHC50154Vz4VJv X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [0.00 / 15.00]; local_wl_from(0.00)[freebsd.org]; ASN(0.00)[asn:6939, ipnet:209.51.160.0/19, country:US] X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Jul 2020 01:10:12 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --HXdgsR2rk3L8d56jpFJrIXbETIpRJKU9d Content-Type: multipart/mixed; boundary="lJuBT4HZrTb0Dn1o8XsoeLb5B1bLWBKWv"; protected-headers="v1" From: Allan Jude To: status-updates@freebsdfoundation.org, freebsd-fs , openzfs-developer Message-ID: <327f4b10-9727-331e-2dc9-641dad96dd2a@freebsd.org> Subject: Re: ZSTD Project Weekly Status Update References: <7b8842ad-d520-c575-22ee-2cd77244f2c6@freebsd.org> <708ec9f2-3c5c-6452-f6e6-bfb11a7f7eb2@freebsd.org> <528ca743-7889-d1fd-ca95-a17cd430725b@freebsd.org> <9d77cb73-c8e8-cca0-b4b8-28e6790268d6@freebsd.org> In-Reply-To: <9d77cb73-c8e8-cca0-b4b8-28e6790268d6@freebsd.org> --lJuBT4HZrTb0Dn1o8XsoeLb5B1bLWBKWv Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable This is the sixth weekly status report on the project to integrate ZSTD into OpenZFS. https://github.com/openzfs/zfs/pull/10631 - Improved the `zfs recv` error handling when it receives an out-of-bounds property value. Specifically, if a zfs send stream is created that supports a newer compression or checksum type, the property will fail to be set on the receiving system. This is fine, but `zfs recv` would abort() and create a core file, rather than reporting the error, because it did not understand the EINVAL being returned for that property. In the case where the property is outside the accepted range, we now return the new ZFS_ERR_BADPROP value, and the correct message is displayed to the user. I opted not to use ERANGE because that is used for 'this property value should not be used on a root pool'. The idea is to get this fix merged into the 0.8.x branch for the next point release, to improve compatibility with streams generated by OpenZFS 2.0 https://github.com/openzfs/zfs/pull/10632 - General improvement to error handling when the error code is EZFS_UNKNOWN. https://github.com/allanjude/zfs/commit/8f37c1ad8edaff20a550b3df07995dab8= 0c06492 - ZFS replication compatibility improvements. As discussed on the leadership call earlier this month, keep the compatibility simple. If the -c flag is given, send blocks compressed with any compression algorithm. The improved error handling will let the user know if their system can't handle ZSTD. https://github.com/allanjude/zfs/commit/0ffd80e281f79652973378599cd033217= 2f365bd - per-dataset feature activation. This switches the ZSTD feature flag from 'enabled' to 'active' as soon as the property is set, instead of when the first block is written. This ensures that the pool can't be imported on a system that does not support ZSTD that will cause the ZFS cli tools to panic. I will be working on adding some tests for the feature activation. I've been looking at ways to add tests for the replication changes, but it doesn't seem to be easy to test the results of a 'zfs recv' that does not know about ZSTD (where the values are outside of the valid range for the enum). If anyone has any ideas here, I'd be very interested. On 2020-07-20 23:40, Allan Jude wrote: > This is the fifth weekly status report on the project to integrate ZSTD= > into OpenZFS. >=20 > https://github.com/c0d3z3r0/zfs/pull/14/commits/9807c99169e5931a754bb0d= f68267ffa2f289474 > - Created a new test case to ensure that ZSTD compressed blocks survive= > replication with the -c flag. We wanted to make sure the on-disk > compression header survived the trip. >=20 > https://github.com/c0d3z3r0/zfs/pull/14/commits/94bef464fc304e9d6f58503= 91e41720c3955af11 > - I split the zstd.c file into OS specific bits > (module/os/{linux,freebsd}/zstd_os.c) and also split the .h file into > zstd.h and zstd_impl.h. This was done so that FreeBSD can use the > existing kmem_cache mechanism, while Linux can use the vmem_alloc pool > created in the earlier versions of this patch. I significantly changed > the FreeBSD implementation from my earlier work, to reuse the power of = 2 > zio_data_buf_cache[]'s that already exist, only adding a few additional= > kmem_caches for large blocks with high compression levels. This should > avoid creating as many unnecessary kmem caches. >=20 > https://github.com/c0d3z3r0/zfs/pull/14/commits/3d48243b77e6c8c3bf562c7= a2315dd6cc571f28c > - Lastly, in my testing I was seeing a lot of hits on the new > compression failure kstat I added. This was caused by the ZFS "early > abort" feature, where we give the compressor an output buffer that is > smaller than the input, so it will fail if the block will not compress > enough to be worth it. This helps avoid wasting CPU on uncompressible > blocks. However, it seems the 'one-file' version of zstd we are using > does not expose the ZSTD_ErrorCode enum. This needs to be investigated > further to avoid issues if the value changes (although it is apparently= > stable after version 1.3.1). >=20 > I am still working on a solution for zfs send stream compatibility. I a= m > leaning towards creating a new flag, --zstd, to enable ZSTD compressed > output. If the -e or -c flag are used without the --zstd flag, and the > dataset has the zstd feature active, the idea would be to emit a warnin= g > but send the blocks uncompressed, so that the stream remains compatible= > with older versions of ZFS. I will be discussing this on the OpenZFS > Leadership call tomorrow, and am open to suggestions on how to best > handle this. >=20 >=20 > On 2020-07-14 22:26, Allan Jude wrote: >> In my continuing effort to complete the integration of ZSTD into >> OpenZFS, here is my fourth weekly status report: >> >> https://github.com/allanjude/zfs/commit/b0b1270d4e7835ecff413208301375= e3de2a4153 >> - Create a new test case to make sure that the ZSTD header we write >> along with the data is correct. Verify that the physical size of the >> compressed data is less than the psize for the block pointer, and veri= fy >> that the level matches. It uses a random level between 1 and 19 and th= en >> verifies with zdb that the block was compressed with that level. >> >> I am still working on a solution for setting the zstd feature flag to >> 'active' as soon as it is set, rather than only once a block is born. = As >> well as fixing up compatibility around zfs send/recv with the embedded= >> block points flag. >> >> This project is sponsored by the FreeBSD Foundation. >> >> >=20 --=20 Allan Jude --lJuBT4HZrTb0Dn1o8XsoeLb5B1bLWBKWv-- --HXdgsR2rk3L8d56jpFJrIXbETIpRJKU9d Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (MingW32) iQIcBAEBAgAGBQJfIh3sAAoJEBmVNT4SmAt+8M0QAJ/QeFAM/SHC8FGC15biQwTr vxdFQhwGtjykCbUyJ4ccgnUmWkdPq0xsTw1Qg/z88KTBb5D1+0a/KgAD83IIyLav apcC8ksxKGISrGznGHv2YNk122Js8ss/W8RxlV7PKbX7chenOrg7SnozBFXwr9VK i0AwctTDk+ryHt63gm+eBunLB3D7+RWvdaS9P2ahTYFWkM9usyUUyS5ujO/z8LxX V/nqkIOvsTuJYVuwbSsa18Z9NiYhd2MtL+crEAfIXyF+PYNNb0lsxCGCe7HmGJYT fV6QBNSkLpIx5QHLSE0Ha7XmygmkNSws8xcoVwBcVdkqRfI/nU5/Klo1WoSsbOMV u30QqNUbIPhWOXVutkSQhss7JLwyDnkaxsbTBRnKdlW3DFCbV9Vv0LHNvnlDDV59 3Qz5o3OYCDUO/twD8cIHj04n6v6Ud3xOdpOHsfSUiJChKvqK39sXHwzqn6fSlo+f I2UpO7xBLumPOlS08ci7Oqp0kMabVCFhFRU/ww8OC7Mu3HZ4AmYbGGWRswAWXO8W mEtKiQgp/03wxQO6XUJ7n5g3JdJI0G2AQ7u2nb2H8Ikk02DgPt5AdVvwgwL7Wf9Z 2TUFE+4AclO3EK0gxHA2JJp4UW6em/GRZs5Y5j78CdzXC01LY+xBYq2kfT1RZBQL xfN5grWkBc+5+CQBQ9W0 =qJ7j -----END PGP SIGNATURE----- --HXdgsR2rk3L8d56jpFJrIXbETIpRJKU9d--