From 66f6cb14b1a21d6a4852738983daa80ec152efc5 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Tue, 12 Oct 2021 10:01:51 +0200 Subject: [PATCH] block: add a bdev_read_cache_page helper Add a helper to read a pagecache page from a block device. This allows to hide accesses to ->bd_inode. Signed-off-by: Christoph Hellwig --- block/bdev.c | 7 +++++++ include/linux/blkdev.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/block/bdev.c b/block/bdev.c index 567534c63f3d..9528b4cc2ffa 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -1057,3 +1057,10 @@ void iterate_bdevs(void (*func)(struct block_device *, void *), void *arg) spin_unlock(&blockdev_superblock->s_inode_list_lock); iput(old_inode); } + +struct page *bdev_read_cache_page(struct block_device *bdev, pgoff_t index, + gfp_t gfp) +{ + return read_cache_page_gfp(bdev->bd_inode->i_mapping, index, gfp); +} +EXPORT_SYMBOL_GPL(bdev_read_cache_page); diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 17705c970d7e..86a7884fe5f4 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1206,6 +1206,9 @@ extern int blkdev_compat_ptr_ioctl(struct block_device *, fmode_t, #define blkdev_compat_ptr_ioctl NULL #endif +struct page *bdev_read_cache_page(struct block_device *bdev, pgoff_t index, + gfp_t gfp); + extern int bdev_read_page(struct block_device *, sector_t, struct page *); extern int bdev_write_page(struct block_device *, sector_t, struct page *, struct writeback_control *); -- 2.50.1