Drivers that only implement the bdrv_read and bdrv_write callbacks were unwillingly converted to be reentrant when bdrv_read and bdrv_write were changed to always create coroutines. So, we need locks aroudn read and write operations.
This series does this (patches 4-6) and removes the flush/discard callbacks that, as it turns out, are really duplicates of co_flush and co_discard (patches 7-8). Patches 1-2 are cleanups that I discovered while testing. v1->v2: rwlock->mutex, convert read-only drivers too, drop vpc change Paolo Bonzini (7): vmdk: fix return values of vmdk_parent_open vmdk: clean up open block: add a CoMutex to synchronous read drivers block: take lock around bdrv_read implementations block: take lock around bdrv_write implementations block: change flush to co_flush block: change discard to co_discard block.c | 4 -- block/bochs.c | 15 +++++++++- block/cloop.c | 15 +++++++++- block/cow.c | 34 ++++++++++++++++++--- block/dmg.c | 15 +++++++++- block/nbd.c | 28 +++++++++++++++++- block/parallels.c | 15 +++++++++- block/qcow.c | 11 +++---- block/qcow2.c | 28 +++++++++++------- block/raw-posix.c | 5 ++- block/raw-win32.c | 4 +- block/rbd.c | 4 +- block/vdi.c | 6 ++-- block/vmdk.c | 82 +++++++++++++++++++++++++++++++++-------------------- block/vpc.c | 34 ++++++++++++++++++--- block/vvfat.c | 28 +++++++++++++++++- block_int.h | 3 -- 17 files changed, 249 insertions(+), 82 deletions(-) -- 1.7.6