This fixes the problem that blockdev-create on a local file blocks the main loop despite being a background job. This was caused by file-posix preallocating the image with blocking syscalls rather than moving this to the thread pool and yielding the coroutine meanwhile.
Kevin Wolf (2): block: Convert .bdrv_truncate callback to coroutine_fn file-posix: Make .bdrv_co_truncate asynchronous include/block/block.h | 4 + include/block/block_int.h | 4 +- include/block/raw-aio.h | 4 +- block.c | 49 +++++++- block/copy-on-read.c | 8 +- block/crypto.c | 9 +- block/file-posix.c | 277 ++++++++++++++++++++++++++-------------------- block/file-win32.c | 6 +- block/gluster.c | 14 ++- block/iscsi.c | 8 +- block/nfs.c | 7 +- block/qcow2.c | 14 +-- block/qed.c | 8 +- block/raw-format.c | 8 +- block/rbd.c | 8 +- block/sheepdog.c | 12 +- block/ssh.c | 6 +- 17 files changed, 267 insertions(+), 179 deletions(-) -- 2.13.6