XFS will need to know size of Merkle tree block as these blocks
will not be stored consecutively in fs blocks but under indexes in
extended attributes.

Signed-off-by: Andrey Albershteyn <aalbe...@redhat.com>
---
 fs/btrfs/verity.c         | 3 ++-
 fs/ext4/verity.c          | 3 ++-
 fs/f2fs/verity.c          | 3 ++-
 fs/verity/read_metadata.c | 3 ++-
 fs/verity/verify.c        | 3 ++-
 include/linux/fsverity.h  | 3 ++-
 6 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/fs/btrfs/verity.c b/fs/btrfs/verity.c
index 4c2c09204bb4..737ad277b15a 100644
--- a/fs/btrfs/verity.c
+++ b/fs/btrfs/verity.c
@@ -713,7 +713,8 @@ int btrfs_get_verity_descriptor(struct inode *inode, void 
*buf, size_t buf_size)
  */
 static struct page *btrfs_read_merkle_tree_page(struct inode *inode,
                                                pgoff_t index,
-                                               unsigned long num_ra_pages)
+                                               unsigned long num_ra_pages,
+                                               u8 log_blocksize)
 {
        struct page *page;
        u64 off = (u64)index << PAGE_SHIFT;
diff --git a/fs/ext4/verity.c b/fs/ext4/verity.c
index 35a2feb6fd68..cbf1253dd14a 100644
--- a/fs/ext4/verity.c
+++ b/fs/ext4/verity.c
@@ -361,7 +361,8 @@ static int ext4_get_verity_descriptor(struct inode *inode, 
void *buf,
 
 static struct page *ext4_read_merkle_tree_page(struct inode *inode,
                                               pgoff_t index,
-                                              unsigned long num_ra_pages)
+                                              unsigned long num_ra_pages,
+                                              u8 log_blocksize)
 {
        struct page *page;
 
diff --git a/fs/f2fs/verity.c b/fs/f2fs/verity.c
index 019c7a6c6bcf..63c6a1b1bdef 100644
--- a/fs/f2fs/verity.c
+++ b/fs/f2fs/verity.c
@@ -256,7 +256,8 @@ static int f2fs_get_verity_descriptor(struct inode *inode, 
void *buf,
 
 static struct page *f2fs_read_merkle_tree_page(struct inode *inode,
                                               pgoff_t index,
-                                              unsigned long num_ra_pages)
+                                              unsigned long num_ra_pages,
+                                              u8 log_blocksize)
 {
        struct page *page;
 
diff --git a/fs/verity/read_metadata.c b/fs/verity/read_metadata.c
index cab1612bf4a3..d6cc58c24a2e 100644
--- a/fs/verity/read_metadata.c
+++ b/fs/verity/read_metadata.c
@@ -44,7 +44,8 @@ static int fsverity_read_merkle_tree(struct inode *inode,
                struct page *page;
                const void *virt;
 
-               page = vops->read_merkle_tree_page(inode, index, num_ra_pages);
+               page = vops->read_merkle_tree_page(inode, index, num_ra_pages,
+                                                  
vi->tree_params.log_blocksize);
                if (IS_ERR(page)) {
                        err = PTR_ERR(page);
                        fsverity_err(inode,
diff --git a/fs/verity/verify.c b/fs/verity/verify.c
index c2fc4c86af34..9213b1e5ed2c 100644
--- a/fs/verity/verify.c
+++ b/fs/verity/verify.c
@@ -199,7 +199,8 @@ verify_data_block(struct inode *inode, struct fsverity_info 
*vi,
 
                hpage = inode->i_sb->s_vop->read_merkle_tree_page(inode,
                                hpage_idx, level == 0 ? min(max_ra_pages,
-                                       params->tree_pages - hpage_idx) : 0);
+                                       params->tree_pages - hpage_idx) : 0,
+                               params->log_blocksize);
                if (IS_ERR(hpage)) {
                        err = PTR_ERR(hpage);
                        fsverity_err(inode,
diff --git a/include/linux/fsverity.h b/include/linux/fsverity.h
index 3e923a8e0d6f..ad07a1d10fdf 100644
--- a/include/linux/fsverity.h
+++ b/include/linux/fsverity.h
@@ -103,7 +103,8 @@ struct fsverity_operations {
         */
        struct page *(*read_merkle_tree_page)(struct inode *inode,
                                              pgoff_t index,
-                                             unsigned long num_ra_pages);
+                                             unsigned long num_ra_pages,
+                                             u8 log_blocksize);
 
        /**
         * Write a Merkle tree block to the given inode.
-- 
2.38.4

Reply via email to