Paolo Bonzini 6bdcc018a6 nbd: make it thread-safe, fix qcow2 over nbd
NBD is not thread safe, because it accesses s->in_flight without
a CoMutex.  Fixing this will be required for multiqueue.
CoQueue doesn't have spurious wakeups but, when another coroutine can
run between qemu_co_queue_next's wakeup and qemu_co_queue_wait's
re-locking of the mutex, the wait condition can become false and
a loop is necessary.

In fact, it turns out that the loop is necessary even without this
multi-threaded scenario.  A particular sequence of coroutine wakeups
is happening ~80% of the time when starting a guest with qcow2 image
served over NBD (i.e. qemu-nbd --format=raw, and QEMU's -drive option
has -format=qcow2).  This patch fixes that issue too.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2017-06-07 18:22:02 +02:00
..
2016-01-20 13:36:23 +01:00
2016-10-07 14:14:06 +02:00
2016-10-07 14:14:06 +02:00
2017-05-30 14:15:15 +01:00
2016-11-25 13:51:30 +01:00
2017-05-17 12:04:59 +02:00
2016-06-07 18:19:24 +03:00
2016-01-20 13:36:23 +01:00
2016-01-20 13:36:23 +01:00
2017-05-18 19:20:59 +02:00
2017-05-17 12:04:59 +02:00
2016-09-23 11:42:52 +08:00
2017-05-17 12:04:59 +02:00
2017-05-17 12:04:59 +02:00
2017-05-17 12:04:59 +02:00
2017-05-17 12:04:59 +02:00