Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Jan Kara and committed by
Christian Brauner
0f46a9e2 972b9dd4

+5 -8
+5 -8
fs/buffer.c
··· 574 574 */ 575 575 int sync_mapping_buffers(struct address_space *mapping) 576 576 { 577 - struct address_space *buffer_mapping = mapping->i_private_data; 577 + struct address_space *buffer_mapping = 578 + mapping->host->i_sb->s_bdev->bd_mapping; 578 579 579 - if (buffer_mapping == NULL || list_empty(&mapping->i_private_list)) 580 + if (list_empty(&mapping->i_private_list)) 580 581 return 0; 581 582 582 583 return fsync_buffers_list(&buffer_mapping->i_private_lock, ··· 680 679 struct address_space *buffer_mapping = bh->b_folio->mapping; 681 680 682 681 mark_buffer_dirty(bh); 683 - if (!mapping->i_private_data) { 684 - mapping->i_private_data = buffer_mapping; 685 - } else { 686 - BUG_ON(mapping->i_private_data != buffer_mapping); 687 - } 688 682 if (!bh->b_assoc_map) { 689 683 spin_lock(&buffer_mapping->i_private_lock); 690 684 list_move_tail(&bh->b_assoc_buffers, ··· 864 868 if (inode_has_buffers(inode)) { 865 869 struct address_space *mapping = &inode->i_data; 866 870 struct list_head *list = &mapping->i_private_list; 867 - struct address_space *buffer_mapping = mapping->i_private_data; 871 + struct address_space *buffer_mapping = 872 + mapping->host->i_sb->s_bdev->bd_mapping; 868 873 869 874 spin_lock(&buffer_mapping->i_private_lock); 870 875 while (!list_empty(list))