On Thu, Apr 14, 2022 at 07:57:52PM +0200, Paolo Bonzini wrote: > The condition for waiting on the s->free_sema queue depends on > both s->in_flight and s->state. The latter is currently using > atomics, but this is quite dubious and probably wrong. > > Because s->state is written in the main thread too, for example by > the yank callback, it cannot be protected by a CoMutex. Introduce a > separate lock that can be used by nbd_co_send_request(); later on this > lock will also be used for s->state. There will not be any contention > on the lock unless there is a yank or reconnect, so this is not > performance sensitive. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > block/nbd.c | 46 +++++++++++++++++++++++++++------------------- > 1 file changed, 27 insertions(+), 19 deletions(-)
Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org