Track metadata bhs for an inode in fs-private part of the inode. Signed-off-by: Jan Kara --- fs/minix/file.c | 1 + fs/minix/inode.c | 8 ++++++++ fs/minix/minix.h | 2 ++ fs/minix/namei.c | 1 + 4 files changed, 12 insertions(+) diff --git a/fs/minix/file.c b/fs/minix/file.c index dca7ac71f049..b3abe380634a 100644 --- a/fs/minix/file.c +++ b/fs/minix/file.c @@ -50,4 +50,5 @@ static int minix_setattr(struct mnt_idmap *idmap, const struct inode_operations minix_file_inode_operations = { .setattr = minix_setattr, .getattr = minix_getattr, + .get_metadata_bhs = minix_get_metadata_bhs, }; diff --git a/fs/minix/inode.c b/fs/minix/inode.c index ab7c06efb139..20abbe21a632 100644 --- a/fs/minix/inode.c +++ b/fs/minix/inode.c @@ -85,6 +85,8 @@ static struct inode *minix_alloc_inode(struct super_block *sb) ei = alloc_inode_sb(sb, minix_inode_cachep, GFP_KERNEL); if (!ei) return NULL; + mmb_init(&ei->i_metadata_bhs); + return &ei->vfs_inode; } @@ -122,6 +124,11 @@ static void destroy_inodecache(void) kmem_cache_destroy(minix_inode_cachep); } +struct mapping_metadata_bhs *minix_get_metadata_bhs(struct inode *inode) +{ + return &minix_i(inode)->i_metadata_bhs; +} + static const struct super_operations minix_sops = { .alloc_inode = minix_alloc_inode, .free_inode = minix_free_in_core_inode, @@ -502,6 +509,7 @@ static const struct address_space_operations minix_aops = { static const struct inode_operations minix_symlink_inode_operations = { .get_link = page_get_link, .getattr = minix_getattr, + .get_metadata_bhs = minix_get_metadata_bhs, }; void minix_set_inode(struct inode *inode, dev_t rdev) diff --git a/fs/minix/minix.h b/fs/minix/minix.h index 7e1f652f16d3..38981a30ac99 100644 --- a/fs/minix/minix.h +++ b/fs/minix/minix.h @@ -19,6 +19,7 @@ struct minix_inode_info { __u16 i1_data[16]; __u32 i2_data[16]; } u; + struct mapping_metadata_bhs i_metadata_bhs; struct inode vfs_inode; }; @@ -57,6 +58,7 @@ unsigned long minix_count_free_blocks(struct super_block *sb); int minix_getattr(struct mnt_idmap *, const struct path *, struct kstat *, u32, unsigned int); int minix_prepare_chunk(struct folio *folio, loff_t pos, unsigned len); +struct mapping_metadata_bhs *minix_get_metadata_bhs(struct inode *inode); extern void V1_minix_truncate(struct inode *); extern void V2_minix_truncate(struct inode *); diff --git a/fs/minix/namei.c b/fs/minix/namei.c index 263e4ba8b1c8..e31e84a677eb 100644 --- a/fs/minix/namei.c +++ b/fs/minix/namei.c @@ -288,4 +288,5 @@ const struct inode_operations minix_dir_inode_operations = { .rename = minix_rename, .getattr = minix_getattr, .tmpfile = minix_tmpfile, + .get_metadata_bhs = minix_get_metadata_bhs, }; -- 2.51.0