On 24/03/21 17:23, Stefan Hajnoczi wrote:
On Wed, Mar 17, 2021 at 07:00:07PM +0100, Paolo Bonzini wrote:
This is a resubmit of David Edmondson's series at
https://patchew.org/QEMU/20210309144015.557477-1-david.edmond...@oracle.com/.
After closer analysis on IRC, the CoRwlock's attempt to ensure
fairness turned out to be flawed.  Therefore, this series
reimplements CoRwlock without using a CoQueue.  Tracking whether
each queued coroutine is a reader/writer makes it possible to
never wake a writer when only readers should be allowed and
vice versa.

v2->v3: new CoRwlock implementation

v3->v4: fix upgrade and add a test for that, too

v4->v5: typo

David Edmondson (4):
   block/vdi: When writing new bmap entry fails, don't leak the buffer
   block/vdi: Don't assume that blocks are larger than VdiHeader
   coroutine/mutex: Store the coroutine in the CoWaitRecord only once
   test-coroutine: Add rwlock downgrade test

Paolo Bonzini (2):
   coroutine-lock: reimplement CoRwlock to fix downgrade bug
   test-coroutine: add rwlock upgrade test

  block/vdi.c                 |  11 ++-
  include/qemu/coroutine.h    |  17 ++--
  tests/unit/test-coroutine.c | 161 ++++++++++++++++++++++++++++++++++++
  util/qemu-coroutine-lock.c  | 149 +++++++++++++++++++++------------
  4 files changed, 274 insertions(+), 64 deletions(-)

I had questions about the rwlock implementation. The other patches look
ready to go.

Cool, none of them seem to be blockers but you raised good points. I'll send v6 tomorrow.

Paolo


Reply via email to