From: Daniel Vacek <neelx@suse.com>
To: Chris Mason <clm@fb.com>, Josef Bacik <josef@toxicpanda.com>,
David Sterba <dsterba@suse.com>
Cc: Daniel Vacek <neelx@suse.com>,
linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org,
Omar Sandoval <osandov@osandov.com>,
Sweet Tea Dorminy <sweettea-kernel@dorminy.me>
Subject: [PATCH v6 1/8] btrfs: disable various operations on encrypted inodes
Date: Wed, 12 Nov 2025 20:36:01 +0100 [thread overview]
Message-ID: <20251112193611.2536093-2-neelx@suse.com> (raw)
In-Reply-To: <20251112193611.2536093-1-neelx@suse.com>
From: Omar Sandoval <osandov@osandov.com>
Initially, only normal data extents will be encrypted. This change
forbids various other bits:
- allows reflinking only if both inodes have the same encryption status
- disable inline data on encrypted inodes
Signed-off-by: Omar Sandoval <osandov@osandov.com>
Signed-off-by: Sweet Tea Dorminy <sweettea-kernel@dorminy.me>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Daniel Vacek <neelx@suse.com>
---
v5 was 'Reviewed-by: Boris Burkov <boris@bur.io>' [1] but the rebase
changed the code a bit so dropping.
[1] https://lore.kernel.org/linux-btrfs/20240124195303.GC1789919@zen.localdomain/
---
fs/btrfs/inode.c | 4 ++++
fs/btrfs/reflink.c | 7 +++++++
2 files changed, 11 insertions(+)
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 8737914e8552..b810e831fc23 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -592,6 +592,10 @@ static bool can_cow_file_range_inline(struct btrfs_inode *inode,
if (size < i_size_read(&inode->vfs_inode))
return false;
+ /* Encrypted file cannot be inlined. */
+ if (IS_ENCRYPTED(&inode->vfs_inode))
+ return false;
+
return true;
}
diff --git a/fs/btrfs/reflink.c b/fs/btrfs/reflink.c
index 775a32a7953a..3c9c570d6493 100644
--- a/fs/btrfs/reflink.c
+++ b/fs/btrfs/reflink.c
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0
#include <linux/blkdev.h>
+#include <linux/fscrypt.h>
#include <linux/iversion.h>
#include "ctree.h"
#include "fs.h"
@@ -789,6 +790,12 @@ static int btrfs_remap_file_range_prep(struct file *file_in, loff_t pos_in,
ASSERT(inode_in->vfs_inode.i_sb == inode_out->vfs_inode.i_sb);
}
+ /*
+ * Can only reflink encrypted files if both files are encrypted.
+ */
+ if (IS_ENCRYPTED(&inode_in->vfs_inode) != IS_ENCRYPTED(&inode_out->vfs_inode))
+ return -EINVAL;
+
/* Don't make the dst file partly checksummed */
if ((inode_in->flags & BTRFS_INODE_NODATASUM) !=
(inode_out->flags & BTRFS_INODE_NODATASUM)) {
--
2.51.0
next prev parent reply other threads:[~2025-11-12 19:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-12 19:36 [PATCH v6 0/8] btrfs: add fscrypt support, PART 1 Daniel Vacek
2025-11-12 19:36 ` Daniel Vacek [this message]
2025-11-12 21:10 ` [PATCH v6 1/8] btrfs: disable various operations on encrypted inodes Qu Wenruo
2025-11-13 10:22 ` David Sterba
2025-11-12 19:36 ` [PATCH v6 2/8] btrfs: disable verity " Daniel Vacek
2025-11-13 10:25 ` David Sterba
2025-11-12 19:36 ` [PATCH v6 3/8] btrfs: add a bio argument to btrfs_csum_one_bio Daniel Vacek
2025-11-12 21:02 ` Qu Wenruo
2025-11-13 19:07 ` Daniel Vacek
2025-11-13 20:16 ` Qu Wenruo
2025-11-18 14:05 ` Daniel Vacek
2025-11-18 15:08 ` Christoph Hellwig
2025-11-18 15:45 ` Daniel Vacek
2025-11-18 21:05 ` Qu Wenruo
2025-11-19 7:34 ` Daniel Vacek
2025-11-19 8:16 ` Qu Wenruo
2025-11-19 8:22 ` Christoph Hellwig
2025-11-19 9:28 ` Daniel Vacek
2025-11-19 9:32 ` Christoph Hellwig
2025-11-19 9:48 ` Daniel Vacek
2025-11-12 19:36 ` [PATCH v6 4/8] btrfs: add orig_logical to btrfs_bio Daniel Vacek
2025-11-12 21:07 ` Qu Wenruo
2025-11-13 19:16 ` Daniel Vacek
2025-11-12 19:36 ` [PATCH v6 5/8] btrfs: don't rewrite ret from inode_permission Daniel Vacek
2025-11-12 19:36 ` [PATCH v6 6/8] btrfs: move inode_to_path higher in backref.c Daniel Vacek
2025-11-12 19:36 ` [PATCH v6 7/8] btrfs: don't search back for dir inode item in INO_LOOKUP_USER Daniel Vacek
2025-11-12 19:36 ` [PATCH v6 8/8] btrfs: set the appropriate free space settings in reconfigure Daniel Vacek
2025-11-13 10:32 ` David Sterba
2025-11-13 11:24 ` Daniel Vacek
2025-11-18 12:10 ` David Sterba
2025-11-18 15:04 ` [PATCH v6 0/8] btrfs: add fscrypt support, PART 1 David Sterba
2025-11-18 16:14 ` Daniel Vacek
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=20251112193611.2536093-2-neelx@suse.com \
--to=neelx@suse.com \
--cc=clm@fb.com \
--cc=dsterba@suse.com \
--cc=josef@toxicpanda.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=osandov@osandov.com \
--cc=sweettea-kernel@dorminy.me \
/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