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 <sw@weilnetz.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
0c7bfc321b
commit
4de659e8eb
40
block/vdi.c
40
block/vdi.c
|
@ -523,15 +523,19 @@ static VdiAIOCB *vdi_aio_setup(BlockDriverState *bs, int64_t sector_num,
|
||||||
return acb;
|
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;
|
VdiAIOCB *acb;
|
||||||
BlockDriverState *bs = acb->common.bs;
|
|
||||||
BDRVVdiState *s = bs->opaque;
|
BDRVVdiState *s = bs->opaque;
|
||||||
uint32_t bmap_entry;
|
uint32_t bmap_entry;
|
||||||
uint32_t block_index;
|
uint32_t block_index;
|
||||||
uint32_t sector_in_block;
|
uint32_t sector_in_block;
|
||||||
uint32_t n_sectors;
|
uint32_t n_sectors;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
logout("\n");
|
||||||
|
acb = vdi_aio_setup(bs, sector_num, qiov, nb_sectors, 0);
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
block_index = acb->sector_num / s->block_sectors;
|
block_index = acb->sector_num / s->block_sectors;
|
||||||
|
@ -578,27 +582,19 @@ restart:
|
||||||
return ret;
|
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)
|
int64_t sector_num, int nb_sectors, QEMUIOVector *qiov)
|
||||||
{
|
{
|
||||||
VdiAIOCB *acb;
|
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;
|
BDRVVdiState *s = bs->opaque;
|
||||||
uint32_t bmap_entry;
|
uint32_t bmap_entry;
|
||||||
uint32_t block_index;
|
uint32_t block_index;
|
||||||
uint32_t sector_in_block;
|
uint32_t sector_in_block;
|
||||||
uint32_t n_sectors;
|
uint32_t n_sectors;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
logout("\n");
|
||||||
|
acb = vdi_aio_setup(bs, sector_num, qiov, nb_sectors, 1);
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
block_index = acb->sector_num / s->block_sectors;
|
block_index = acb->sector_num / s->block_sectors;
|
||||||
|
@ -710,18 +706,6 @@ restart:
|
||||||
return ret;
|
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)
|
static int vdi_create(const char *filename, QEMUOptionParameter *options)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|
Loading…
Reference in New Issue