md: don't detour through bd_contains for the gendisk
authorChristoph Hellwig <hch@lst.de>
Thu, 3 Sep 2020 05:40:59 +0000 (07:40 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 25 Sep 2020 14:18:57 +0000 (08:18 -0600)
bd_disk is set on all block devices, including those for partitions.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Song Liu <song@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/md/md.c
drivers/md/md.h

index 09ed6d0..de8419b 100644 (file)
@@ -8444,7 +8444,7 @@ static int is_mddev_idle(struct mddev *mddev, int init)
        idle = 1;
        rcu_read_lock();
        rdev_for_each_rcu(rdev, mddev) {
-               struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
+               struct gendisk *disk = rdev->bdev->bd_disk;
                curr_events = (int)part_stat_read_accum(&disk->part0, sectors) -
                              atomic_read(&disk->sync_io);
                /* sync IO will cause sync_io to increase before the disk_stats
index f9e2ccd..2175a5a 100644 (file)
@@ -551,7 +551,7 @@ extern void mddev_unlock(struct mddev *mddev);
 
 static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
 {
-       atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
+       atomic_add(nr_sectors, &bdev->bd_disk->sync_io);
 }
 
 static inline void md_sync_acct_bio(struct bio *bio, unsigned long nr_sectors)