Skip to content
Commit 60b6a7e6 authored by Edward Hsieh's avatar Edward Hsieh Committed by Jens Axboe
Browse files

block: fix trace completion for chained bio

For chained bio, trace_block_bio_complete in bio_endio is currently called
only by the parent bio once upon all chained bio completed.
However, the sector and size for the parent bio are modified in bio_split.
Therefore, the size and sector of the complete events might not match the
queue events in blktrace.

The original fix of bio completion trace <fbbaf700> ("block: trace
completion of all bios.") wants multiple complete events to correspond
to one queue event but missed this.

The issue can be reproduced by md/raid5 read with bio cross chunks.

To fix, move trace completion into the loop for every chained bio to call.

Fixes: fbbaf700

 ("block: trace completion of all bios.")
Reviewed-by: default avatarWade Liang <wadel@synology.com>
Reviewed-by: default avatarBingJing Chang <bingjingc@synology.com>
Signed-off-by: default avatarEdward Hsieh <edwardh@synology.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210624123030.27014-1-edwardh@synology.com
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent ddcc5c54
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment