nvdimm: use bio_{start,end}_io_acct
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>
This commit is contained in:
parent
86240d5b68
commit
0fd92f89a4
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user