[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v5 0/5] coroutine-lock: polymorphic CoQueue
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-block] [PATCH v5 0/5] coroutine-lock: polymorphic CoQueue |
Date: |
Mon, 5 Feb 2018 14:39:49 +0000 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
On Sat, Feb 03, 2018 at 10:39:30AM -0500, Paolo Bonzini wrote:
> There are cases in which a queued coroutine must be restarted from
> non-coroutine context (with qemu_co_enter_next). In this cases,
> qemu_co_enter_next also needs to be thread-safe, but it cannot use a
> CoMutex and so cannot qemu_co_queue_wait. This happens in curl (which
> right now is rolling its own list of Coroutines) and will happen in
> Fam's NVMe driver as well.
>
> This series extracts the idea of a polymorphic lockable object
> from my "scoped lock guard" proposal, and applies it to CoQueue.
> The implementation of QemuLockable is similar to C11 _Generic, but
> redone using the preprocessor and GCC builtins for compatibility.
>
> In general, while a bit on the esoteric side, the functionality used
> to emulate _Generic is fairly old in GCC, and the builtins are already
> used by include/qemu/atomic.h; the series was tested with Fedora 27 (boot
> Damn Small Linux via http) and CentOS 6 (compiled only).
>
> Paolo
>
> v4->v5: fix checkpatch complaints
>
> v3->v4: fix -O0 compilation [Fam]
> typos and copyright dates [Eric, Fam]
> improve CoQueue comments [Stefan]
>
> Paolo Bonzini (5):
> test-coroutine: add simple CoMutex test
> lockable: add QemuLockable
> coroutine-lock: convert CoQueue to use QemuLockable
> coroutine-lock: make qemu_co_enter_next thread-safe
> curl: convert to CoQueue
>
> block/curl.c | 20 ++--------
> fsdev/qemu-fsdev-throttle.c | 4 +-
> include/qemu/compiler.h | 40 +++++++++++++++++++
> include/qemu/coroutine.h | 29 +++++++++-----
> include/qemu/lockable.h | 96
> +++++++++++++++++++++++++++++++++++++++++++++
> include/qemu/thread.h | 5 +--
> include/qemu/typedefs.h | 4 ++
> tests/test-coroutine.c | 75 ++++++++++++++++++++++++++++++++++-
> util/qemu-coroutine-lock.c | 22 +++++++----
> 9 files changed, 256 insertions(+), 39 deletions(-)
> create mode 100644 include/qemu/lockable.h
>
> --
> 2.14.3
>
Reviewed-by: Stefan Hajnoczi <address@hidden>
signature.asc
Description: PGP signature
- Re: [Qemu-block] [Qemu-devel] [PATCH 1/5] test-coroutine: add simple CoMutex test, (continued)
- [Qemu-block] [PATCH 3/5] coroutine-lock: convert CoQueue to use QemuLockable, Paolo Bonzini, 2018/02/03
- [Qemu-block] [PATCH 2/5] lockable: add QemuLockable, Paolo Bonzini, 2018/02/03
- [Qemu-block] [PATCH 4/5] coroutine-lock: make qemu_co_enter_next thread-safe, Paolo Bonzini, 2018/02/03
- [Qemu-block] [PATCH 5/5] curl: convert to CoQueue, Paolo Bonzini, 2018/02/03
- Re: [Qemu-block] [PATCH v5 0/5] coroutine-lock: polymorphic CoQueue,
Stefan Hajnoczi <=
- Re: [Qemu-block] [PATCH v5 0/5] coroutine-lock: polymorphic CoQueue, Fam Zheng, 2018/02/07