blktrace: fix accounting of partially completed requests
authorRoman Pen <r.peniaev@gmail.com>
Tue, 4 Mar 2014 14:13:10 +0000 (23:13 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 18 May 2014 12:25:55 +0000 (05:25 -0700)
commit14eee5bd065d6aac0acbdc6092a25ba68c55b9c8
tree6a5be23dd8205130a59ea2d9b9ce13e54c7c518f
parent664c0fc651b6ca2ab43ddbb73bbda2acdb2c9915
blktrace: fix accounting of partially completed requests

commit af5040da01ef980670b3741b3e10733ee3e33566 upstream.

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
Signed-off-by: Jens Axboe <axboe@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
block/blk-core.c
include/trace/events/block.h
kernel/trace/blktrace.c