Re: [PATCH v7 00/43] btrfs: add fscrypt support
From: Daniel Vacek
Date: Fri May 22 2026 - 03:03:12 EST
On Wed, 13 May 2026 at 10:54, Daniel Vacek <neelx@xxxxxxxx> wrote:
>
> Hello,
>
> These are the remaining parts from former series [1] from Omar, Sweet Tea
> and Josef. Some bits of it were split into the separate set [2] before.
>
> Notably, at this stage encryption is not supported with RAID5/6 setup
> and send is also disabled for now.
>
> For straight git access you can find this series as the `fscrypt-v7` tag
> e85358ef9fba here:
>
> [0] https://github.com/dvacek/linux-btrfs/tree/fscrypt-v7
>
> Changes since v6 [3]
> * Rebased onto linux v7.1-rc3.
> * Adapted to the v7.0 fscrypt API changes, mostly following commit
> bb8e2019ad613 ("blk-crypto: handle the fallback above the block layer")
> * Addressed all the review feedback, thanks to Eric Biggers, Chris Mason
> (and his LLM review prompts) and Neal Gompa.
> * Adapted to the v7.1 fscrypt API cleanups, using byte offsets as function
> arguments instead of logical block numbers for newly introduced functions.
> This should match https://lore.kernel.org/linux-fscrypt/20260218061531.3318130-1-hch@xxxxxx/
> As a result btrfs_set_bio_crypt_ctx_from_extent() and btrfs_mergeable_encrypted_bio()
> helpers were no longer needed and they got removed.
Hi Eric,
This is just a gentle ping.
I was wondering if you had a chance to look at this version?
I believe all your previous feedback has been addressed and this
version is solid.
Please, let me know your thoughts.
Regards,
Daniel
> There are a few changes since v5 [1]:
> * Rebased to btrfs/for-next branch. Couple things changed in the last
> years. A few patches were dropped as the code cleaned up or refactored.
> More details in the patches themselves.
> * As suggested by Qu and Dave, the on-disk format of storing the extent
> encryption context was re-designed. Now, a new tree item with dedicated
> key is inserted instead of extending the file extent item. As a result
> a special care needs to be taken when removing the encrypted extents
> to also remove the related encryption context item.
> * Fixed bugs found during testing.
>
> Have a nice day,
> Daniel
>
> [1] v5 https://lore.kernel.org/linux-btrfs/cover.1706116485.git.josef@xxxxxxxxxxxxxx/
> [2] https://lore.kernel.org/linux-btrfs/20251112193611.2536093-1-neelx@xxxxxxxx/
> [3] v6 https://lore.kernel.org/linux-btrfs/20260206182336.1397715-1-neelx@xxxxxxxx/
>
> Josef Bacik (33):
> fscrypt: add per-extent encryption support
> fscrypt: allow inline encryption for extent based encryption
> fscrypt: add a __fscrypt_file_open helper
> fscrypt: conditionally don't wipe mk secret until the last active user
> is done
> blk-crypto: add a process bio callback
> fscrypt: add a process_bio hook to fscrypt_operations
> fscrypt: add documentation about extent encryption
> btrfs: add infrastructure for safe em freeing
> btrfs: select encryption dependencies if FS_ENCRYPTION
> btrfs: add fscrypt_info and encryption_type to ordered_extent
> btrfs: plumb through setting the fscrypt_info for ordered extents
> btrfs: populate the ordered_extent with the fscrypt context
> btrfs: keep track of fscrypt info and orig_start for dio reads
> btrfs: add extent encryption context tree item type
> btrfs: pass through fscrypt_extent_info to the file extent helpers
> btrfs: implement the fscrypt extent encryption hooks
> btrfs: setup fscrypt_extent_info for new extents
> btrfs: populate ordered_extent with the orig offset
> btrfs: set the bio fscrypt context when applicable
> btrfs: add a bio argument to btrfs_csum_one_bio
> btrfs: limit encrypted writes to 256 segments
> btrfs: implement process_bio cb for fscrypt
> btrfs: implement read repair for encryption
> btrfs: add test_dummy_encryption support
> btrfs: make btrfs_ref_to_path handle encrypted filenames
> btrfs: deal with encrypted symlinks in send
> btrfs: decrypt file names for send
> btrfs: load the inode context before sending writes
> btrfs: set the appropriate free space settings in reconfigure
> btrfs: support encryption with log replay
> btrfs: disable auto defrag on encrypted files
> btrfs: disable encryption on RAID5/6
> btrfs: disable send if we have encryption enabled
>
> Omar Sandoval (6):
> fscrypt: expose fscrypt_nokey_name
> btrfs: start using fscrypt hooks
> btrfs: add inode encryption contexts
> btrfs: add new FEATURE_INCOMPAT_ENCRYPT flag
> btrfs: adapt readdir for encrypted and nokey names
> btrfs: implement fscrypt ioctls
>
> Sweet Tea Dorminy (4):
> btrfs: handle nokey names
> btrfs: add get_devices hook for fscrypt
> btrfs: set file extent encryption excplicitly
> btrfs: add fscrypt_info and encryption_type to extent_map
>
> Documentation/filesystems/fscrypt.rst | 41 +++
> block/blk-crypto-fallback.c | 41 +++
> block/blk-crypto-internal.h | 8 +
> block/blk-crypto-profile.c | 2 +
> block/blk-crypto.c | 6 +-
> fs/btrfs/Kconfig | 4 +
> fs/btrfs/Makefile | 1 +
> fs/btrfs/accessors.h | 2 +
> fs/btrfs/backref.c | 43 ++-
> fs/btrfs/bio.c | 155 +++++++++-
> fs/btrfs/bio.h | 14 +-
> fs/btrfs/btrfs_inode.h | 7 +-
> fs/btrfs/compression.c | 6 +
> fs/btrfs/ctree.h | 3 +
> fs/btrfs/defrag.c | 14 +
> fs/btrfs/delayed-inode.c | 25 +-
> fs/btrfs/delayed-inode.h | 5 +-
> fs/btrfs/dir-item.c | 110 ++++++-
> fs/btrfs/dir-item.h | 10 +-
> fs/btrfs/direct-io.c | 28 +-
> fs/btrfs/disk-io.c | 3 +-
> fs/btrfs/extent_io.c | 115 ++++++-
> fs/btrfs/extent_io.h | 3 +
> fs/btrfs/extent_map.c | 102 ++++++-
> fs/btrfs/extent_map.h | 26 ++
> fs/btrfs/file-item.c | 28 +-
> fs/btrfs/file-item.h | 2 +-
> fs/btrfs/file.c | 79 +++++
> fs/btrfs/fs.h | 6 +-
> fs/btrfs/fscrypt.c | 413 ++++++++++++++++++++++++++
> fs/btrfs/fscrypt.h | 86 ++++++
> fs/btrfs/inode.c | 404 +++++++++++++++++++------
> fs/btrfs/ioctl.c | 41 ++-
> fs/btrfs/ordered-data.c | 35 ++-
> fs/btrfs/ordered-data.h | 14 +
> fs/btrfs/reflink.c | 43 ++-
> fs/btrfs/root-tree.c | 9 +-
> fs/btrfs/root-tree.h | 2 +-
> fs/btrfs/send.c | 134 ++++++++-
> fs/btrfs/super.c | 99 +++++-
> fs/btrfs/super.h | 3 +-
> fs/btrfs/sysfs.c | 6 +
> fs/btrfs/tree-checker.c | 64 +++-
> fs/btrfs/tree-log.c | 34 ++-
> fs/btrfs/volumes.c | 5 +
> fs/crypto/crypto.c | 10 +-
> fs/crypto/fname.c | 36 ---
> fs/crypto/fscrypt_private.h | 51 +++-
> fs/crypto/hooks.c | 38 ++-
> fs/crypto/inline_crypt.c | 91 +++++-
> fs/crypto/keyring.c | 18 +-
> fs/crypto/keysetup.c | 164 ++++++++++
> fs/crypto/policy.c | 47 +++
> include/linux/blk-crypto.h | 15 +-
> include/linux/fscrypt.h | 127 ++++++++
> include/uapi/linux/btrfs.h | 1 +
> include/uapi/linux/btrfs_tree.h | 26 +-
> 57 files changed, 2665 insertions(+), 240 deletions(-)
> create mode 100644 fs/btrfs/fscrypt.c
> create mode 100644 fs/btrfs/fscrypt.h
>
> --
> 2.53.0
>