Move the fsverity_info pointer into the filesystem-specific part of the
inode by adding the field btrfs_inode::i_verity_info and configuring
fsverity_operations::inode_info_offs accordingly.

This is a prerequisite for a later commit that removes
inode::i_verity_info, saving memory and improving cache efficiency on
filesystems that don't support fsverity.

Co-developed-by: Christian Brauner <[email protected]>
Signed-off-by: Christian Brauner <[email protected]>
Signed-off-by: Eric Biggers <[email protected]>
---
 fs/btrfs/btrfs_inode.h | 5 +++++
 fs/btrfs/inode.c       | 3 +++
 fs/btrfs/verity.c      | 2 ++
 3 files changed, 10 insertions(+)

diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h
index b99fb02732929..2c9489497cbea 100644
--- a/fs/btrfs/btrfs_inode.h
+++ b/fs/btrfs/btrfs_inode.h
@@ -336,10 +336,15 @@ struct btrfs_inode {
 
        /* Hook into fs_info->delayed_iputs */
        struct list_head delayed_iput;
 
        struct rw_semaphore i_mmap_lock;
+
+#ifdef CONFIG_FS_VERITY
+       struct fsverity_info *i_verity_info;
+#endif
+
        struct inode vfs_inode;
 };
 
 static inline u64 btrfs_get_first_dir_index_to_log(const struct btrfs_inode 
*inode)
 {
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index b77dd22b8cdbe..de722b232ec14 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7959,10 +7959,13 @@ int btrfs_drop_inode(struct inode *inode)
 static void init_once(void *foo)
 {
        struct btrfs_inode *ei = foo;
 
        inode_init_once(&ei->vfs_inode);
+#ifdef CONFIG_FS_VERITY
+       ei->i_verity_info = NULL;
+#endif
 }
 
 void __cold btrfs_destroy_cachep(void)
 {
        /*
diff --git a/fs/btrfs/verity.c b/fs/btrfs/verity.c
index b7a96a005487e..4633cbcfcdb90 100644
--- a/fs/btrfs/verity.c
+++ b/fs/btrfs/verity.c
@@ -800,10 +800,12 @@ static int btrfs_write_merkle_tree_block(struct inode 
*inode, const void *buf,
        return write_key_bytes(BTRFS_I(inode), BTRFS_VERITY_MERKLE_ITEM_KEY,
                               pos, buf, size);
 }
 
 const struct fsverity_operations btrfs_verityops = {
+       .inode_info_offs         = (int)offsetof(struct btrfs_inode, 
i_verity_info) -
+                                  (int)offsetof(struct btrfs_inode, vfs_inode),
        .begin_enable_verity     = btrfs_begin_enable_verity,
        .end_enable_verity       = btrfs_end_enable_verity,
        .get_verity_descriptor   = btrfs_get_verity_descriptor,
        .read_merkle_tree_page   = btrfs_read_merkle_tree_page,
        .write_merkle_tree_block = btrfs_write_merkle_tree_block,
-- 
2.50.1



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to