]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
nvdimm: use bio_{start,end}_io_acct
authorChristoph Hellwig <hch@lst.de>
Wed, 27 May 2020 05:24:10 +0000 (07:24 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 27 May 2020 11:21:23 +0000 (05:21 -0600)
Switch dm to use the nicer bio accounting helpers.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvdimm/blk.c
drivers/nvdimm/btt.c
drivers/nvdimm/nd.h
drivers/nvdimm/pmem.c

index 43751fab9d36a886ec871db07c96d09db27fd81e..036e23aef9b0441f85588bd0ad40b857a90810dc 100644 (file)
@@ -178,7 +178,9 @@ static blk_qc_t nd_blk_make_request(struct request_queue *q, struct bio *bio)
        bip = bio_integrity(bio);
        nsblk = q->queuedata;
        rw = bio_data_dir(bio);
-       do_acct = nd_iostat_start(bio, &start);
+       do_acct = blk_queue_io_stat(bio->bi_disk->queue);
+       if (do_acct)
+               start = bio_start_io_acct(bio);
        bio_for_each_segment(bvec, bio, iter) {
                unsigned int len = bvec.bv_len;
 
@@ -195,7 +197,7 @@ static blk_qc_t nd_blk_make_request(struct request_queue *q, struct bio *bio)
                }
        }
        if (do_acct)
-               nd_iostat_end(bio, start);
+               bio_end_io_acct(bio, start);
 
        bio_endio(bio);
        return BLK_QC_T_NONE;
index 3b09419218d6ffe8ae8a9d0c09e3928af7cc7113..90c0c4bbe77b98f2548b31a53c0902bfa2b267c5 100644 (file)
@@ -1452,7 +1452,9 @@ static blk_qc_t btt_make_request(struct request_queue *q, struct bio *bio)
        if (!bio_integrity_prep(bio))
                return BLK_QC_T_NONE;
 
-       do_acct = nd_iostat_start(bio, &start);
+       do_acct = blk_queue_io_stat(bio->bi_disk->queue);
+       if (do_acct)
+               start = bio_start_io_acct(bio);
        bio_for_each_segment(bvec, bio, iter) {
                unsigned int len = bvec.bv_len;
 
@@ -1477,7 +1479,7 @@ static blk_qc_t btt_make_request(struct request_queue *q, struct bio *bio)
                }
        }
        if (do_acct)
-               nd_iostat_end(bio, start);
+               bio_end_io_acct(bio, start);
 
        bio_endio(bio);
        return BLK_QC_T_NONE;
index 85dbb2a322b9b4d8876b22f0bdb76d62397bdeb3..85c1ae813ea318857a2f7e281a0dd9f3a91ae3dd 100644 (file)
@@ -396,25 +396,6 @@ static inline int nvdimm_setup_pfn(struct nd_pfn *nd_pfn,
 #endif
 int nd_blk_region_init(struct nd_region *nd_region);
 int nd_region_activate(struct nd_region *nd_region);
-void __nd_iostat_start(struct bio *bio, unsigned long *start);
-static inline bool nd_iostat_start(struct bio *bio, unsigned long *start)
-{
-       struct gendisk *disk = bio->bi_disk;
-
-       if (!blk_queue_io_stat(disk->queue))
-               return false;
-
-       *start = jiffies;
-       generic_start_io_acct(disk->queue, bio_op(bio), bio_sectors(bio),
-                             &disk->part0);
-       return true;
-}
-static inline void nd_iostat_end(struct bio *bio, unsigned long start)
-{
-       struct gendisk *disk = bio->bi_disk;
-
-       generic_end_io_acct(disk->queue, bio_op(bio), &disk->part0, start);
-}
 static inline bool is_bad_pmem(struct badblocks *bb, sector_t sector,
                unsigned int len)
 {
index 2df6994acf8362e295086d2131565b809b25f19f..97f948f8f4e62c093b3f2893fc8342011f114803 100644 (file)
@@ -202,7 +202,9 @@ static blk_qc_t pmem_make_request(struct request_queue *q, struct bio *bio)
        if (bio->bi_opf & REQ_PREFLUSH)
                ret = nvdimm_flush(nd_region, bio);
 
-       do_acct = nd_iostat_start(bio, &start);
+       do_acct = blk_queue_io_stat(bio->bi_disk->queue);
+       if (do_acct)
+               start = bio_start_io_acct(bio);
        bio_for_each_segment(bvec, bio, iter) {
                if (op_is_write(bio_op(bio)))
                        rc = pmem_do_write(pmem, bvec.bv_page, bvec.bv_offset,
@@ -216,7 +218,7 @@ static blk_qc_t pmem_make_request(struct request_queue *q, struct bio *bio)
                }
        }
        if (do_acct)
-               nd_iostat_end(bio, start);
+               bio_end_io_acct(bio, start);
 
        if (bio->bi_opf & REQ_FUA)
                ret = nvdimm_flush(nd_region, bio);