On Thu, Jan 12, 2017 at 07:07:50PM +0100, Paolo Bonzini wrote: > This is the first step of pushing down the AioContext lock. Bottom halves > are already protected by their own lock, use it also for walking_bh > and for the handlers list (including walking_handlers). The (lock, > walking_foo) pair is wrapped into the QemuLockCnt primitive. > > The only difference from v3 is a smattering of tiny nice improvements > to QemuLockCnt. > > Paolo > > v4->v5: > remove stray tabs [patchew] > > v3->v4: > Avoid useless atomic_mb_read in non-futex lockcnt [Stefan] > Use atomic_read in qemu_lockcnt_count [Stefan] > Tweak comment for qemu_lockcnt_cmpxchg_or_wait [Fam] > Use if/else in qemu_lockcnt_dec_and_lock [Fam] > Comment QEMU_LOCKCNT_STATE_* definitions [Fam] > > v2->v3: > fix missing unlock > > v1->v2: > rebased on top of polling patches > moved documentation to include/ > new patch "aio-posix: split aio_dispatch_handlers out of aio_dispatch" > replaced atomic_read with atomic_mb_read in qemu_lockcnt_inc > replaced futex* function and macro names with qemu_futex* > removed atomic access to node->pfd.revents (because there is no > concurrent aio_poll anymore after the BDRV_POLL_WHILE series) > left "aio: push aio_context_acquire/release down to dispatching" > to a later series > > Paolo Bonzini (10): > aio: rename bh_lock to list_lock > qemu-thread: introduce QemuLockCnt > aio: make ctx->list_lock a QemuLockCnt, subsuming ctx->walking_bh > qemu-thread: optimize QemuLockCnt with futexes on Linux > aio-posix: split aio_dispatch_handlers out of aio_dispatch > aio: tweak walking in dispatch phase > aio-posix: remove walking_handlers, protecting AioHandler list with > list_lock > aio-win32: remove walking_handlers, protecting AioHandler list with > list_lock > aio: document locking > async: optimize aio_bh_poll > > aio-posix.c | 116 +++++++------ > aio-win32.c | 83 +++++---- > async.c | 45 ++--- > docs/lockcnt.txt | 277 +++++++++++++++++++++++++++++++ > docs/multiple-iothreads.txt | 13 +- > include/block/aio.h | 38 ++--- > include/qemu/futex.h | 36 ++++ > include/qemu/thread.h | 112 +++++++++++++ > util/Makefile.objs | 1 + > util/lockcnt.c | 397 > ++++++++++++++++++++++++++++++++++++++++++++ > util/qemu-thread-posix.c | 35 +--- > util/qemu-thread-win32.c | 2 +- > util/trace-events | 10 ++ > 13 files changed, 1006 insertions(+), 159 deletions(-) > create mode 100644 docs/lockcnt.txt > create mode 100644 include/qemu/futex.h > create mode 100644 util/lockcnt.c > > -- > 2.9.3 >
Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan
signature.asc
Description: PGP signature