]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
fsverity: pass struct file to ->write_merkle_tree_block
authorChristoph Hellwig <hch@lst.de>
Wed, 28 Jan 2026 15:26:17 +0000 (16:26 +0100)
committerEric Biggers <ebiggers@kernel.org>
Thu, 29 Jan 2026 17:39:41 +0000 (09:39 -0800)
This will make an iomap implementation of the method easier.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Andrey Albershteyn <aalbersh@redhat.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Acked-by: David Sterba <dsterba@suse.com> # btrfs
Link: https://lore.kernel.org/r/20260128152630.627409-6-hch@lst.de
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
fs/btrfs/verity.c
fs/ext4/verity.c
fs/f2fs/verity.c
fs/verity/enable.c
include/linux/fsverity.h

index a2ac3fb68bc85c2f5999c38a672bef2b30e5f789..e7643c22a6bfd13c5f7883fe83a9df74881a24c4 100644 (file)
@@ -774,16 +774,17 @@ out:
 /*
  * fsverity op that writes a Merkle tree block into the btree.
  *
- * @inode:     inode to write a Merkle tree block for
+ * @file:      file to write a Merkle tree block for
  * @buf:       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)
  *
  * Returns 0 on success or negative error code on failure
  */
-static int btrfs_write_merkle_tree_block(struct inode *inode, const void *buf,
+static int btrfs_write_merkle_tree_block(struct file *file, const void *buf,
                                         u64 pos, unsigned int size)
 {
+       struct inode *inode = file_inode(file);
        loff_t merkle_pos = merkle_file_pos(inode);
 
        if (merkle_pos < 0)
index 415d9c4d8a321475aa08d717b182d552f1f44049..2ce4cf8a1e314971b881e1f8c800dfef2fdbbde5 100644 (file)
@@ -380,12 +380,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,
+static int ext4_write_merkle_tree_block(struct file *file, const void *buf,
                                        u64 pos, unsigned int size)
 {
-       pos += ext4_verity_metadata_pos(inode);
+       pos += ext4_verity_metadata_pos(file_inode(file));
 
-       return pagecache_write(inode, buf, size, pos);
+       return pagecache_write(file_inode(file), buf, size, pos);
 }
 
 const struct fsverity_operations ext4_verityops = {
index 05b935b552164cd610fb83515376676990d3b786..c1c4d80446818ae3182b0d569319ce0b408d0720 100644 (file)
@@ -278,12 +278,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,
+static int f2fs_write_merkle_tree_block(struct file *file, const void *buf,
                                        u64 pos, unsigned int size)
 {
-       pos += f2fs_verity_metadata_pos(inode);
+       pos += f2fs_verity_metadata_pos(file_inode(file));
 
-       return pagecache_write(inode, buf, size, pos);
+       return pagecache_write(file_inode(file), buf, size, pos);
 }
 
 const struct fsverity_operations f2fs_verityops = {
index 95ec42b847972c1b9bb14c5053a3dbbb85ed651d..c56c18e2605b72135db5d5fa1e84f009277e02cd 100644 (file)
@@ -41,14 +41,15 @@ static int hash_one_block(const struct merkle_tree_params *params,
        return 0;
 }
 
-static int write_merkle_tree_block(struct inode *inode, const u8 *buf,
+static int write_merkle_tree_block(struct file *file, const u8 *buf,
                                   unsigned long index,
                                   const struct merkle_tree_params *params)
 {
+       struct inode *inode = file_inode(file);
        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(file, buf, pos,
                                                          params->block_size);
        if (err)
                fsverity_err(inode, "Error %d writing Merkle tree block %lu",
@@ -135,7 +136,7 @@ static int build_merkle_tree(struct file *filp,
                        err = hash_one_block(params, &buffers[level]);
                        if (err)
                                goto out;
-                       err = write_merkle_tree_block(inode,
+                       err = write_merkle_tree_block(filp,
                                                      buffers[level].data,
                                                      level_offset[level],
                                                      params);
@@ -155,7 +156,7 @@ static int build_merkle_tree(struct file *filp,
                        err = hash_one_block(params, &buffers[level]);
                        if (err)
                                goto out;
-                       err = write_merkle_tree_block(inode,
+                       err = write_merkle_tree_block(filp,
                                                      buffers[level].data,
                                                      level_offset[level],
                                                      params);
index ea1ed2e6c2f96985471df9732a163e7fddd101af..ac5c98fd4602f4cbf37c5de413aa8cbda94f615e 100644 (file)
@@ -114,9 +114,9 @@ struct fsverity_operations {
                                              unsigned long num_ra_pages);
 
        /**
-        * Write a Merkle tree block to the given inode.
+        * Write a Merkle tree block to the given file.
         *
-        * @inode: the inode for which the Merkle tree is being built
+        * @file: the file for which the Merkle tree is being built
         * @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)
@@ -126,7 +126,7 @@ struct fsverity_operations {
         *
         * Return: 0 on success, -errno on failure
         */
-       int (*write_merkle_tree_block)(struct inode *inode, const void *buf,
+       int (*write_merkle_tree_block)(struct file *file, const void *buf,
                                       u64 pos, unsigned int size);
 };