block: move blk_stat_add() to __blk_mq_end_request()
authorOmar Sandoval <osandov@fb.com>
Wed, 9 May 2018 09:08:52 +0000 (02:08 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 9 May 2018 14:33:07 +0000 (08:33 -0600)
We want this next to blk_account_io_done() for the next change so that
we can call ktime_get() only once for both.

Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c

index 17612e04d0414aa2ae3e2bee117f43040ac08123..39b4e9834d82526b37dba8e7654ab1b9abca8223 100644 (file)
@@ -506,6 +506,11 @@ EXPORT_SYMBOL_GPL(blk_mq_free_request);
 
 inline void __blk_mq_end_request(struct request *rq, blk_status_t error)
 {
+       if (rq->rq_flags & RQF_STATS) {
+               blk_mq_poll_stats_start(rq->q);
+               blk_stat_add(rq);
+       }
+
        blk_account_io_done(rq);
 
        if (rq->end_io) {
@@ -545,10 +550,6 @@ static void __blk_mq_complete_request(struct request *rq)
 
        if (rq->internal_tag != -1)
                blk_mq_sched_completed_request(rq);
-       if (rq->rq_flags & RQF_STATS) {
-               blk_mq_poll_stats_start(rq->q);
-               blk_stat_add(rq);
-       }
 
        if (!test_bit(QUEUE_FLAG_SAME_COMP, &rq->q->queue_flags)) {
                rq->q->softirq_done_fn(rq);