From: Eric Biggers <ebiggers@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: "Theodore Y. Ts'o" <tytso@mit.edu>,
Jaegeuk Kim <jaegeuk@kernel.org>,
linux-fscrypt@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: dropping the non-inline mode for fscrypt?
Date: Mon, 2 Mar 2026 13:22:36 -0800 [thread overview]
Message-ID: <20260302212236.GA2143@quark> (raw)
In-Reply-To: <20260302142718.GA25174@lst.de>
On Mon, Mar 02, 2026 at 03:27:18PM +0100, Christoph Hellwig wrote:
> After just having run into another issue with missing testing for one of
> the path, I'd like to ask if we should look into dropping the non-inline
> mode for block based fscrypt?
Yes, I think that's the way to go now.
I do think the default should continue to be to use the well-tested
CPU-based encryption code (just accessed via blk-crypto-fallback
instead). Inline encryption hardware should continue to be opt-in via
the inlinecrypt mount option, rather than used unconditionally. To
allow this, we'll need to add a field 'allow_hardware' or similar to
struct bio_crypt_ctx. Should be fairly straightforward though.
> I did a few simple fio based benchmarks, and writes are a minimal amount
> fast for the inline mode, while the reverse is true for reads.
>
> The big blocker seems to be this comment in fscrypt_select_encryption_impl:
>
> /*
> * When a page contains multiple logically contiguous filesystem blocks,
> * some filesystem code only calls fscrypt_mergeable_bio() for the first
> * block in the page. This is fine for most of fscrypt's IV generation
> * strategies, where contiguous blocks imply contiguous IVs. But it
> * doesn't work with IV_INO_LBLK_32. For now, simply exclude
> * IV_INO_LBLK_32 with blocksize != PAGE_SIZE from inline encryption.
> */
I think it would be pretty safe to drop support for IV_INO_LBLK_32 with
blocksize != PAGE_SIZE entirely, given that that case already doesn't
work with inlinecrypt. The whole point of IV_INO_LBLK_32 is to be able
to use eMMC inline encryption hardware that support only 32-bit IVs.
I should have put in this restriction from the beginning, but I don't
anyone will care if it's added now.
> from touching the file system callers lately, the only obvious place
> for this is fscrypt_zeroout_range_inline_crypt helper, or did I miss
> anything else?
ext4_mpage_readpages() for example seems to call it only once per folio.
It was cited in the original discussion that resulted in this code:
https://lore.kernel.org/linux-fscrypt/20200629182250.GD20492@sol.localdomain/
> Does anyone have a good xfstests setup for the IV_INO_LBLK_32 mode?
Unfortunately not. generic/369 does use IV_INO_LBLK_32 and verifies
that data is being encrypted correctly, but it's very unlikely to
exercise the DUN wraparound case.
The test_dummy_encryption mount option could be extended to allow
something like "test_dummy_encryption=v2,iv_ino_lblk_32", to cause the
test_dummy_encryption policy to use IV_INO_LBLK_32.
- Eric
next prev parent reply other threads:[~2026-03-02 21:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-02 14:27 dropping the non-inline mode for fscrypt? Christoph Hellwig
2026-03-02 21:22 ` Eric Biggers [this message]
2026-03-03 16:55 ` Christoph Hellwig
2026-03-03 19:31 ` Eric Biggers
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=20260302212236.GA2143@quark \
--to=ebiggers@kernel.org \
--cc=hch@lst.de \
--cc=jaegeuk@kernel.org \
--cc=linux-fscrypt@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=tytso@mit.edu \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.