aboutsummaryrefslogtreecommitdiff
path: root/block/blk-mq.c
diff options
context:
space:
mode:
authorGravatar Roman Pen <r.peniaev@gmail.com> 2014-03-04 23:13:10 +0900
committerGravatar Jens Axboe <axboe@fb.com> 2014-03-05 16:11:21 -0700
commitaf5040da01ef980670b3741b3e10733ee3e33566 (patch)
tree213650b561bf15e6b1ae0706ebcca219febc6ab3 /block/blk-mq.c
parentsmp: Rename __smp_call_function_single() to smp_call_function_single_async() (diff)
downloadlinux-af5040da01ef980670b3741b3e10733ee3e33566.tar.gz
linux-af5040da01ef980670b3741b3e10733ee3e33566.tar.bz2
linux-af5040da01ef980670b3741b3e10733ee3e33566.zip
blktrace: fix accounting of partially completed requests
trace_block_rq_complete does not take into account that request can be partially completed, so we can get the following incorrect output of blkparser: C R 232 + 240 [0] C R 240 + 232 [0] C R 248 + 224 [0] C R 256 + 216 [0] but should be: C R 232 + 8 [0] C R 240 + 8 [0] C R 248 + 8 [0] C R 256 + 8 [0] Also, the whole output summary statistics of completed requests and final throughput will be incorrect. This patch takes into account real completion size of the request and fixes wrong completion accounting. Signed-off-by: Roman Pen <r.peniaev@gmail.com> CC: Steven Rostedt <rostedt@goodmis.org> CC: Frederic Weisbecker <fweisbec@gmail.com> CC: Ingo Molnar <mingo@redhat.com> CC: linux-kernel@vger.kernel.org Cc: stable@kernel.org Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-mq.c')
-rw-r--r--block/blk-mq.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 6468a715a0e4..01d8735db8d3 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -309,7 +309,7 @@ void blk_mq_end_io(struct request *rq, int error)
struct bio *bio = rq->bio;
unsigned int bytes = 0;
- trace_block_rq_complete(rq->q, rq);
+ trace_block_rq_complete(rq->q, rq, blk_rq_bytes(rq));
while (bio) {
struct bio *next = bio->bi_next;