Message ID | cover.1662420176.git.sweettea-kernel@dorminy.me (mailing list archive) |
---|---|
Headers | show |
Series | btrfs: add fscrypt integration | expand |
On Mon, Sep 05, 2022 at 08:35:15PM -0400, Sweet Tea Dorminy wrote:
> This is a changeset adding encryption to btrfs.
What git tree and commit does this apply to?
- Eric
On 9/6/22 18:35, Eric Biggers wrote: > On Mon, Sep 05, 2022 at 08:35:15PM -0400, Sweet Tea Dorminy wrote: >> This is a changeset adding encryption to btrfs. > > What git tree and commit does this apply to? https://github.com/kdave/btrfs-devel/; branch misc-next. Should apply cleanly to its current tip, 76ccdc004e12312ea056811d530043ff11d050c6 .
On Tue, Sep 06, 2022 at 07:01:15PM -0400, Sweet Tea Dorminy wrote: > > > On 9/6/22 18:35, Eric Biggers wrote: > > On Mon, Sep 05, 2022 at 08:35:15PM -0400, Sweet Tea Dorminy wrote: > > > This is a changeset adding encryption to btrfs. > > > > What git tree and commit does this apply to? > > https://github.com/kdave/btrfs-devel/; branch misc-next. Should apply > cleanly to its current tip, 76ccdc004e12312ea056811d530043ff11d050c6 . Patch 8 wasn't received by linux-fscrypt for some reason, any idea why? $ b4 am cover.1662420176.git.sweettea-kernel@dorminy.me Looking up https://lore.kernel.org/linux-fscrypt/cover.1662420176.git.sweettea-kernel%40dorminy.me Grabbing thread from lore.kernel.org/linux-fscrypt/cover.1662420176.git.sweettea-kernel%40dorminy.me/t.mbox.gz Analyzing 22 messages in the thread Checking attestation on all messages, may take a moment... --- [PATCH v2 1/20] fscrypt: expose fscrypt_nokey_name [PATCH v2 2/20] fscrypt: add flag allowing partially-encrypted directories [PATCH v2 3/20] fscrypt: add fscrypt_have_same_policy() to check inode compatibility [PATCH v2 4/20] fscrypt: allow fscrypt_generate_iv() to distinguish filenames [PATCH v2 5/20] fscrypt: add extent-based encryption [PATCH v2 6/20] fscrypt: document btrfs' fscrypt quirks. [PATCH v2 7/20] btrfs: store directory's encryption state ERROR: missing [8/20]! [PATCH v2 9/20] btrfs: setup fscrypt_names from dentrys using helper [PATCH v2 10/20] btrfs: factor a fscrypt_name matching method [PATCH v2 11/20] btrfs: disable various operations on encrypted inodes [PATCH v2 12/20] btrfs: start using fscrypt hooks. [PATCH v2 13/20] btrfs: add fscrypt_context items. [PATCH v2 14/20] btrfs: translate btrfs encryption flags and encrypted inode flag. [PATCH v2 15/20] btrfs: store a fscrypt extent context per normal file extent [PATCH v2 16/20] btrfs: Add new FEATURE_INCOMPAT_FSCRYPT feature flag. [PATCH v2 17/20] btrfs: reuse encrypted filename hash when possible. [PATCH v2 18/20] btrfs: adapt directory read and lookup to potentially encrypted filenames [PATCH v2 19/20] btrfs: encrypt normal file extent data if appropriate [PATCH v2 20/20] btrfs: implement fscrypt ioctls
On 2022-09-06 19:10, Eric Biggers wrote: > On Tue, Sep 06, 2022 at 07:01:15PM -0400, Sweet Tea Dorminy wrote: >> >> >> On 9/6/22 18:35, Eric Biggers wrote: >> > On Mon, Sep 05, 2022 at 08:35:15PM -0400, Sweet Tea Dorminy wrote: >> > > This is a changeset adding encryption to btrfs. >> > >> > What git tree and commit does this apply to? >> >> https://github.com/kdave/btrfs-devel/; branch misc-next. Should apply >> cleanly to its current tip, 76ccdc004e12312ea056811d530043ff11d050c6 . > > Patch 8 wasn't received by linux-fscrypt for some reason, any idea why? > > $ b4 am cover.1662420176.git.sweettea-kernel@dorminy.me > Looking up > https://lore.kernel.org/linux-fscrypt/cover.1662420176.git.sweettea-kernel%40dorminy.me > Grabbing thread from > lore.kernel.org/linux-fscrypt/cover.1662420176.git.sweettea-kernel%40dorminy.me/t.mbox.gz > Analyzing 22 messages in the thread > Checking attestation on all messages, may take a moment... > --- > [PATCH v2 1/20] fscrypt: expose fscrypt_nokey_name > [PATCH v2 2/20] fscrypt: add flag allowing partially-encrypted > directories > [PATCH v2 3/20] fscrypt: add fscrypt_have_same_policy() to check > inode compatibility > [PATCH v2 4/20] fscrypt: allow fscrypt_generate_iv() to distinguish > filenames > [PATCH v2 5/20] fscrypt: add extent-based encryption > [PATCH v2 6/20] fscrypt: document btrfs' fscrypt quirks. > [PATCH v2 7/20] btrfs: store directory's encryption state > ERROR: missing [8/20]! > [PATCH v2 9/20] btrfs: setup fscrypt_names from dentrys using helper > [PATCH v2 10/20] btrfs: factor a fscrypt_name matching method > [PATCH v2 11/20] btrfs: disable various operations on encrypted > inodes > [PATCH v2 12/20] btrfs: start using fscrypt hooks. > [PATCH v2 13/20] btrfs: add fscrypt_context items. > [PATCH v2 14/20] btrfs: translate btrfs encryption flags and > encrypted inode flag. > [PATCH v2 15/20] btrfs: store a fscrypt extent context per normal > file extent > [PATCH v2 16/20] btrfs: Add new FEATURE_INCOMPAT_FSCRYPT feature > flag. > [PATCH v2 17/20] btrfs: reuse encrypted filename hash when possible. > [PATCH v2 18/20] btrfs: adapt directory read and lookup to > potentially encrypted filenames > [PATCH v2 19/20] btrfs: encrypt normal file extent data if > appropriate > [PATCH v2 20/20] btrfs: implement fscrypt ioctls Patch 8 is large and dull, and bounced from linux-fscrypt@ for size, but b4 gets it for me. b4 -p linux-fscrypt recreates the missing [8/20]; is it possible that option is set somewhere in your configuration? $ b4 am -o- cover.1662420176.git.sweettea-kernel@dorminy.me | git am Looking up https://lore.kernel.org/r/cover.1662420176.git.sweettea-kernel%40dorminy.me Grabbing thread from lore.kernel.org/all/cover.1662420176.git.sweettea-kernel%40dorminy.me/t.mbox.gz Analyzing 23 messages in the thread Checking attestation on all messages, may take a moment... --- ✓ [PATCH v2 1/20] fscrypt: expose fscrypt_nokey_name ✓ [PATCH v2 2/20] fscrypt: add flag allowing partially-encrypted directories ✓ [PATCH v2 3/20] fscrypt: add fscrypt_have_same_policy() to check inode compatibility ✓ [PATCH v2 4/20] fscrypt: allow fscrypt_generate_iv() to distinguish filenames ✓ [PATCH v2 5/20] fscrypt: add extent-based encryption ✓ [PATCH v2 6/20] fscrypt: document btrfs' fscrypt quirks. ✓ [PATCH v2 7/20] btrfs: store directory's encryption state ✓ [PATCH v2 8/20] btrfs: use fscrypt_names instead of name/len everywhere. ✓ [PATCH v2 9/20] btrfs: setup fscrypt_names from dentrys using helper ✓ [PATCH v2 10/20] btrfs: factor a fscrypt_name matching method ✓ [PATCH v2 11/20] btrfs: disable various operations on encrypted inodes + Reported-by: kernel test robot <lkp@intel.com> (✓ DKIM/intel.com) ✓ [PATCH v2 12/20] btrfs: start using fscrypt hooks. ✓ [PATCH v2 13/20] btrfs: add fscrypt_context items. ✓ [PATCH v2 14/20] btrfs: translate btrfs encryption flags and encrypted inode flag. ✓ [PATCH v2 15/20] btrfs: store a fscrypt extent context per normal file extent ✓ [PATCH v2 16/20] btrfs: Add new FEATURE_INCOMPAT_FSCRYPT feature flag. ✓ [PATCH v2 17/20] btrfs: reuse encrypted filename hash when possible. ✓ [PATCH v2 18/20] btrfs: adapt directory read and lookup to potentially encrypted filenames ✓ [PATCH v2 19/20] btrfs: encrypt normal file extent data if appropriate ✓ [PATCH v2 20/20] btrfs: implement fscrypt ioctls --- ✓ Signed: DKIM/dorminy.me --- Total patches: 20 --- Link: https://lore.kernel.org/r/cover.1662420176.git.sweettea-kernel@dorminy.me ...
On Mon, Sep 05, 2022 at 08:35:15PM -0400, Sweet Tea Dorminy wrote: > This is a changeset adding encryption to btrfs. > > Last October, Omar Sandoval sent out a design document for having fscrypt > integration with btrfs [1]. In summary, it proposes btrfs storing its > own encryption IVs on a per-file-extent basis. fscrypt usually encrypts > files using an IV derived from per-inode information; this would prevent > snapshotting or reflinking or data relocation for btrfs. We have > refined this into a fscrypt extent context object, opaque to the > filesystem, which fscrypt uses to generate an IV associated with each > block in an extent. Thus, all the inodes sharing a particular > key and file extent may decrypt the extent. > > This series implements this integration for the simple > case, non-compressed data extents. Followup changes will allow > encryption of compressed extents, inline extents, and verity items, and > will add tests around subvolume encryption. This series should provide > encryption for the simplest cases, but this series should not be used in > production, as there are likely bugs. > > Preliminary btrfs-progs changes are available at [2]; fstests changes > are available at [3]. I did a quick pass to check if there's anything that could be merged to 6.1 as preparatory, the fname is a candidate but I've also seen random coding style issues that I'd like to get fixed first. One thing I've noticed is that the incompat bit is only defined but not used anywhere. Any functional change should be guarded behind it, and once the implementation is complete the enabling part is in a separate patch. Regarding the build config options, I assume that the fscrypt support is optional, so it should build with and without the option. I'm not sure I've see enough ifdefs for that. For such features there should be a line in btrfs_print_mod_info, like we have eg. for verity. I'll post other comments under the patches.