diff options
| author | Pavel Begunkov <[email protected]> | 2020-04-14 21:39:50 +0000 |
|---|---|---|
| committer | Jens Axboe <[email protected]> | 2020-04-15 01:16:59 +0000 |
| commit | 31af27c7cc9f675d93a135dca99e6413f9096f1d (patch) | |
| tree | fb117c1957897b8eff97aec74593fb86c810e69f /tools/perf/scripts/python/event_analyzing_sample.py | |
| parent | io_uring: kill already cached timeout.seq_offset (diff) | |
| download | kernel-31af27c7cc9f675d93a135dca99e6413f9096f1d.tar.gz kernel-31af27c7cc9f675d93a135dca99e6413f9096f1d.zip | |
io_uring: don't count rqs failed after current one
When checking for draining with __req_need_defer(), it tries to match
how many requests were sent before a current one with number of already
completed. Dropped SQEs are included in req->sequence, and they won't
ever appear in CQ. To compensate for that, __req_need_defer() substracts
ctx->cached_sq_dropped.
However, what it should really use is number of SQEs dropped __before__
the current one. In other words, any submitted request shouldn't
shouldn't affect dequeueing from the drain queue of previously submitted
ones.
Instead of saving proper ctx->cached_sq_dropped in each request,
substract from req->sequence it at initialisation, so it includes number
of properly submitted requests.
note: it also changes behaviour of timeouts, but
1. it's already diverge from the description because of using SQ
2. the description is ambiguous regarding dropped SQEs
Signed-off-by: Pavel Begunkov <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/event_analyzing_sample.py')
0 files changed, 0 insertions, 0 deletions
