diff options
| author | Jan Kara <jack@suse.cz> | 2026-03-26 10:54:17 +0100 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-03-26 15:03:30 +0100 |
| commit | 0f46a9e2743cb3ac813553dcef451d57d9c9dbab (patch) | |
| tree | 439d6b4809125a3609dde4050bd510b00fb8bd0d /fs/buffer.c | |
| parent | 972b9dd4e4180fbb2352bf2f0e015b7b63f5cca0 (diff) | |
| download | lwn-0f46a9e2743cb3ac813553dcef451d57d9c9dbab.tar.gz lwn-0f46a9e2743cb3ac813553dcef451d57d9c9dbab.zip | |
fs: Stop using i_private_data for metadata bh tracking
All filesystem using generic metadata bh tracking are using bdev mapping
as a backing for these bhs. Stop using i_private_data for it and get to
bdev mapping directly.
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20260326095354.16340-65-jack@suse.cz
Tested-by: syzbot@syzkaller.appspotmail.com
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/buffer.c')
| -rw-r--r-- | fs/buffer.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index bd48644e1bf8..c85ccfb1a4ec 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -574,9 +574,10 @@ repeat: */ int sync_mapping_buffers(struct address_space *mapping) { - struct address_space *buffer_mapping = mapping->i_private_data; + struct address_space *buffer_mapping = + mapping->host->i_sb->s_bdev->bd_mapping; - if (buffer_mapping == NULL || list_empty(&mapping->i_private_list)) + if (list_empty(&mapping->i_private_list)) return 0; return fsync_buffers_list(&buffer_mapping->i_private_lock, @@ -679,11 +680,6 @@ void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode *inode) struct address_space *buffer_mapping = bh->b_folio->mapping; mark_buffer_dirty(bh); - if (!mapping->i_private_data) { - mapping->i_private_data = buffer_mapping; - } else { - BUG_ON(mapping->i_private_data != buffer_mapping); - } if (!bh->b_assoc_map) { spin_lock(&buffer_mapping->i_private_lock); list_move_tail(&bh->b_assoc_buffers, @@ -868,7 +864,8 @@ void invalidate_inode_buffers(struct inode *inode) if (inode_has_buffers(inode)) { struct address_space *mapping = &inode->i_data; struct list_head *list = &mapping->i_private_list; - struct address_space *buffer_mapping = mapping->i_private_data; + struct address_space *buffer_mapping = + mapping->host->i_sb->s_bdev->bd_mapping; spin_lock(&buffer_mapping->i_private_lock); while (!list_empty(list)) |
