Linux filesystem development
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org, ebiggers@kernel.org, aalbersh@redhat.com
Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	fsverity@lists.linux.dev
Subject: [PATCH 09/13] fsverity: box up the write_merkle_tree_block parameters too
Date: Fri, 29 Mar 2024 17:35:01 -0700	[thread overview]
Message-ID: <171175868014.1987804.14065724867005749327.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <171175867829.1987804.15934006844321506283.stgit@frogsfrogsfrogs>

From: Darrick J. Wong <djwong@kernel.org>

Box up the tree write request parameters into a structure so that we can
add more in the next few patches.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 fs/btrfs/verity.c        |    6 ++++--
 fs/ext4/verity.c         |    7 +++++--
 fs/f2fs/verity.c         |    7 +++++--
 fs/verity/enable.c       |    5 ++++-
 include/linux/fsverity.h |   21 ++++++++++++++++++---
 5 files changed, 36 insertions(+), 10 deletions(-)


diff --git a/fs/btrfs/verity.c b/fs/btrfs/verity.c
index a3235571bf02d..576547c0f9e54 100644
--- a/fs/btrfs/verity.c
+++ b/fs/btrfs/verity.c
@@ -790,9 +790,11 @@ static struct page *btrfs_read_merkle_tree_page(struct inode *inode,
  *
  * Returns 0 on success or negative error code on failure
  */
-static int btrfs_write_merkle_tree_block(struct inode *inode, const void *buf,
-					 u64 pos, unsigned int size)
+static int btrfs_write_merkle_tree_block(const struct fsverity_writemerkle *req,
+					 const void *buf, u64 pos,
+					 unsigned int size)
 {
+	struct inode *inode = req->inode;
 	loff_t merkle_pos = merkle_file_pos(inode);
 
 	if (merkle_pos < 0)
diff --git a/fs/ext4/verity.c b/fs/ext4/verity.c
index a8ae8c912cb5d..27eb2d51cce2f 100644
--- a/fs/ext4/verity.c
+++ b/fs/ext4/verity.c
@@ -382,9 +382,12 @@ static struct page *ext4_read_merkle_tree_page(struct inode *inode,
 	return folio_file_page(folio, index);
 }
 
-static int ext4_write_merkle_tree_block(struct inode *inode, const void *buf,
-					u64 pos, unsigned int size)
+static int ext4_write_merkle_tree_block(const struct fsverity_writemerkle *req,
+					const void *buf, u64 pos,
+					unsigned int size)
 {
+	struct inode *inode = req->inode;
+
 	pos += ext4_verity_metadata_pos(inode);
 
 	return pagecache_write(inode, buf, size, pos);
diff --git a/fs/f2fs/verity.c b/fs/f2fs/verity.c
index 595d702c2c5c4..f8d974818f3bb 100644
--- a/fs/f2fs/verity.c
+++ b/fs/f2fs/verity.c
@@ -279,9 +279,12 @@ static struct page *f2fs_read_merkle_tree_page(struct inode *inode,
 	return folio_file_page(folio, index);
 }
 
-static int f2fs_write_merkle_tree_block(struct inode *inode, const void *buf,
-					u64 pos, unsigned int size)
+static int f2fs_write_merkle_tree_block(const struct fsverity_writemerkle *req,
+					const void *buf, u64 pos,
+					unsigned int size)
 {
+	struct inode *inode = req->inode;
+
 	pos += f2fs_verity_metadata_pos(inode);
 
 	return pagecache_write(inode, buf, size, pos);
diff --git a/fs/verity/enable.c b/fs/verity/enable.c
index 1d4a6de960149..233b20fb12ff5 100644
--- a/fs/verity/enable.c
+++ b/fs/verity/enable.c
@@ -50,10 +50,13 @@ static int write_merkle_tree_block(struct inode *inode, const u8 *buf,
 				   unsigned long index,
 				   const struct merkle_tree_params *params)
 {
+	struct fsverity_writemerkle req = {
+		.inode = inode,
+	};
 	u64 pos = (u64)index << params->log_blocksize;
 	int err;
 
-	err = inode->i_sb->s_vop->write_merkle_tree_block(inode, buf, pos,
+	err = inode->i_sb->s_vop->write_merkle_tree_block(&req, buf, pos,
 							  params->block_size);
 	if (err)
 		fsverity_err(inode, "Error %d writing Merkle tree block %lu",
diff --git a/include/linux/fsverity.h b/include/linux/fsverity.h
index 5b1485a842983..5dacd30d65353 100644
--- a/include/linux/fsverity.h
+++ b/include/linux/fsverity.h
@@ -75,6 +75,20 @@ struct fsverity_readmerkle {
 	u8 log_blocksize;
 };
 
+/**
+ * struct fsverity_writemerkle - Request to write a Merkle Tree block buffer
+ * @inode: the inode to read
+ * @level: level of the block; level 0 are the leaves
+ * @num_levels: number of levels in the tree total
+ * @log_blocksize: log2 of the size of the block
+ */
+struct fsverity_writemerkle {
+	struct inode *inode;
+	int level;
+	int num_levels;
+	u8 log_blocksize;
+};
+
 /* Verity operations for filesystems */
 struct fsverity_operations {
 
@@ -185,7 +199,7 @@ struct fsverity_operations {
 	/**
 	 * Write a Merkle tree block to the given inode.
 	 *
-	 * @inode: the inode for which the Merkle tree is being built
+	 * @req: write request; see struct fsverity_writemerkle
 	 * @buf: the Merkle tree block to write
 	 * @pos: the position of the block in the Merkle tree (in bytes)
 	 * @size: the Merkle tree block size (in bytes)
@@ -195,8 +209,9 @@ struct fsverity_operations {
 	 *
 	 * Return: 0 on success, -errno on failure
 	 */
-	int (*write_merkle_tree_block)(struct inode *inode, const void *buf,
-				       u64 pos, unsigned int size);
+	int (*write_merkle_tree_block)(const struct fsverity_writemerkle *req,
+				       const void *buf, u64 pos,
+				       unsigned int size);
 
 	/**
 	 * Release the reference to a Merkle tree block


  parent reply	other threads:[~2024-03-30  0:35 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-30  0:30 [PATCHBOMB v5.5] fs-verity support for XFS Darrick J. Wong
2024-03-30  0:32 ` [PATCHSET v5.5 1/2] fs-verity: support merkle tree access by blocks Darrick J. Wong
2024-03-30  0:32   ` [PATCH 01/13] fs: add FS_XFLAG_VERITY for verity files Darrick J. Wong
2024-03-30  0:33   ` [PATCH 02/13] fsverity: pass tree_blocksize to end_enable_verity() Darrick J. Wong
2024-03-30  0:33   ` [PATCH 03/13] fsverity: support block-based Merkle tree caching Darrick J. Wong
2024-04-05  2:31     ` Eric Biggers
2024-04-24 21:25       ` Darrick J. Wong
2024-04-24 22:08         ` Eric Biggers
2024-04-25  0:27           ` Darrick J. Wong
2024-04-25  0:46             ` Eric Biggers
2024-04-25  0:53               ` Darrick J. Wong
2024-03-30  0:33   ` [PATCH 04/13] fsverity: add per-sb workqueue for post read processing Darrick J. Wong
2024-04-05  2:39     ` Eric Biggers
2024-04-24 21:33       ` Darrick J. Wong
2024-03-30  0:33   ` [PATCH 05/13] fsverity: add tracepoints Darrick J. Wong
2024-03-30  0:34   ` [PATCH 06/13] fsverity: send the level of the merkle tree block to ->read_merkle_tree_block Darrick J. Wong
2024-04-05  2:42     ` Eric Biggers
2024-04-25  0:30       ` Darrick J. Wong
2024-03-30  0:34   ` [PATCH 07/13] fsverity: pass the new tree size and block size to ->begin_enable_verity Darrick J. Wong
2024-04-05  2:46     ` Eric Biggers
2024-04-24 21:36       ` Darrick J. Wong
2024-03-30  0:34   ` [PATCH 08/13] fsverity: expose merkle tree geometry to callers Darrick J. Wong
2024-04-05  2:50     ` Eric Biggers
2024-04-25  0:45       ` Darrick J. Wong
2024-04-25  0:49         ` Eric Biggers
2024-04-25  1:01           ` Darrick J. Wong
2024-04-25  1:04             ` Eric Biggers
2024-03-30  0:35   ` Darrick J. Wong [this message]
2024-04-05  2:52     ` [PATCH 09/13] fsverity: box up the write_merkle_tree_block parameters too Eric Biggers
2024-04-25  0:46       ` Darrick J. Wong
2024-03-30  0:35   ` [PATCH 10/13] fsverity: pass the zero-hash value to the implementation Darrick J. Wong
2024-04-05  2:57     ` Eric Biggers
2024-04-24 19:02       ` Darrick J. Wong
2024-04-24 19:19         ` Eric Biggers
2024-04-24 20:23           ` Darrick J. Wong
2024-04-24 20:59             ` Eric Biggers
2024-04-24 21:43               ` Darrick J. Wong
2024-03-30  0:35   ` [PATCH 11/13] fsverity: report validation errors back to the filesystem Darrick J. Wong
2024-04-05  3:09     ` Eric Biggers
2024-04-24 18:18       ` Darrick J. Wong
2024-04-24 18:52         ` Eric Biggers
2024-04-24 19:03           ` Darrick J. Wong
2024-03-30  0:35   ` [PATCH 12/13] fsverity: remove system-wide workqueue Darrick J. Wong
2024-04-05  3:14     ` Eric Biggers
2024-04-24 18:05       ` Darrick J. Wong
2024-04-24 18:41         ` Eric Biggers
2024-04-29 10:15         ` Andrey Albershteyn
2024-04-29 16:35           ` Darrick J. Wong
2024-03-30  0:36   ` [PATCH 13/13] iomap: integrate fs-verity verification into iomap's read path Darrick J. Wong
2024-03-30  0:32 ` [PATCHSET v5.5 2/2] xfs: fs-verity support Darrick J. Wong
2024-03-30  0:36   ` [PATCH 01/29] xfs: use unsigned ints for non-negative quantities in xfs_attr_remote.c Darrick J. Wong
2024-04-02  9:51     ` Andrey Albershteyn
2024-04-02 16:25       ` Darrick J. Wong
2024-03-30  0:36   ` [PATCH 02/29] xfs: turn XFS_ATTR3_RMT_BUF_SPACE into a function Darrick J. Wong
2024-04-02 10:09     ` Andrey Albershteyn
2024-03-30  0:36   ` [PATCH 03/29] xfs: create a helper to compute the blockcount of a max sized remote value Darrick J. Wong
2024-04-02 10:09     ` Andrey Albershteyn
2024-03-30  0:37   ` [PATCH 04/29] xfs: minor cleanups of xfs_attr3_rmt_blocks Darrick J. Wong
2024-04-02 10:11     ` Andrey Albershteyn
2024-03-30  0:37   ` [PATCH 05/29] xfs: add attribute type for fs-verity Darrick J. Wong
2024-03-30  0:37   ` [PATCH 06/29] xfs: do not use xfs_attr3_rmt_hdr for remote verity value blocks Darrick J. Wong
2024-03-30  0:37   ` [PATCH 07/29] xfs: add fs-verity ro-compat flag Darrick J. Wong
2024-03-30  0:38   ` [PATCH 08/29] xfs: add inode on-disk VERITY flag Darrick J. Wong
2024-03-30  0:38   ` [PATCH 09/29] xfs: initialize fs-verity on file open and cleanup on inode destruction Darrick J. Wong
2024-03-30  0:38   ` [PATCH 10/29] xfs: don't allow to enable DAX on fs-verity sealed inode Darrick J. Wong
2024-03-30  0:38   ` [PATCH 11/29] xfs: disable direct read path for fs-verity files Darrick J. Wong
2024-03-30  0:39   ` [PATCH 12/29] xfs: widen flags argument to the xfs_iflags_* helpers Darrick J. Wong
2024-04-02 12:37     ` Andrey Albershteyn
2024-04-02 16:27       ` Darrick J. Wong
2024-03-30  0:39   ` [PATCH 13/29] xfs: add fs-verity support Darrick J. Wong
2024-04-02  8:42     ` Andrey Albershteyn
2024-04-02 16:34       ` Darrick J. Wong
2024-04-25  1:14         ` Darrick J. Wong
2024-03-30  0:39   ` [PATCH 14/29] xfs: create a per-mount shrinker for verity inodes merkle tree blocks Darrick J. Wong
2024-04-05  3:16     ` Eric Biggers
2024-04-24 17:39       ` Darrick J. Wong
2024-03-30  0:39   ` [PATCH 15/29] xfs: create an icache tag for files with cached " Darrick J. Wong
2024-03-30  0:40   ` [PATCH 16/29] xfs: shrink verity blob cache Darrick J. Wong
2024-03-30  0:40   ` [PATCH 17/29] xfs: only allow the verity iflag for regular files Darrick J. Wong
2024-04-02 12:52     ` Andrey Albershteyn
2024-03-30  0:40   ` [PATCH 18/29] xfs: don't store trailing zeroes of merkle tree blocks Darrick J. Wong
2024-03-30  0:41   ` [PATCH 19/29] xfs: use merkle tree offset as attr hash Darrick J. Wong
2024-03-30  0:41   ` [PATCH 20/29] xfs: don't bother storing merkle tree blocks for zeroed data blocks Darrick J. Wong
2024-03-30  0:41   ` [PATCH 21/29] xfs: add fs-verity ioctls Darrick J. Wong
2024-03-30  0:41   ` [PATCH 22/29] xfs: advertise fs-verity being available on filesystem Darrick J. Wong
2024-04-02 13:44     ` Andrey Albershteyn
2024-03-30  0:42   ` [PATCH 23/29] xfs: make scrub aware of verity dinode flag Darrick J. Wong
2024-03-30  0:42   ` [PATCH 24/29] xfs: teach online repair to evaluate fsverity xattrs Darrick J. Wong
2024-04-02 15:42     ` Andrey Albershteyn
2024-04-02 16:42       ` Darrick J. Wong
2024-03-30  0:42   ` [PATCH 25/29] xfs: report verity failures through the health system Darrick J. Wong
2024-04-02 16:16     ` Andrey Albershteyn
2024-03-30  0:42   ` [PATCH 26/29] xfs: clear the verity iflag when not appropriate Darrick J. Wong
2024-04-02 16:26     ` Andrey Albershteyn
2024-03-30  0:43   ` [PATCH 27/29] xfs: make it possible to disable fsverity Darrick J. Wong
2024-04-02 17:15     ` Andrey Albershteyn
2024-04-02 23:25     ` Eric Biggers
2024-04-03  1:26       ` Darrick J. Wong
2024-03-30  0:43   ` [PATCH 28/29] xfs: allow verity files to be opened even if the fsverity metadata is damaged Darrick J. Wong
2024-04-02 18:04     ` Andrey Albershteyn
2024-04-02 20:00     ` Colin Walters
2024-04-02 22:52       ` Darrick J. Wong
2024-04-02 23:45         ` Eric Biggers
2024-04-03  1:34           ` Darrick J. Wong
2024-04-03  0:10         ` Colin Walters
2024-04-03  1:39           ` Darrick J. Wong
2024-04-03  1:59             ` Dave Chinner
2024-04-03  3:19               ` Darrick J. Wong
2024-04-03 22:22                 ` Dave Chinner
2024-04-03  8:35           ` Alexander Larsson
2024-03-30  0:43   ` [PATCH 29/29] xfs: enable ro-compat fs-verity flag Darrick J. Wong

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=171175868014.1987804.14065724867005749327.stgit@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=aalbersh@redhat.com \
    --cc=ebiggers@kernel.org \
    --cc=fsverity@lists.linux.dev \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    /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