From: Jérôme Glisse <jglisse@xxxxxxxxxx> Add struct inode to block_read_full_page(). Note this patch only add arguments and modify call site conservatily using page->mapping and thus the end result is as before this patch. One step toward dropping reliance on page->mapping. Signed-off-by: Jérôme Glisse <jglisse@xxxxxxxxxx> Cc: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: linux-fsdevel@xxxxxxxxxxxxxxx Cc: Tejun Heo <tj@xxxxxxxxxx> Cc: Jan Kara <jack@xxxxxxx> Cc: Josef Bacik <jbacik@xxxxxx> Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> Cc: Jeff Layton <jlayton@xxxxxxxxxx> --- fs/adfs/inode.c | 2 +- fs/affs/file.c | 2 +- fs/befs/linuxvfs.c | 3 ++- fs/bfs/file.c | 2 +- fs/block_dev.c | 2 +- fs/buffer.c | 4 ++-- fs/efs/inode.c | 2 +- fs/ext4/readpage.c | 3 ++- fs/freevxfs/vxfs_subr.c | 2 +- fs/hfs/inode.c | 2 +- fs/hfsplus/inode.c | 3 ++- fs/minix/inode.c | 2 +- fs/mpage.c | 2 +- fs/ocfs2/aops.c | 3 ++- fs/ocfs2/refcounttree.c | 3 ++- fs/omfs/file.c | 2 +- fs/qnx4/inode.c | 2 +- fs/reiserfs/inode.c | 3 ++- fs/sysv/itree.c | 2 +- fs/ufs/inode.c | 3 ++- include/linux/buffer_head.h | 2 +- 21 files changed, 29 insertions(+), 22 deletions(-) diff --git a/fs/adfs/inode.c b/fs/adfs/inode.c index 1100d5da84d0..2270ab3d5392 100644 --- a/fs/adfs/inode.c +++ b/fs/adfs/inode.c @@ -45,7 +45,7 @@ static int adfs_writepage(struct address_space *mapping, struct page *page, static int adfs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, adfs_get_block); + return block_read_full_page(page->mapping->host, page, adfs_get_block); } static void adfs_write_failed(struct address_space *mapping, loff_t to) diff --git a/fs/affs/file.c b/fs/affs/file.c index 55ab72c1b228..136cb90f332f 100644 --- a/fs/affs/file.c +++ b/fs/affs/file.c @@ -379,7 +379,7 @@ static int affs_writepage(struct address_space *mapping, struct page *page, static int affs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, affs_get_block); + return block_read_full_page(page->mapping->host, page, affs_get_block); } static void affs_write_failed(struct address_space *mapping, loff_t to) diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c index f6844b4ae77f..4436123674d3 100644 --- a/fs/befs/linuxvfs.c +++ b/fs/befs/linuxvfs.c @@ -112,7 +112,8 @@ static int befs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, befs_get_block); + return block_read_full_page(page->mapping->host, page, + befs_get_block); } static sector_t diff --git a/fs/bfs/file.c b/fs/bfs/file.c index 1c4593429f7d..b1255ee4cd75 100644 --- a/fs/bfs/file.c +++ b/fs/bfs/file.c @@ -160,7 +160,7 @@ static int bfs_writepage(struct address_space *mapping, struct page *page, static int bfs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, bfs_get_block); + return block_read_full_page(page->mapping->host, page, bfs_get_block); } static void bfs_write_failed(struct address_space *mapping, loff_t to) diff --git a/fs/block_dev.c b/fs/block_dev.c index 2bf1b17aeff3..9ac6bf760272 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -571,7 +571,7 @@ static int blkdev_writepage(struct address_space *mapping, struct page *page, static int blkdev_readpage(struct file * file, struct address_space *mapping, struct page * page) { - return block_read_full_page(page, blkdev_get_block); + return block_read_full_page(page->mapping->host,page,blkdev_get_block); } static int blkdev_readpages(struct file *file, struct address_space *mapping, diff --git a/fs/buffer.c b/fs/buffer.c index 99818e876ad8..aa7d9be68581 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -2231,9 +2231,9 @@ EXPORT_SYMBOL(block_is_partially_uptodate); * set/clear_buffer_uptodate() functions propagate buffer state into the * page struct once IO has completed. */ -int block_read_full_page(struct page *page, get_block_t *get_block) +int block_read_full_page(struct inode *inode, struct page *page, + get_block_t *get_block) { - struct inode *inode = page->mapping->host; sector_t iblock, lblock; struct buffer_head *bh, *head, *arr[MAX_BUF_PER_PAGE]; unsigned int blocksize, bbits; diff --git a/fs/efs/inode.c b/fs/efs/inode.c index 05aab4a5e8a1..a2f47227124e 100644 --- a/fs/efs/inode.c +++ b/fs/efs/inode.c @@ -16,7 +16,7 @@ static int efs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page,efs_get_block); + return block_read_full_page(page->mapping->host, page,efs_get_block); } static sector_t _efs_bmap(struct address_space *mapping, sector_t block) { diff --git a/fs/ext4/readpage.c b/fs/ext4/readpage.c index 9ffa6fad18db..e43dc995f978 100644 --- a/fs/ext4/readpage.c +++ b/fs/ext4/readpage.c @@ -280,7 +280,8 @@ int ext4_mpage_readpages(struct address_space *mapping, bio = NULL; } if (!PageUptodate(page)) - block_read_full_page(page, ext4_get_block); + block_read_full_page(page->mapping->host, page, + ext4_get_block); else unlock_page(page); next_page: diff --git a/fs/freevxfs/vxfs_subr.c b/fs/freevxfs/vxfs_subr.c index 25f15ce143b5..91c5a39083c0 100644 --- a/fs/freevxfs/vxfs_subr.c +++ b/fs/freevxfs/vxfs_subr.c @@ -162,7 +162,7 @@ static int vxfs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, vxfs_getblk); + return block_read_full_page(page->mapping->host, page, vxfs_getblk); } /** diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c index 17c96905191d..3851e95e9625 100644 --- a/fs/hfs/inode.c +++ b/fs/hfs/inode.c @@ -38,7 +38,7 @@ static int hfs_writepage(struct address_space *mapping, struct page *page, static int hfs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, hfs_get_block); + return block_read_full_page(page->mapping->host, page, hfs_get_block); } static void hfs_write_failed(struct address_space *mapping, loff_t to) diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c index d3a1ae620a14..a39d6114375a 100644 --- a/fs/hfsplus/inode.c +++ b/fs/hfsplus/inode.c @@ -26,7 +26,8 @@ static int hfsplus_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, hfsplus_get_block); + return block_read_full_page(page->mapping->host, page, + hfsplus_get_block); } static int hfsplus_writepage(struct address_space *mapping, struct page *page, diff --git a/fs/minix/inode.c b/fs/minix/inode.c index 218697f38375..2a151fa6b013 100644 --- a/fs/minix/inode.c +++ b/fs/minix/inode.c @@ -391,7 +391,7 @@ static int minix_writepage(struct address_space *mapping, struct page *page, static int minix_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page,minix_get_block); + return block_read_full_page(page->mapping->host,page,minix_get_block); } int minix_prepare_chunk(struct page *page, loff_t pos, unsigned len) diff --git a/fs/mpage.c b/fs/mpage.c index d25f08f46090..c40ed2aa9bee 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -309,7 +309,7 @@ do_mpage_readpage(struct bio *bio, struct page *page, unsigned nr_pages, if (bio) bio = mpage_bio_submit(REQ_OP_READ, 0, bio); if (!PageUptodate(page)) - block_read_full_page(page, get_block); + block_read_full_page(page->mapping->host, page, get_block); else unlock_page(page); goto out; diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index c1d3b33e8676..9942ee775e08 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c @@ -343,7 +343,8 @@ static int ocfs2_readpage(struct file *file, struct address_space *mapping, if (oi->ip_dyn_features & OCFS2_INLINE_DATA_FL) ret = ocfs2_readpage_inline(inode, page); else - ret = block_read_full_page(page, ocfs2_get_block); + ret = block_read_full_page(page->mapping->host, page, + ocfs2_get_block); unlock = 0; out_alloc: diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c index ab156e35ec00..163f639caf5e 100644 --- a/fs/ocfs2/refcounttree.c +++ b/fs/ocfs2/refcounttree.c @@ -2961,7 +2961,8 @@ int ocfs2_duplicate_clusters_by_page(handle_t *handle, BUG_ON(PageDirty(page)); if (!PageUptodate(page)) { - ret = block_read_full_page(page, ocfs2_get_block); + ret = block_read_full_page(page->mapping->host, page, + ocfs2_get_block); if (ret) { mlog_errno(ret); goto unlock; diff --git a/fs/omfs/file.c b/fs/omfs/file.c index 71e9b27ee89d..ac27a4b2186a 100644 --- a/fs/omfs/file.c +++ b/fs/omfs/file.c @@ -287,7 +287,7 @@ static int omfs_get_block(struct inode *inode, sector_t block, static int omfs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, omfs_get_block); + return block_read_full_page(page->mapping->host, page, omfs_get_block); } static int omfs_readpages(struct file *file, struct address_space *mapping, diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c index efc60096dd75..429f9295ec95 100644 --- a/fs/qnx4/inode.c +++ b/fs/qnx4/inode.c @@ -246,7 +246,7 @@ static void qnx4_kill_sb(struct super_block *sb) static int qnx4_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page,qnx4_get_block); + return block_read_full_page(page->mapping->host, page,qnx4_get_block); } static sector_t qnx4_bmap(struct address_space *mapping, sector_t block) diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c index cc2dfbe8e31b..d4ab2d45f846 100644 --- a/fs/reiserfs/inode.c +++ b/fs/reiserfs/inode.c @@ -2734,7 +2734,8 @@ static int reiserfs_write_full_page(struct page *page, static int reiserfs_readpage(struct file *f, struct address_space *mapping, struct page *page) { - return block_read_full_page(page, reiserfs_get_block); + return block_read_full_page(page->mapping->host, page, + reiserfs_get_block); } static int reiserfs_writepage(struct address_space *mapping, struct page *page, diff --git a/fs/sysv/itree.c b/fs/sysv/itree.c index d50dfd8a4465..7cec1e024dc3 100644 --- a/fs/sysv/itree.c +++ b/fs/sysv/itree.c @@ -460,7 +460,7 @@ static int sysv_writepage(struct address_space *mapping, struct page *page, static int sysv_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page,get_block); + return block_read_full_page(page->mapping->host, page,get_block); } int sysv_prepare_chunk(struct page *page, loff_t pos, unsigned len) diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c index d04c6ed42be5..8589b934be09 100644 --- a/fs/ufs/inode.c +++ b/fs/ufs/inode.c @@ -477,7 +477,8 @@ static int ufs_writepage(struct address_space *mapping, struct page *page, static int ufs_readpage(struct file *file, struct address_space *mapping, struct page *page) { - return block_read_full_page(page,ufs_getfrag_block); + return block_read_full_page(page->mapping->host, page, + ufs_getfrag_block); } int ufs_prepare_chunk(struct page *page, loff_t pos, unsigned len) diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 052f7a8aa7cf..cab143668834 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -222,7 +222,7 @@ int block_write_full_page(struct inode *inode, struct page *page, int __block_write_full_page(struct inode *inode, struct page *page, get_block_t *get_block, struct writeback_control *wbc, bh_end_io_t *handler); -int block_read_full_page(struct page*, get_block_t*); +int block_read_full_page(struct inode *inode, struct page*, get_block_t*); int block_is_partially_uptodate(struct page *page, struct address_space *mapping, unsigned long from, unsigned long count); -- 2.14.3