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 <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@fb.com>
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);