From: Jan Kara Date: Thu, 5 May 2016 15:17:08 +0000 (+0200) Subject: btt: Replace overlapping IO X-Git-Tag: blktrace-1.2.0~11 X-Git-Url: https://git.kernel.dk/?p=blktrace.git;a=commitdiff_plain;h=1200fd07bb6f71be72749b306bd7647fe8009af5 btt: Replace overlapping IO Currently btt keeps the original IO in its RB-tree even if it sees new IO that is beginning at the same sector. However such IO most likely means that we have just lost the completion event for the IO that is still in the tree. So in such case replacing the IO in RB-tree makes more sense to avoid bogus IOs being reported as taking huge amount of time. Signed-off-by: Jan Kara Signed-off-by: Jens Axboe --- diff --git a/btt/dip_rb.c b/btt/dip_rb.c index 867a97b..2aa7ffc 100644 --- a/btt/dip_rb.c +++ b/btt/dip_rb.c @@ -37,8 +37,10 @@ int rb_insert(struct rb_root *root, struct io *iop) p = &(*p)->rb_left; else if (s > __s) p = &(*p)->rb_right; - else - return 0; + else { + rb_replace_node(parent, &iop->rb_node, root); + return 1; + } } rb_link_node(&iop->rb_node, parent, p);