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 <[email protected]> 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/[email protected]/ > [2] > https://lore.kernel.org/linux-btrfs/[email protected]/ > > 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 >
