This is part of my work that aims to remove the bdrv_aio_*() emulation in io.c.
After the series, quorum doesn't only use the preferred interfaces, but the
code becomes a little easier to follow and byte granularity requests are
supported. There is probably still some potential for additional cleanups in a
follow-up series, but this should already be enough to be worth merging.
v2:
- Patch 7: Change rounding in one more place [Eric]
- Patch 9: Additional cleanup [Eric]
v1 (from RFC):
- Patch 1: Removed useless #include [Eric]
- Patch 3:
* Define QuorumCo at the top so that a later patch doesn't
have to move it [Eric]
* Renamed QuorumCo.i to QuorumCo.idx [Berto]
* Removed useless co = NULL [Eric]
- Patch 5/6: Reenter caller coroutine only after the last request [Berto]
- Patch 6: Replace void cast by comment [Berto]
- Patch 7: Change rounding [Eric/Berto]
Kevin Wolf (9):
coroutine: Introduce qemu_coroutine_enter_if_inactive()
quorum: Remove s from quorum_aio_get() arguments
quorum: Implement .bdrv_co_readv/writev
quorum: Do cleanup in caller coroutine
quorum: Inline quorum_aio_cb()
quorum: Avoid bdrv_aio_writev() for rewrites
quorum: Implement .bdrv_co_preadv/pwritev()
quorum: Inline quorum_fifo_aio_cb()
quorum: Clean up quorum_aio_get()
block/quorum.c | 404 +++++++++++++++++++++++++----------------------
include/qemu/coroutine.h | 6 +
util/qemu-coroutine.c | 7 +
3 files changed, 229 insertions(+), 188 deletions(-)
--
1.8.3.1