diff options
author | Sage Weil <sage@inktank.com> | 2013-08-13 12:52:41 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-14 09:51:01 -0700 |
commit | 16ed0b9af8bc08c7dabead1c1a7c1a22b1fb02fb (patch) | |
tree | 7a48b9b93b821c47163a3248bd7d735ba12515b0 /src/fetch_config | |
parent | 7a52e2ff5025754f3040eff3fc52d4893cafc389 (diff) | |
download | ceph-16ed0b9af8bc08c7dabead1c1a7c1a22b1fb02fb.tar.gz |
librados: fix async aio completion wakeup
For aio flush, we register a wait on the most recent write. The write
completion code, however, was *only* waking the waiter if they were waiting
on that write, without regard to previous writes (completed or not).
For example, we might have 6 and 7 outstanding and wait on 7. If they
finish in order all is well, but if 7 finishes first we do the flush
completion early. Similarly, if we
- start 6
- start 7
- finish 7
- flush; wait on 7
- finish 6
we can hang forever.
Fix by doing any completions that are prior to the oldest pending write in
the aio write completion handler.
Refs: #5919
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Tested-by: Oliver Francke <Oliver.Francke@filoo.de>
Diffstat (limited to 'src/fetch_config')
0 files changed, 0 insertions, 0 deletions