'block device' is generic type for interface, and gendisk becomes more one block layer internal type, so replace disk based account interface with bdec's. Also add 'start_time' parameter to bdev_start_io_acct() so that we can cover device mapper's io accounting by the two bdev based interface. Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> --- block/blk-core.c | 15 ++++++++------- drivers/block/zram/zram_drv.c | 5 +++-- include/linux/blkdev.h | 7 ++++--- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/block/blk-core.c b/block/blk-core.c index 937bb6b86331..a3ae13b129ff 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1063,12 +1063,13 @@ unsigned long bio_start_io_acct(struct bio *bio) } EXPORT_SYMBOL_GPL(bio_start_io_acct); -unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors, - unsigned int op) +unsigned long bdev_start_io_acct(struct block_device *bdev, + unsigned int sectors, unsigned int op, + unsigned long start_time) { - return __part_start_io_acct(disk->part0, sectors, op, jiffies); + return __part_start_io_acct(bdev, sectors, op, start_time); } -EXPORT_SYMBOL(disk_start_io_acct); +EXPORT_SYMBOL(bdev_start_io_acct); static void __part_end_io_acct(struct block_device *part, unsigned int op, unsigned long start_time) @@ -1091,12 +1092,12 @@ void bio_end_io_acct_remapped(struct bio *bio, unsigned long start_time, } EXPORT_SYMBOL_GPL(bio_end_io_acct_remapped); -void disk_end_io_acct(struct gendisk *disk, unsigned int op, +void bdev_end_io_acct(struct block_device *bdev, unsigned int op, unsigned long start_time) { - __part_end_io_acct(disk->part0, op, start_time); + __part_end_io_acct(bdev, op, start_time); } -EXPORT_SYMBOL(disk_end_io_acct); +EXPORT_SYMBOL(bdev_end_io_acct); /** * blk_lld_busy - Check if underlying low-level drivers of a device are busy diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index e9474b02012d..adb5209a556a 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1675,9 +1675,10 @@ static int zram_rw_page(struct block_device *bdev, sector_t sector, bv.bv_len = PAGE_SIZE; bv.bv_offset = 0; - start_time = disk_start_io_acct(bdev->bd_disk, SECTORS_PER_PAGE, op); + start_time = bdev_start_io_acct(bdev->bd_disk->part0, + SECTORS_PER_PAGE, op, jiffies); ret = zram_bvec_rw(zram, &bv, index, offset, op, NULL); - disk_end_io_acct(bdev->bd_disk, op, start_time); + bdev_end_io_acct(bdev->bd_disk->part0, op, start_time); out: /* * If I/O fails, just return error(ie, non-zero) without diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 60d016138997..f680ba6f0ab2 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1491,9 +1491,10 @@ static inline void blk_wake_io_task(struct task_struct *waiter) wake_up_process(waiter); } -unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors, - unsigned int op); -void disk_end_io_acct(struct gendisk *disk, unsigned int op, +unsigned long bdev_start_io_acct(struct block_device *bdev, + unsigned int sectors, unsigned int op, + unsigned long start_time); +void bdev_end_io_acct(struct block_device *bdev, unsigned int op, unsigned long start_time); void bio_start_io_acct_time(struct bio *bio, unsigned long start_time); -- 2.31.1