The block layer will currently break with synthetic aiocbs, since it will
forward the cancellation request to the block format driver, which did not
generate the synthetic aiocbs.
This patchset fixes the problem by associating a cancellation method
with synthetic aiocbs through a aio pool data structure. This structure
contains information common to a class of aiocbs - size, cancellation method,
and free list.
Avi Kivity (5):
Refactor aio callback allocation to use an aiocb pool
Convert vectored aio emulation to use a dedicated pool
Implement cancellation method for dma async I/O
Use vectored aiocb storage to store vector translation state
Move block dma helpers aiocb to store dma state
block.c | 79 +++++++++++++++++++++++++++++++++++---------------------
block_int.h | 14 +++++++++-
dma-helpers.c | 44 +++++++++++++++++++++----------
dma.h | 1 +
vl.c | 1 +
5 files changed, 94 insertions(+), 45 deletions(-)