[PATCH 23/32] ext2: Track metadata bhs in fs-private inode part
Jan Kara <[email protected]> Tue, 3 Mar 2026 11:34:12 +0100
| Newsgroups | gmane.linux.kernel.aio.general,gmane.linux.file-systems,gmane.comp.file-systems.ext4,gmane.linux.kernel.mm |
|---|---|
| Message-ID | <[email protected]> |
Track metadata bhs for an inode in fs-private part of the inode. Signed-off-by: Jan Kara <[email protected]> --- fs/ext2/ext2.h | 2 ++ fs/ext2/file.c | 1 + fs/ext2/namei.c | 2 ++ fs/ext2/super.c | 6 ++++++ fs/ext2/symlink.c | 2 ++ 5 files changed, 13 insertions(+) diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h index 5e0c6c5fcb6c..2b6593ba107f 100644 --- a/fs/ext2/ext2.h +++ b/fs/ext2/ext2.h @@ -676,6 +676,7 @@ struct ext2_inode_info { #ifdef CONFIG_QUOTA struct dquot __rcu *i_dquot[MAXQUOTAS]; #endif + struct mapping_metadata_bhs i_metadata_bhs; }; /* @@ -766,6 +767,7 @@ void ext2_msg(struct super_block *, const char *, const char *, ...); extern void ext2_update_dynamic_rev (struct super_block *sb); extern void ext2_sync_super(struct super_block *sb, struct ext2_super_block *es, int wait); +struct mapping_metadata_bhs *ext2_get_metadata_bhs(struct inode *inode); /* * Inodes and files operations diff --git a/fs/ext2/file.c b/fs/ext2/file.c index ebe356a38b18..2dbf3e7c2e9c 100644 --- a/fs/ext2/file.c +++ b/fs/ext2/file.c @@ -338,4 +338,5 @@ const struct inode_operations ext2_file_inode_operations = { .fiemap = ext2_fiemap, .fileattr_get = ext2_fileattr_get, .fileattr_set = ext2_fileattr_set, + .get_metadata_bhs = ext2_get_metadata_bhs, }; diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c index bde617a66cec..70c94adce837 100644 --- a/fs/ext2/namei.c +++ b/fs/ext2/namei.c @@ -422,6 +422,7 @@ const struct inode_operations ext2_dir_inode_operations = { .tmpfile = ext2_tmpfile, .fileattr_get = ext2_fileattr_get, .fileattr_set = ext2_fileattr_set, + .get_metadata_bhs = ext2_get_metadata_bhs, }; const struct inode_operations ext2_special_inode_operations = { @@ -430,4 +431,5 @@ const struct inode_operations ext2_special_inode_operations = { .setattr = ext2_setattr, .get_inode_acl = ext2_get_acl, .set_acl = ext2_set_acl, + .get_metadata_bhs = ext2_get_metadata_bhs, }; diff --git a/fs/ext2/super.c b/fs/ext2/super.c index 603f2641fe10..503c25cae27c 100644 --- a/fs/ext2/super.c +++ b/fs/ext2/super.c @@ -215,6 +215,7 @@ static struct inode *ext2_alloc_inode(struct super_block *sb) #ifdef CONFIG_QUOTA memset(&ei->i_dquot, 0, sizeof(ei->i_dquot)); #endif + mmb_init(&ei->i_metadata_bhs); return &ei->vfs_inode; } @@ -259,6 +260,11 @@ static void destroy_inodecache(void) kmem_cache_destroy(ext2_inode_cachep); } +struct mapping_metadata_bhs *ext2_get_metadata_bhs(struct inode *inode) +{ + return &EXT2_I(inode)->i_metadata_bhs; +} + static int ext2_show_options(struct seq_file *seq, struct dentry *root) { struct super_block *sb = root->d_sb; diff --git a/fs/ext2/symlink.c b/fs/ext2/symlink.c index 948d3a441403..c82a15d28772 100644 --- a/fs/ext2/symlink.c +++ b/fs/ext2/symlink.c @@ -26,6 +26,7 @@ const struct inode_operations ext2_symlink_inode_operations = { .getattr = ext2_getattr, .setattr = ext2_setattr, .listxattr = ext2_listxattr, + .get_metadata_bhs = ext2_get_metadata_bhs, }; const struct inode_operations ext2_fast_symlink_inode_operations = { @@ -33,4 +34,5 @@ const struct inode_operations ext2_fast_symlink_inode_operations = { .getattr = ext2_getattr, .setattr = ext2_setattr, .listxattr = ext2_listxattr, + .get_metadata_bhs = ext2_get_metadata_bhs, }; -- 2.51.0 -- To unsubscribe, send a message with 'unsubscribe linux-aio' in the body to [email protected]. For more info on Linux AIO, see: http://www.kvack.org/aio/ Don't email: <a href=mailto:"[email protected]">[email protected]</a>