[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [qemu-xen-unstable] Convert vectored aio emulation to use a dedicated pool (Avi Kivity)
commit c2a5483761b84b98726de442457af69e740d2a6b Author: aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> Date: Fri Mar 20 18:26:03 2009 +0000 Convert vectored aio emulation to use a dedicated pool (Avi Kivity) This allows us to remove a hack in the vectored aio cancellation code. Signed-off-by: Avi Kivity <avi@xxxxxxxxxx> Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6871 c046a42c-6fe2-441c-8c8c-71466251a162 (cherry picked from commit c07a9008ac6985cd5a15909c2b9977d982defc12) --- block.c | 20 ++++++++++++++------ 1 files changed, 14 insertions(+), 6 deletions(-) diff --git a/block.c b/block.c index c26d4aa..0d15fdd 100644 --- a/block.c +++ b/block.c @@ -41,6 +41,8 @@ #define SECTOR_BITS 9 #define SECTOR_SIZE (1 << SECTOR_BITS) +static AIOPool vectored_aio_pool; + typedef struct BlockDriverAIOCBSync { BlockDriverAIOCB common; QEMUBH *bh; @@ -1369,6 +1371,13 @@ typedef struct VectorTranslationState { BlockDriverAIOCB *this_aiocb; } VectorTranslationState; +static void bdrv_aio_cancel_vector(BlockDriverAIOCB *acb) +{ + VectorTranslationState *s = acb->opaque; + + bdrv_aio_cancel(s->aiocb); +} + static void bdrv_aio_rw_vector_cb(void *opaque, int ret) { VectorTranslationState *s = opaque; @@ -1391,7 +1400,8 @@ static BlockDriverAIOCB *bdrv_aio_rw_vector(BlockDriverState *bs, { VectorTranslationState *s = qemu_mallocz(sizeof(*s)); - BlockDriverAIOCB *aiocb = qemu_aio_get(bs, cb, opaque); + BlockDriverAIOCB *aiocb = qemu_aio_get_pool(&vectored_aio_pool, bs, + cb, opaque); s->this_aiocb = aiocb; s->iov = iov; @@ -1480,11 +1490,6 @@ BlockDriverAIOCB *bdrv_aio_write(BlockDriverState *bs, int64_t sector_num, void bdrv_aio_cancel(BlockDriverAIOCB *acb) { - if (acb->cb == bdrv_aio_rw_vector_cb) { - VectorTranslationState *s = acb->opaque; - acb = s->aiocb; - } - acb->pool->cancel(acb); } @@ -1611,6 +1616,9 @@ static BlockDriverAIOCB *bdrv_aio_flush_em(BlockDriverState *bs, void bdrv_init(void) { + aio_pool_init(&vectored_aio_pool, sizeof(BlockDriverAIOCB), + bdrv_aio_cancel_vector); + bdrv_register(&bdrv_raw); #ifndef CONFIG_STUBDOM bdrv_register(&bdrv_host_device); -- generated by git-patchbot for /home/xen/git/qemu-xen-unstable.git _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |