From 4de659e8eb75df995310c5e57018c5a089c8fc6f Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 19 Mar 2012 18:07:47 +0100 Subject: vdi: merge aio_read_cb and aio_write_cb into callers Now inline the former AIO callbacks into vdi_co_readv and vdi_co_writev. While many cleanups are possible, the code now really looks synchronous. Acked-by: Stefan Weil Signed-off-by: Paolo Bonzini Signed-off-by: Kevin Wolf --- block/vdi.c | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/block/vdi.c b/block/vdi.c index df0f431..407fccc 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -523,15 +523,19 @@ static VdiAIOCB *vdi_aio_setup(BlockDriverState *bs, int64_t sector_num, return acb; } -static int vdi_aio_read_cb(void *opaque, int ret) +static int vdi_co_readv(BlockDriverState *bs, + int64_t sector_num, int nb_sectors, QEMUIOVector *qiov) { - VdiAIOCB *acb = opaque; - BlockDriverState *bs = acb->common.bs; + VdiAIOCB *acb; BDRVVdiState *s = bs->opaque; uint32_t bmap_entry; uint32_t block_index; uint32_t sector_in_block; uint32_t n_sectors; + int ret; + + logout("\n"); + acb = vdi_aio_setup(bs, sector_num, qiov, nb_sectors, 0); restart: block_index = acb->sector_num / s->block_sectors; @@ -578,27 +582,19 @@ restart: return ret; } -static int vdi_co_readv(BlockDriverState *bs, +static int vdi_co_writev(BlockDriverState *bs, int64_t sector_num, int nb_sectors, QEMUIOVector *qiov) { VdiAIOCB *acb; - int ret; - - logout("\n"); - acb = vdi_aio_setup(bs, sector_num, qiov, nb_sectors, 0); - ret = vdi_aio_read_cb(acb, 0); - return ret; -} - -static int vdi_aio_write_cb(void *opaque, int ret) -{ - VdiAIOCB *acb = opaque; - BlockDriverState *bs = acb->common.bs; BDRVVdiState *s = bs->opaque; uint32_t bmap_entry; uint32_t block_index; uint32_t sector_in_block; uint32_t n_sectors; + int ret; + + logout("\n"); + acb = vdi_aio_setup(bs, sector_num, qiov, nb_sectors, 1); restart: block_index = acb->sector_num / s->block_sectors; @@ -710,18 +706,6 @@ restart: return ret; } -static int vdi_co_writev(BlockDriverState *bs, - int64_t sector_num, int nb_sectors, QEMUIOVector *qiov) -{ - VdiAIOCB *acb; - int ret; - - logout("\n"); - acb = vdi_aio_setup(bs, sector_num, qiov, nb_sectors, 1); - ret = vdi_aio_write_cb(acb, 0); - return ret; -} - static int vdi_create(const char *filename, QEMUOptionParameter *options) { int fd; -- cgit v1.1