From: Remy Noel <[email protected]>
It is possible for an io_poll callback to be concurrently executed along
with an aio_set_fd_handlers. This can cause all sorts of problems, like
a NULL callback or a bad opaque pointer.
We fixes that by using an remove/insert RCU scheme.
Please note that i did not test the win32 version.
Remy Noel (3):
aio-posix: Fix concurrent aio_poll/set_fd_handler.
util/aio-posix: Use RCU for handler insertion.
aio: Do not use list_lock as a sync mechanism for aio_handlers
anymore.
include/block/aio.h | 4 +-
util/aio-posix.c | 148 ++++++++++++++++++++------------------------
util/aio-win32.c | 82 +++++++++---------------
util/async.c | 7 ++-
4 files changed, 103 insertions(+), 138 deletions(-)
--
2.19.1