block: only calculate part_in_flight() once
authorJens Axboe <axboe@fb.com>
Fri, 9 May 2014 21:48:23 +0000 (15:48 -0600)
committerJens Axboe <axboe@fb.com>
Fri, 9 May 2014 21:48:23 +0000 (15:48 -0600)
We first check if we have inflight IO, then retrieve that
same number again. Usually this isn't that costly since the
chance of having the data dirtied in between is small, but
there's no reason for calling part_in_flight() twice.

Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-core.c

index c4269701cb4f796a6f48147c943f579621606cd5..a6bd3e702201b3cd8558c76d8ad672e740a39c07 100644 (file)
@@ -1233,12 +1233,15 @@ static void add_acct_request(struct request_queue *q, struct request *rq,
 static void part_round_stats_single(int cpu, struct hd_struct *part,
                                    unsigned long now)
 {
+       int inflight;
+
        if (now == part->stamp)
                return;
 
-       if (part_in_flight(part)) {
+       inflight = part_in_flight(part);
+       if (inflight) {
                __part_stat_add(cpu, part, time_in_queue,
-                               part_in_flight(part) * (now - part->stamp));
+                               inflight * (now - part->stamp));
                __part_stat_add(cpu, part, io_ticks, (now - part->stamp));
        }
        part->stamp = now;