public inbox for linux-fsdevel@vger.kernel.org
 help / color / mirror / Atom feed
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

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox