From: Nick Terrell <terrelln@fb.com>
To: Chris Mason <clm@fb.com>
Cc: Christoph Hellwig <hch@infradead.org>,
Rik van Riel <riel@surriel.com>,
Nick Terrell <nickrterrell@gmail.com>,
Herbert Xu <herbert@gondor.apana.org.au>,
"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>,
Btrfs BTRFS <linux-btrfs@vger.kernel.org>,
"squashfs-devel@lists.sourceforge.net"
<squashfs-devel@lists.sourceforge.net>,
"linux-f2fs-devel@lists.sourceforge.net"
<linux-f2fs-devel@lists.sourceforge.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Kernel Team <Kernel-team@fb.com>, Petr Malat <oss@malat.biz>,
Johannes Weiner <jweiner@fb.com>, Niket Agarwal <niketa@fb.com>,
Yann Collet <cyan@fb.com>
Subject: Re: [PATCH 5/9] btrfs: zstd: Switch to the zstd-1.4.6 API
Date: Thu, 17 Sep 2020 17:57:39 +0000 [thread overview]
Message-ID: <570EC702-5364-437A-B74B-06FEFEFCC161@fb.com> (raw)
In-Reply-To: <2073A599-E7CA-476A-9B4B-7BC76B454B9A@fb.com>
> On Sep 17, 2020, at 7:28 AM, Chris Mason <clm@fb.com> wrote:
>
> On 17 Sep 2020, at 6:04, Christoph Hellwig wrote:
>
>> On Wed, Sep 16, 2020 at 09:35:51PM -0400, Rik van Riel wrote:
>>>> One possibility is to have a kernel wrapper on top of the zstd API to
>>>> make it
>>>> more ergonomic. I personally don???t really see the value in it, since
>>>> it adds
>>>> another layer of indirection between zstd and the caller, but it
>>>> could be done.
>>>
>>> Zstd would not be the first part of the kernel to
>>> come from somewhere else, and have wrappers when
>>> it gets integrated into the kernel. There certainly
>>> is precedence there.
>>>
>>> It would be interesting to know what Christoph's
>>> preference is.
>>
>> Yes, I think kernel wrappers would be a pretty sensible step forward.
>> That also avoid the need to do strange upgrades to a new version,
>> and instead we can just change APIs on a as-needed basis.
>
> When we add wrappers, we end up creating a kernel specific API that doesn’t match the upstream zstd docs, and it doesn’t leverage as much of the zstd fuzzing and testing.
>
> So we’re actually making kernel zstd slightly less usable in hopes that our kernel specific part of the API is familiar enough to us that it makes zstd more usable. There’s no way to compare the two until the wrappers are done, but given the code today I’d prefer that we focus on making it really easy to track upstream. I really understand Christoph’s side here, but I’d rather ride a camel with the group than go it alone.
>
> I’d also much rather spend time on any problems where the structure of the zstd APIs don’t fit the kernel’s needs. The btrfs streaming compression/decompression looks pretty clean to me, but I think Johannes mentioned some possibilities to improve things for zswap (optimizations for page-at-atime). If there are places where the zstd memory management or error handling don’t fit naturally into the kernel, that would also be higher on my list.
This update includes the recent optimizations for ZSwap that I've made, which
gives a 30% speed boost for page-at-a-time decompression.
We're very open to improving and changing zstd to better fit the needs of the
kernel. If there are use cases that can't use the existing API, or the existing
API isn't optimal, or any other problems, we’re happy to help figure out the
best solution. Opening an issue on our upstream GitHub repo is the best way to
get our attention
-Nick
> Fixing those are probably going to be much easier if we’re close to the zstd upstream, again so that we can leverage testing and long term code maintenance done there.
>
> -chris
next prev parent reply other threads:[~2020-09-17 18:23 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-16 3:42 [PATCH 0/9] Update to zstd-1.4.6 Nick Terrell
2020-09-16 3:42 ` [PATCH 1/9] lib: zstd: Add zstd compatibility wrapper Nick Terrell
2020-09-16 8:48 ` Christoph Hellwig
2020-09-16 20:21 ` Nick Terrell
2020-09-16 3:42 ` [PATCH 2/9] lib: zstd: Add decompress_sources.h for decompress_unzstd Nick Terrell
2020-09-16 3:42 ` [PATCH 4/9] crypto: zstd: Switch to zstd-1.4.6 API Nick Terrell
2020-09-16 8:49 ` Christoph Hellwig
2020-09-16 3:42 ` [PATCH 5/9] btrfs: zstd: Switch to the " Nick Terrell
2020-09-16 8:49 ` Christoph Hellwig
2020-09-16 14:20 ` Chris Mason
2020-09-16 14:30 ` Christoph Hellwig
2020-09-16 14:43 ` Chris Mason
2020-09-16 14:46 ` Christoph Hellwig
2020-09-16 15:01 ` Chris Mason
2020-09-16 18:27 ` Eric Biggers
2020-09-16 19:18 ` Nick Terrell
2020-09-17 1:35 ` Rik van Riel
2020-09-17 10:04 ` Christoph Hellwig
2020-09-17 14:28 ` Chris Mason
2020-09-17 17:57 ` Nick Terrell [this message]
2020-09-16 3:43 ` [PATCH 6/9] f2fs: " Nick Terrell
2020-09-16 3:43 ` [PATCH 7/9] squashfs: " Nick Terrell
2020-09-16 3:43 ` [PATCH 8/9] lib: unzstd: " Nick Terrell
2020-09-16 3:43 ` [PATCH 9/9] lib: zstd: Remove zstd compatibility wrapper Nick Terrell
[not found] ` <20200916034307.2092020-4-nickrterrell@gmail.com>
2020-09-16 8:01 ` [PATCH 3/9] lib: zstd: Upgrade to latest upstream zstd version 1.4.6 kernel test robot
2020-09-16 20:53 ` Nick Terrell
2020-09-16 20:53 ` Nick Terrell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=570EC702-5364-437A-B74B-06FEFEFCC161@fb.com \
--to=terrelln@fb.com \
--cc=Kernel-team@fb.com \
--cc=clm@fb.com \
--cc=cyan@fb.com \
--cc=hch@infradead.org \
--cc=herbert@gondor.apana.org.au \
--cc=jweiner@fb.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=nickrterrell@gmail.com \
--cc=niketa@fb.com \
--cc=oss@malat.biz \
--cc=riel@surriel.com \
--cc=squashfs-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox