md: use part_[begin|end]_io_acct instead of disk_[begin|end]_io_acct
authorSong Liu <songliubraving@fb.com>
Mon, 31 Aug 2020 22:27:24 +0000 (15:27 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 11 Sep 2020 22:41:30 +0000 (16:41 -0600)
This enables proper statistics in /proc/diskstats for md partitions.

Signed-off-by: Song Liu <songliubraving@fb.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/md/md.c

index 27ed611..64bc22d 100644 (file)
@@ -464,6 +464,7 @@ struct md_io {
        bio_end_io_t *orig_bi_end_io;
        void *orig_bi_private;
        unsigned long start_time;
+       struct hd_struct *part;
 };
 
 static void md_end_io(struct bio *bio)
@@ -471,7 +472,7 @@ static void md_end_io(struct bio *bio)
        struct md_io *md_io = bio->bi_private;
        struct mddev *mddev = md_io->mddev;
 
-       disk_end_io_acct(mddev->gendisk, bio_op(bio), md_io->start_time);
+       part_end_io_acct(md_io->part, bio, md_io->start_time);
 
        bio->bi_end_io = md_io->orig_bi_end_io;
        bio->bi_private = md_io->orig_bi_private;
@@ -517,9 +518,8 @@ static blk_qc_t md_submit_bio(struct bio *bio)
                bio->bi_end_io = md_end_io;
                bio->bi_private = md_io;
 
-               md_io->start_time = disk_start_io_acct(mddev->gendisk,
-                                                      bio_sectors(bio),
-                                                      bio_op(bio));
+               md_io->start_time = part_start_io_acct(mddev->gendisk,
+                                                      &md_io->part, bio);
        }
 
        /* bio could be mergeable after passing to underlayer */