}
 }
 
-static unsigned long __part_start_io_acct(struct block_device *part,
-                                         unsigned int sectors, unsigned int op,
-                                         unsigned long start_time)
+unsigned long bdev_start_io_acct(struct block_device *bdev,
+                                unsigned int sectors, unsigned int op,
+                                unsigned long start_time)
 {
        const int sgrp = op_stat_group(op);
 
        part_stat_lock();
-       update_io_ticks(part, start_time, false);
-       part_stat_inc(part, ios[sgrp]);
-       part_stat_add(part, sectors[sgrp], sectors);
-       part_stat_local_inc(part, in_flight[op_is_write(op)]);
+       update_io_ticks(bdev, start_time, false);
+       part_stat_inc(bdev, ios[sgrp]);
+       part_stat_add(bdev, sectors[sgrp], sectors);
+       part_stat_local_inc(bdev, in_flight[op_is_write(op)]);
        part_stat_unlock();
 
        return start_time;
 }
+EXPORT_SYMBOL(bdev_start_io_acct);
 
 /**
  * bio_start_io_acct_time - start I/O accounting for bio based drivers
  */
 void bio_start_io_acct_time(struct bio *bio, unsigned long start_time)
 {
-       __part_start_io_acct(bio->bi_bdev, bio_sectors(bio),
-                            bio_op(bio), start_time);
+       bdev_start_io_acct(bio->bi_bdev, bio_sectors(bio),
+                          bio_op(bio), start_time);
 }
 EXPORT_SYMBOL_GPL(bio_start_io_acct_time);
 
  */
 unsigned long bio_start_io_acct(struct bio *bio)
 {
-       return __part_start_io_acct(bio->bi_bdev, bio_sectors(bio),
-                                   bio_op(bio), jiffies);
+       return bdev_start_io_acct(bio->bi_bdev, bio_sectors(bio),
+                                 bio_op(bio), jiffies);
 }
 EXPORT_SYMBOL_GPL(bio_start_io_acct);
 
-unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors,
-                                unsigned int op)
-{
-       return __part_start_io_acct(disk->part0, sectors, op, jiffies);
-}
-EXPORT_SYMBOL(disk_start_io_acct);
-
-static void __part_end_io_acct(struct block_device *part, unsigned int op,
-                              unsigned long start_time)
+void bdev_end_io_acct(struct block_device *bdev, unsigned int op,
+                     unsigned long start_time)
 {
        const int sgrp = op_stat_group(op);
        unsigned long now = READ_ONCE(jiffies);
        unsigned long duration = now - start_time;
 
        part_stat_lock();
-       update_io_ticks(part, now, true);
-       part_stat_add(part, nsecs[sgrp], jiffies_to_nsecs(duration));
-       part_stat_local_dec(part, in_flight[op_is_write(op)]);
+       update_io_ticks(bdev, now, true);
+       part_stat_add(bdev, nsecs[sgrp], jiffies_to_nsecs(duration));
+       part_stat_local_dec(bdev, in_flight[op_is_write(op)]);
        part_stat_unlock();
 }
+EXPORT_SYMBOL(bdev_end_io_acct);
 
 void bio_end_io_acct_remapped(struct bio *bio, unsigned long start_time,
-               struct block_device *orig_bdev)
+                             struct block_device *orig_bdev)
 {
-       __part_end_io_acct(orig_bdev, bio_op(bio), start_time);
+       bdev_end_io_acct(orig_bdev, bio_op(bio), start_time);
 }
 EXPORT_SYMBOL_GPL(bio_end_io_acct_remapped);
 
-void disk_end_io_acct(struct gendisk *disk, unsigned int op,
-                     unsigned long start_time)
-{
-       __part_end_io_acct(disk->part0, op, start_time);
-}
-EXPORT_SYMBOL(disk_end_io_acct);
-
 /**
  * blk_lld_busy - Check if underlying low-level drivers of a device are busy
  * @q : the queue of the device being checked