This series, applying on top of block branch, enables drivers to use coroutines for flush and discard. I kept aio_discard after discussing with Kevin since it should be useful not only for raw-posix-aio, but also for the userspace iSCSI backend (and in general for backends relying on an external library that is designed around aio).
BTW, with this patch we get "for free" the invariant that bdrv_aio_* never returns a NULL acb (Stefan's patches already got to that point for read/write, of course). v1->v2: add bdrv_co_flush and bdrv_co_discard entry points Paolo Bonzini (2): block: unify flush implementations block: add bdrv_co_discard and bdrv_aio_discard support Stefan Hajnoczi (1): block: drop redundant bdrv_flush implementation block.c | 258 +++++++++++++++++++++++++++++++++-------------------- block.h | 5 + block/blkdebug.c | 6 -- block/blkverify.c | 9 -- block/qcow.c | 6 -- block/qcow2.c | 19 ---- block/qed.c | 6 -- block/raw-posix.c | 18 ---- block/raw.c | 23 ++--- block_int.h | 10 ++- trace-events | 1 + 11 files changed, 184 insertions(+), 177 deletions(-) -- 1.7.6