Heads up,
I also have related btrfs-progs and xfs-tests changes matching this
series. But I won't be able to send them before my vacation next week.
That also means I will (most likely) not be able to get back to review
feedback before Feb 16. But for sure, any feedback is appreciated.
Thank you,
Daniel
On Fri, 6 Feb 2026 at 19:23, Daniel Vacek <neelx@suse.com> 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 isabled for now.
>
> There are a few changes since v5:
> * 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@toxicpanda.com/
> [2] https://lore.kernel.org/linux-btrfs/20251112193611.2536093-1-neelx@suse.com/
>
> 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 | 43 +++
> block/blk-crypto-internal.h | 8 +
> block/blk-crypto-profile.c | 2 +
> block/blk-crypto.c | 6 +-
> fs/btrfs/Kconfig | 3 +
> fs/btrfs/Makefile | 1 +
> fs/btrfs/accessors.h | 2 +
> fs/btrfs/backref.c | 42 ++-
> fs/btrfs/bio.c | 146 ++++++++-
> fs/btrfs/bio.h | 14 +-
> fs/btrfs/btrfs_inode.h | 6 +-
> 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 | 102 +++++-
> 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 | 75 +++++
> fs/btrfs/fs.h | 6 +-
> fs/btrfs/fscrypt.c | 446 ++++++++++++++++++++++++++
> fs/btrfs/fscrypt.h | 108 +++++++
> fs/btrfs/inode.c | 408 +++++++++++++++++------
> 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 | 67 +++-
> fs/btrfs/tree-log.c | 34 +-
> fs/crypto/crypto.c | 10 +-
> fs/crypto/fname.c | 36 ---
> fs/crypto/fscrypt_private.h | 42 +++
> fs/crypto/hooks.c | 38 ++-
> fs/crypto/inline_crypt.c | 84 ++++-
> fs/crypto/keyring.c | 18 +-
> fs/crypto/keysetup.c | 165 ++++++++++
> fs/crypto/policy.c | 47 +++
> include/linux/blk-crypto.h | 15 +-
> include/linux/fscrypt.h | 125 ++++++++
> include/uapi/linux/btrfs.h | 1 +
> include/uapi/linux/btrfs_tree.h | 26 +-
> 56 files changed, 2683 insertions(+), 240 deletions(-)
> create mode 100644 fs/btrfs/fscrypt.c
> create mode 100644 fs/btrfs/fscrypt.h
>
> --
> 2.51.0
>