Message ID | 20210325112941.365238-1-pbonzini@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | coroutine rwlock downgrade fix, minor VDI changes | expand |
On Thu, Mar 25, 2021 at 12:29:35PM +0100, Paolo Bonzini wrote: > This is a resubmit of David Edmondson's series at > https://patchew.org/QEMU/20210309144015.557477-1-david.edmondson@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 > > v5->v6: improve documentation, do not read lock->owners where > neither wrlock nor lock->mutex exclude concurrent writes > > 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-lock: 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(-) > > -- > 2.29.2 > Thanks, applied to my block tree: https://gitlab.com/stefanha/qemu/commits/block Stefan