qcow2: Serialize all requests
QCOW2 with coroutines is not safe because synchronous code paths are no
longer guaranteed to execute without interference from pending requests.
A blocking call like bdrv_pread() causes the coroutine to yield and
another request can be processed during that time, causing to race
conditions or interference between pending requests.
The simple solution is to serialize all requests. This is bad for
performance and a fine-grained solution needs to be implemented in
future patches.
Using this patch, QCOW2 with coroutines can reliably install a RHEL6 VM
with a virtio-blk disk.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>