Message ID | 1351697677-31598-4-git-send-email-stefanha@redhat.com |
---|---|
State | New |
Headers | show |
Il 31/10/2012 16:34, Stefan Hajnoczi ha scritto: > Now that AIOPool no longer keeps a freelist, it isn't really a "pool" > anymore. Rename it to AIOCBInfo and make it const since it no longer > needs to be modified. > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > block.c | 22 +++++++++++----------- > block/blkdebug.c | 4 ++-- > block/blkverify.c | 4 ++-- > block/curl.c | 4 ++-- > block/gluster.c | 6 +++--- > block/iscsi.c | 12 ++++++------ > block/linux-aio.c | 4 ++-- > block/qed.c | 4 ++-- > block/rbd.c | 4 ++-- > block/sheepdog.c | 4 ++-- > block/win32-aio.c | 4 ++-- > dma-helpers.c | 4 ++-- > hw/ide/core.c | 4 ++-- > qemu-aio.h | 8 ++++---- > thread-pool.c | 4 ++-- > 15 files changed, 46 insertions(+), 46 deletions(-) > > diff --git a/block.c b/block.c > index ea0f7d8..854ebd6 100644 > --- a/block.c > +++ b/block.c > @@ -3521,7 +3521,7 @@ int bdrv_aio_multiwrite(BlockDriverState *bs, BlockRequest *reqs, int num_reqs) > > void bdrv_aio_cancel(BlockDriverAIOCB *acb) > { > - acb->pool->cancel(acb); > + acb->aiocb_info->cancel(acb); > } > > /* block I/O throttling */ > @@ -3711,7 +3711,7 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB *blockacb) > qemu_aio_release(acb); > } > > -static AIOPool bdrv_em_aio_pool = { > +static const AIOCBInfo bdrv_em_aiocb_info = { > .aiocb_size = sizeof(BlockDriverAIOCBSync), > .cancel = bdrv_aio_cancel_em, > }; > @@ -3740,7 +3740,7 @@ static BlockDriverAIOCB *bdrv_aio_rw_vector(BlockDriverState *bs, > { > BlockDriverAIOCBSync *acb; > > - acb = qemu_aio_get(&bdrv_em_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&bdrv_em_aiocb_info, bs, cb, opaque); > acb->is_write = is_write; > acb->qiov = qiov; > acb->bounce = qemu_blockalign(bs, qiov->size); > @@ -3785,7 +3785,7 @@ static void bdrv_aio_co_cancel_em(BlockDriverAIOCB *blockacb) > qemu_aio_flush(); > } > > -static AIOPool bdrv_em_co_aio_pool = { > +static const AIOCBInfo bdrv_em_co_aiocb_info = { > .aiocb_size = sizeof(BlockDriverAIOCBCoroutine), > .cancel = bdrv_aio_co_cancel_em, > }; > @@ -3828,7 +3828,7 @@ static BlockDriverAIOCB *bdrv_co_aio_rw_vector(BlockDriverState *bs, > Coroutine *co; > BlockDriverAIOCBCoroutine *acb; > > - acb = qemu_aio_get(&bdrv_em_co_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&bdrv_em_co_aiocb_info, bs, cb, opaque); > acb->req.sector = sector_num; > acb->req.nb_sectors = nb_sectors; > acb->req.qiov = qiov; > @@ -3858,7 +3858,7 @@ BlockDriverAIOCB *bdrv_aio_flush(BlockDriverState *bs, > Coroutine *co; > BlockDriverAIOCBCoroutine *acb; > > - acb = qemu_aio_get(&bdrv_em_co_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&bdrv_em_co_aiocb_info, bs, cb, opaque); > co = qemu_coroutine_create(bdrv_aio_flush_co_entry); > qemu_coroutine_enter(co, acb); > > @@ -3884,7 +3884,7 @@ BlockDriverAIOCB *bdrv_aio_discard(BlockDriverState *bs, > > trace_bdrv_aio_discard(bs, sector_num, nb_sectors, opaque); > > - acb = qemu_aio_get(&bdrv_em_co_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&bdrv_em_co_aiocb_info, bs, cb, opaque); > acb->req.sector = sector_num; > acb->req.nb_sectors = nb_sectors; > co = qemu_coroutine_create(bdrv_aio_discard_co_entry); > @@ -3904,13 +3904,13 @@ void bdrv_init_with_whitelist(void) > bdrv_init(); > } > > -void *qemu_aio_get(AIOPool *pool, BlockDriverState *bs, > +void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs, > BlockDriverCompletionFunc *cb, void *opaque) > { > BlockDriverAIOCB *acb; > > - acb = g_slice_alloc(pool->aiocb_size); > - acb->pool = pool; > + acb = g_slice_alloc(aiocb_info->aiocb_size); > + acb->aiocb_info = aiocb_info; > acb->bs = bs; > acb->cb = cb; > acb->opaque = opaque; > @@ -3920,7 +3920,7 @@ void *qemu_aio_get(AIOPool *pool, BlockDriverState *bs, > void qemu_aio_release(void *p) > { > BlockDriverAIOCB *acb = p; > - g_slice_free1(acb->pool->aiocb_size, acb); > + g_slice_free1(acb->aiocb_info->aiocb_size, acb); > } > > /**************************************************************/ > diff --git a/block/blkdebug.c b/block/blkdebug.c > index 1206d52..d61ece8 100644 > --- a/block/blkdebug.c > +++ b/block/blkdebug.c > @@ -41,7 +41,7 @@ typedef struct BlkdebugAIOCB { > > static void blkdebug_aio_cancel(BlockDriverAIOCB *blockacb); > > -static AIOPool blkdebug_aio_pool = { > +static const AIOCBInfo blkdebug_aiocb_info = { > .aiocb_size = sizeof(BlkdebugAIOCB), > .cancel = blkdebug_aio_cancel, > }; > @@ -335,7 +335,7 @@ static BlockDriverAIOCB *inject_error(BlockDriverState *bs, > return NULL; > } > > - acb = qemu_aio_get(&blkdebug_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&blkdebug_aiocb_info, bs, cb, opaque); > acb->ret = -error; > > bh = qemu_bh_new(error_callback_bh, acb); > diff --git a/block/blkverify.c b/block/blkverify.c > index 9d5f1ec..4beede7 100644 > --- a/block/blkverify.c > +++ b/block/blkverify.c > @@ -48,7 +48,7 @@ static void blkverify_aio_cancel(BlockDriverAIOCB *blockacb) > } > } > > -static AIOPool blkverify_aio_pool = { > +static const AIOCBInfo blkverify_aiocb_info = { > .aiocb_size = sizeof(BlkverifyAIOCB), > .cancel = blkverify_aio_cancel, > }; > @@ -233,7 +233,7 @@ static BlkverifyAIOCB *blkverify_aio_get(BlockDriverState *bs, bool is_write, > BlockDriverCompletionFunc *cb, > void *opaque) > { > - BlkverifyAIOCB *acb = qemu_aio_get(&blkverify_aio_pool, bs, cb, opaque); > + BlkverifyAIOCB *acb = qemu_aio_get(&blkverify_aiocb_info, bs, cb, opaque); > > acb->bh = NULL; > acb->is_write = is_write; > diff --git a/block/curl.c b/block/curl.c > index c1074cd..1179484 100644 > --- a/block/curl.c > +++ b/block/curl.c > @@ -438,7 +438,7 @@ static void curl_aio_cancel(BlockDriverAIOCB *blockacb) > // Do we have to implement canceling? Seems to work without... > } > > -static AIOPool curl_aio_pool = { > +static const AIOCBInfo curl_aiocb_info = { > .aiocb_size = sizeof(CURLAIOCB), > .cancel = curl_aio_cancel, > }; > @@ -505,7 +505,7 @@ static BlockDriverAIOCB *curl_aio_readv(BlockDriverState *bs, > { > CURLAIOCB *acb; > > - acb = qemu_aio_get(&curl_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&curl_aiocb_info, bs, cb, opaque); > > acb->qiov = qiov; > acb->sector_num = sector_num; > diff --git a/block/gluster.c b/block/gluster.c > index 3588d73..1c90174 100644 > --- a/block/gluster.c > +++ b/block/gluster.c > @@ -388,7 +388,7 @@ static void qemu_gluster_aio_cancel(BlockDriverAIOCB *blockacb) > } > } > > -static AIOPool gluster_aio_pool = { > +static const AIOCBInfo gluster_aiocb_info = { > .aiocb_size = sizeof(GlusterAIOCB), > .cancel = qemu_gluster_aio_cancel, > }; > @@ -439,7 +439,7 @@ static BlockDriverAIOCB *qemu_gluster_aio_rw(BlockDriverState *bs, > size = nb_sectors * BDRV_SECTOR_SIZE; > s->qemu_aio_count++; > > - acb = qemu_aio_get(&gluster_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&gluster_aiocb_info, bs, cb, opaque); > acb->size = size; > acb->ret = 0; > acb->finished = NULL; > @@ -484,7 +484,7 @@ static BlockDriverAIOCB *qemu_gluster_aio_flush(BlockDriverState *bs, > GlusterAIOCB *acb; > BDRVGlusterState *s = bs->opaque; > > - acb = qemu_aio_get(&gluster_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&gluster_aiocb_info, bs, cb, opaque); > acb->size = 0; > acb->ret = 0; > acb->finished = NULL; > diff --git a/block/iscsi.c b/block/iscsi.c > index d0b1a10..a6a819d 100644 > --- a/block/iscsi.c > +++ b/block/iscsi.c > @@ -133,7 +133,7 @@ iscsi_aio_cancel(BlockDriverAIOCB *blockacb) > } > } > > -static AIOPool iscsi_aio_pool = { > +static const AIOCBInfo iscsi_aiocb_info = { > .aiocb_size = sizeof(IscsiAIOCB), > .cancel = iscsi_aio_cancel, > }; > @@ -234,7 +234,7 @@ iscsi_aio_writev(BlockDriverState *bs, int64_t sector_num, > uint64_t lba; > struct iscsi_data data; > > - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); > trace_iscsi_aio_writev(iscsi, sector_num, nb_sectors, opaque, acb); > > acb->iscsilun = iscsilun; > @@ -325,7 +325,7 @@ iscsi_aio_readv(BlockDriverState *bs, int64_t sector_num, > > qemu_read_size = BDRV_SECTOR_SIZE * (size_t)nb_sectors; > > - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); > trace_iscsi_aio_readv(iscsi, sector_num, nb_sectors, opaque, acb); > > acb->iscsilun = iscsilun; > @@ -430,7 +430,7 @@ iscsi_aio_flush(BlockDriverState *bs, > struct iscsi_context *iscsi = iscsilun->iscsi; > IscsiAIOCB *acb; > > - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); > > acb->iscsilun = iscsilun; > acb->canceled = 0; > @@ -483,7 +483,7 @@ iscsi_aio_discard(BlockDriverState *bs, > IscsiAIOCB *acb; > struct unmap_list list[1]; > > - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); > > acb->iscsilun = iscsilun; > acb->canceled = 0; > @@ -558,7 +558,7 @@ static BlockDriverAIOCB *iscsi_aio_ioctl(BlockDriverState *bs, > > assert(req == SG_IO); > > - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); > > acb->iscsilun = iscsilun; > acb->canceled = 0; > diff --git a/block/linux-aio.c b/block/linux-aio.c > index 6ca984d..91ef863 100644 > --- a/block/linux-aio.c > +++ b/block/linux-aio.c > @@ -140,7 +140,7 @@ static void laio_cancel(BlockDriverAIOCB *blockacb) > } > } > > -static AIOPool laio_pool = { > +static const AIOCBInfo laio_aiocb_info = { > .aiocb_size = sizeof(struct qemu_laiocb), > .cancel = laio_cancel, > }; > @@ -154,7 +154,7 @@ BlockDriverAIOCB *laio_submit(BlockDriverState *bs, void *aio_ctx, int fd, > struct iocb *iocbs; > off_t offset = sector_num * 512; > > - laiocb = qemu_aio_get(&laio_pool, bs, cb, opaque); > + laiocb = qemu_aio_get(&laio_aiocb_info, bs, cb, opaque); > laiocb->nbytes = nb_sectors * 512; > laiocb->ctx = s; > laiocb->ret = -EINPROGRESS; > diff --git a/block/qed.c b/block/qed.c > index 6c182ca..0b5374a 100644 > --- a/block/qed.c > +++ b/block/qed.c > @@ -30,7 +30,7 @@ static void qed_aio_cancel(BlockDriverAIOCB *blockacb) > } > } > > -static AIOPool qed_aio_pool = { > +static const AIOCBInfo qed_aiocb_info = { > .aiocb_size = sizeof(QEDAIOCB), > .cancel = qed_aio_cancel, > }; > @@ -1311,7 +1311,7 @@ static BlockDriverAIOCB *qed_aio_setup(BlockDriverState *bs, > BlockDriverCompletionFunc *cb, > void *opaque, int flags) > { > - QEDAIOCB *acb = qemu_aio_get(&qed_aio_pool, bs, cb, opaque); > + QEDAIOCB *acb = qemu_aio_get(&qed_aiocb_info, bs, cb, opaque); > > trace_qed_aio_setup(bs->opaque, acb, sector_num, nb_sectors, > opaque, flags); > diff --git a/block/rbd.c b/block/rbd.c > index 015a9db..0aaacaf 100644 > --- a/block/rbd.c > +++ b/block/rbd.c > @@ -570,7 +570,7 @@ static void qemu_rbd_aio_cancel(BlockDriverAIOCB *blockacb) > acb->cancelled = 1; > } > > -static AIOPool rbd_aio_pool = { > +static const AIOCBInfo rbd_aiocb_info = { > .aiocb_size = sizeof(RBDAIOCB), > .cancel = qemu_rbd_aio_cancel, > }; > @@ -672,7 +672,7 @@ static BlockDriverAIOCB *rbd_start_aio(BlockDriverState *bs, > > BDRVRBDState *s = bs->opaque; > > - acb = qemu_aio_get(&rbd_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&rbd_aiocb_info, bs, cb, opaque); > acb->cmd = cmd; > acb->qiov = qiov; > if (cmd == RBD_AIO_DISCARD) { > diff --git a/block/sheepdog.c b/block/sheepdog.c > index 9306174..a48f58c 100644 > --- a/block/sheepdog.c > +++ b/block/sheepdog.c > @@ -420,7 +420,7 @@ static void sd_aio_cancel(BlockDriverAIOCB *blockacb) > acb->canceled = true; > } > > -static AIOPool sd_aio_pool = { > +static const AIOCBInfo sd_aiocb_info = { > .aiocb_size = sizeof(SheepdogAIOCB), > .cancel = sd_aio_cancel, > }; > @@ -431,7 +431,7 @@ static SheepdogAIOCB *sd_aio_setup(BlockDriverState *bs, QEMUIOVector *qiov, > { > SheepdogAIOCB *acb; > > - acb = qemu_aio_get(&sd_aio_pool, bs, cb, opaque); > + acb = qemu_aio_get(&sd_aiocb_info, bs, cb, opaque); > > acb->qiov = qiov; > > diff --git a/block/win32-aio.c b/block/win32-aio.c > index c34dc73..444c228 100644 > --- a/block/win32-aio.c > +++ b/block/win32-aio.c > @@ -131,7 +131,7 @@ static void win32_aio_cancel(BlockDriverAIOCB *blockacb) > } > } > > -static AIOPool win32_aio_pool = { > +static const AIOCBInfo win32_aiocb_info = { > .aiocb_size = sizeof(QEMUWin32AIOCB), > .cancel = win32_aio_cancel, > }; > @@ -145,7 +145,7 @@ BlockDriverAIOCB *win32_aio_submit(BlockDriverState *bs, > uint64_t offset = sector_num * 512; > DWORD rc; > > - waiocb = qemu_aio_get(&win32_aio_pool, bs, cb, opaque); > + waiocb = qemu_aio_get(&win32_aiocb_info, bs, cb, opaque); > waiocb->nbytes = nb_sectors * 512; > waiocb->qiov = qiov; > waiocb->is_read = (type == QEMU_AIO_READ); > diff --git a/dma-helpers.c b/dma-helpers.c > index 0c18e9e..4f5fb64 100644 > --- a/dma-helpers.c > +++ b/dma-helpers.c > @@ -195,7 +195,7 @@ static void dma_aio_cancel(BlockDriverAIOCB *acb) > dma_complete(dbs, 0); > } > > -static AIOPool dma_aio_pool = { > +static const AIOCBInfo dma_aiocb_info = { > .aiocb_size = sizeof(DMAAIOCB), > .cancel = dma_aio_cancel, > }; > @@ -205,7 +205,7 @@ BlockDriverAIOCB *dma_bdrv_io( > DMAIOFunc *io_func, BlockDriverCompletionFunc *cb, > void *opaque, DMADirection dir) > { > - DMAAIOCB *dbs = qemu_aio_get(&dma_aio_pool, bs, cb, opaque); > + DMAAIOCB *dbs = qemu_aio_get(&dma_aiocb_info, bs, cb, opaque); > > trace_dma_bdrv_io(dbs, bs, sector_num, (dir == DMA_DIRECTION_TO_DEVICE)); > > diff --git a/hw/ide/core.c b/hw/ide/core.c > index d683a8c..7d6b0fa 100644 > --- a/hw/ide/core.c > +++ b/hw/ide/core.c > @@ -336,7 +336,7 @@ static void trim_aio_cancel(BlockDriverAIOCB *acb) > qemu_aio_release(iocb); > } > > -static AIOPool trim_aio_pool = { > +static const AIOCBInfo trim_aiocb_info = { > .aiocb_size = sizeof(TrimAIOCB), > .cancel = trim_aio_cancel, > }; > @@ -360,7 +360,7 @@ BlockDriverAIOCB *ide_issue_trim(BlockDriverState *bs, > TrimAIOCB *iocb; > int i, j, ret; > > - iocb = qemu_aio_get(&trim_aio_pool, bs, cb, opaque); > + iocb = qemu_aio_get(&trim_aiocb_info, bs, cb, opaque); > iocb->bh = qemu_bh_new(ide_trim_bh_cb, iocb); > iocb->ret = 0; > > diff --git a/qemu-aio.h b/qemu-aio.h > index b29c509..3889fe9 100644 > --- a/qemu-aio.h > +++ b/qemu-aio.h > @@ -21,19 +21,19 @@ > typedef struct BlockDriverAIOCB BlockDriverAIOCB; > typedef void BlockDriverCompletionFunc(void *opaque, int ret); > > -typedef struct AIOPool { > +typedef struct AIOCBInfo { > void (*cancel)(BlockDriverAIOCB *acb); > size_t aiocb_size; > -} AIOPool; > +} AIOCBInfo; > > struct BlockDriverAIOCB { > - AIOPool *pool; > + const AIOCBInfo *aiocb_info; > BlockDriverState *bs; > BlockDriverCompletionFunc *cb; > void *opaque; > }; > > -void *qemu_aio_get(AIOPool *pool, BlockDriverState *bs, > +void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs, > BlockDriverCompletionFunc *cb, void *opaque); > void qemu_aio_release(void *p); > > diff --git a/thread-pool.c b/thread-pool.c > index 266f12f..894cde6 100644 > --- a/thread-pool.c > +++ b/thread-pool.c > @@ -206,7 +206,7 @@ static void thread_pool_cancel(BlockDriverAIOCB *acb) > qemu_mutex_unlock(&lock); > } > > -static AIOPool thread_pool_cb_pool = { > +static const AIOCBInfo thread_pool_aiocb_info = { > .aiocb_size = sizeof(ThreadPoolElement), > .cancel = thread_pool_cancel, > }; > @@ -216,7 +216,7 @@ BlockDriverAIOCB *thread_pool_submit_aio(ThreadPoolFunc *func, void *arg, > { > ThreadPoolElement *req; > > - req = qemu_aio_get(&thread_pool_cb_pool, NULL, cb, opaque); > + req = qemu_aio_get(&thread_pool_aiocb_info, NULL, cb, opaque); > req->func = func; > req->arg = arg; > req->state = THREAD_QUEUED; > Didn't really review it, but if it compiles... :) Paolo
diff --git a/block.c b/block.c index ea0f7d8..854ebd6 100644 --- a/block.c +++ b/block.c @@ -3521,7 +3521,7 @@ int bdrv_aio_multiwrite(BlockDriverState *bs, BlockRequest *reqs, int num_reqs) void bdrv_aio_cancel(BlockDriverAIOCB *acb) { - acb->pool->cancel(acb); + acb->aiocb_info->cancel(acb); } /* block I/O throttling */ @@ -3711,7 +3711,7 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB *blockacb) qemu_aio_release(acb); } -static AIOPool bdrv_em_aio_pool = { +static const AIOCBInfo bdrv_em_aiocb_info = { .aiocb_size = sizeof(BlockDriverAIOCBSync), .cancel = bdrv_aio_cancel_em, }; @@ -3740,7 +3740,7 @@ static BlockDriverAIOCB *bdrv_aio_rw_vector(BlockDriverState *bs, { BlockDriverAIOCBSync *acb; - acb = qemu_aio_get(&bdrv_em_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&bdrv_em_aiocb_info, bs, cb, opaque); acb->is_write = is_write; acb->qiov = qiov; acb->bounce = qemu_blockalign(bs, qiov->size); @@ -3785,7 +3785,7 @@ static void bdrv_aio_co_cancel_em(BlockDriverAIOCB *blockacb) qemu_aio_flush(); } -static AIOPool bdrv_em_co_aio_pool = { +static const AIOCBInfo bdrv_em_co_aiocb_info = { .aiocb_size = sizeof(BlockDriverAIOCBCoroutine), .cancel = bdrv_aio_co_cancel_em, }; @@ -3828,7 +3828,7 @@ static BlockDriverAIOCB *bdrv_co_aio_rw_vector(BlockDriverState *bs, Coroutine *co; BlockDriverAIOCBCoroutine *acb; - acb = qemu_aio_get(&bdrv_em_co_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&bdrv_em_co_aiocb_info, bs, cb, opaque); acb->req.sector = sector_num; acb->req.nb_sectors = nb_sectors; acb->req.qiov = qiov; @@ -3858,7 +3858,7 @@ BlockDriverAIOCB *bdrv_aio_flush(BlockDriverState *bs, Coroutine *co; BlockDriverAIOCBCoroutine *acb; - acb = qemu_aio_get(&bdrv_em_co_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&bdrv_em_co_aiocb_info, bs, cb, opaque); co = qemu_coroutine_create(bdrv_aio_flush_co_entry); qemu_coroutine_enter(co, acb); @@ -3884,7 +3884,7 @@ BlockDriverAIOCB *bdrv_aio_discard(BlockDriverState *bs, trace_bdrv_aio_discard(bs, sector_num, nb_sectors, opaque); - acb = qemu_aio_get(&bdrv_em_co_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&bdrv_em_co_aiocb_info, bs, cb, opaque); acb->req.sector = sector_num; acb->req.nb_sectors = nb_sectors; co = qemu_coroutine_create(bdrv_aio_discard_co_entry); @@ -3904,13 +3904,13 @@ void bdrv_init_with_whitelist(void) bdrv_init(); } -void *qemu_aio_get(AIOPool *pool, BlockDriverState *bs, +void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs, BlockDriverCompletionFunc *cb, void *opaque) { BlockDriverAIOCB *acb; - acb = g_slice_alloc(pool->aiocb_size); - acb->pool = pool; + acb = g_slice_alloc(aiocb_info->aiocb_size); + acb->aiocb_info = aiocb_info; acb->bs = bs; acb->cb = cb; acb->opaque = opaque; @@ -3920,7 +3920,7 @@ void *qemu_aio_get(AIOPool *pool, BlockDriverState *bs, void qemu_aio_release(void *p) { BlockDriverAIOCB *acb = p; - g_slice_free1(acb->pool->aiocb_size, acb); + g_slice_free1(acb->aiocb_info->aiocb_size, acb); } /**************************************************************/ diff --git a/block/blkdebug.c b/block/blkdebug.c index 1206d52..d61ece8 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -41,7 +41,7 @@ typedef struct BlkdebugAIOCB { static void blkdebug_aio_cancel(BlockDriverAIOCB *blockacb); -static AIOPool blkdebug_aio_pool = { +static const AIOCBInfo blkdebug_aiocb_info = { .aiocb_size = sizeof(BlkdebugAIOCB), .cancel = blkdebug_aio_cancel, }; @@ -335,7 +335,7 @@ static BlockDriverAIOCB *inject_error(BlockDriverState *bs, return NULL; } - acb = qemu_aio_get(&blkdebug_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&blkdebug_aiocb_info, bs, cb, opaque); acb->ret = -error; bh = qemu_bh_new(error_callback_bh, acb); diff --git a/block/blkverify.c b/block/blkverify.c index 9d5f1ec..4beede7 100644 --- a/block/blkverify.c +++ b/block/blkverify.c @@ -48,7 +48,7 @@ static void blkverify_aio_cancel(BlockDriverAIOCB *blockacb) } } -static AIOPool blkverify_aio_pool = { +static const AIOCBInfo blkverify_aiocb_info = { .aiocb_size = sizeof(BlkverifyAIOCB), .cancel = blkverify_aio_cancel, }; @@ -233,7 +233,7 @@ static BlkverifyAIOCB *blkverify_aio_get(BlockDriverState *bs, bool is_write, BlockDriverCompletionFunc *cb, void *opaque) { - BlkverifyAIOCB *acb = qemu_aio_get(&blkverify_aio_pool, bs, cb, opaque); + BlkverifyAIOCB *acb = qemu_aio_get(&blkverify_aiocb_info, bs, cb, opaque); acb->bh = NULL; acb->is_write = is_write; diff --git a/block/curl.c b/block/curl.c index c1074cd..1179484 100644 --- a/block/curl.c +++ b/block/curl.c @@ -438,7 +438,7 @@ static void curl_aio_cancel(BlockDriverAIOCB *blockacb) // Do we have to implement canceling? Seems to work without... } -static AIOPool curl_aio_pool = { +static const AIOCBInfo curl_aiocb_info = { .aiocb_size = sizeof(CURLAIOCB), .cancel = curl_aio_cancel, }; @@ -505,7 +505,7 @@ static BlockDriverAIOCB *curl_aio_readv(BlockDriverState *bs, { CURLAIOCB *acb; - acb = qemu_aio_get(&curl_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&curl_aiocb_info, bs, cb, opaque); acb->qiov = qiov; acb->sector_num = sector_num; diff --git a/block/gluster.c b/block/gluster.c index 3588d73..1c90174 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -388,7 +388,7 @@ static void qemu_gluster_aio_cancel(BlockDriverAIOCB *blockacb) } } -static AIOPool gluster_aio_pool = { +static const AIOCBInfo gluster_aiocb_info = { .aiocb_size = sizeof(GlusterAIOCB), .cancel = qemu_gluster_aio_cancel, }; @@ -439,7 +439,7 @@ static BlockDriverAIOCB *qemu_gluster_aio_rw(BlockDriverState *bs, size = nb_sectors * BDRV_SECTOR_SIZE; s->qemu_aio_count++; - acb = qemu_aio_get(&gluster_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&gluster_aiocb_info, bs, cb, opaque); acb->size = size; acb->ret = 0; acb->finished = NULL; @@ -484,7 +484,7 @@ static BlockDriverAIOCB *qemu_gluster_aio_flush(BlockDriverState *bs, GlusterAIOCB *acb; BDRVGlusterState *s = bs->opaque; - acb = qemu_aio_get(&gluster_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&gluster_aiocb_info, bs, cb, opaque); acb->size = 0; acb->ret = 0; acb->finished = NULL; diff --git a/block/iscsi.c b/block/iscsi.c index d0b1a10..a6a819d 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -133,7 +133,7 @@ iscsi_aio_cancel(BlockDriverAIOCB *blockacb) } } -static AIOPool iscsi_aio_pool = { +static const AIOCBInfo iscsi_aiocb_info = { .aiocb_size = sizeof(IscsiAIOCB), .cancel = iscsi_aio_cancel, }; @@ -234,7 +234,7 @@ iscsi_aio_writev(BlockDriverState *bs, int64_t sector_num, uint64_t lba; struct iscsi_data data; - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); trace_iscsi_aio_writev(iscsi, sector_num, nb_sectors, opaque, acb); acb->iscsilun = iscsilun; @@ -325,7 +325,7 @@ iscsi_aio_readv(BlockDriverState *bs, int64_t sector_num, qemu_read_size = BDRV_SECTOR_SIZE * (size_t)nb_sectors; - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); trace_iscsi_aio_readv(iscsi, sector_num, nb_sectors, opaque, acb); acb->iscsilun = iscsilun; @@ -430,7 +430,7 @@ iscsi_aio_flush(BlockDriverState *bs, struct iscsi_context *iscsi = iscsilun->iscsi; IscsiAIOCB *acb; - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); acb->iscsilun = iscsilun; acb->canceled = 0; @@ -483,7 +483,7 @@ iscsi_aio_discard(BlockDriverState *bs, IscsiAIOCB *acb; struct unmap_list list[1]; - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); acb->iscsilun = iscsilun; acb->canceled = 0; @@ -558,7 +558,7 @@ static BlockDriverAIOCB *iscsi_aio_ioctl(BlockDriverState *bs, assert(req == SG_IO); - acb = qemu_aio_get(&iscsi_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&iscsi_aiocb_info, bs, cb, opaque); acb->iscsilun = iscsilun; acb->canceled = 0; diff --git a/block/linux-aio.c b/block/linux-aio.c index 6ca984d..91ef863 100644 --- a/block/linux-aio.c +++ b/block/linux-aio.c @@ -140,7 +140,7 @@ static void laio_cancel(BlockDriverAIOCB *blockacb) } } -static AIOPool laio_pool = { +static const AIOCBInfo laio_aiocb_info = { .aiocb_size = sizeof(struct qemu_laiocb), .cancel = laio_cancel, }; @@ -154,7 +154,7 @@ BlockDriverAIOCB *laio_submit(BlockDriverState *bs, void *aio_ctx, int fd, struct iocb *iocbs; off_t offset = sector_num * 512; - laiocb = qemu_aio_get(&laio_pool, bs, cb, opaque); + laiocb = qemu_aio_get(&laio_aiocb_info, bs, cb, opaque); laiocb->nbytes = nb_sectors * 512; laiocb->ctx = s; laiocb->ret = -EINPROGRESS; diff --git a/block/qed.c b/block/qed.c index 6c182ca..0b5374a 100644 --- a/block/qed.c +++ b/block/qed.c @@ -30,7 +30,7 @@ static void qed_aio_cancel(BlockDriverAIOCB *blockacb) } } -static AIOPool qed_aio_pool = { +static const AIOCBInfo qed_aiocb_info = { .aiocb_size = sizeof(QEDAIOCB), .cancel = qed_aio_cancel, }; @@ -1311,7 +1311,7 @@ static BlockDriverAIOCB *qed_aio_setup(BlockDriverState *bs, BlockDriverCompletionFunc *cb, void *opaque, int flags) { - QEDAIOCB *acb = qemu_aio_get(&qed_aio_pool, bs, cb, opaque); + QEDAIOCB *acb = qemu_aio_get(&qed_aiocb_info, bs, cb, opaque); trace_qed_aio_setup(bs->opaque, acb, sector_num, nb_sectors, opaque, flags); diff --git a/block/rbd.c b/block/rbd.c index 015a9db..0aaacaf 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -570,7 +570,7 @@ static void qemu_rbd_aio_cancel(BlockDriverAIOCB *blockacb) acb->cancelled = 1; } -static AIOPool rbd_aio_pool = { +static const AIOCBInfo rbd_aiocb_info = { .aiocb_size = sizeof(RBDAIOCB), .cancel = qemu_rbd_aio_cancel, }; @@ -672,7 +672,7 @@ static BlockDriverAIOCB *rbd_start_aio(BlockDriverState *bs, BDRVRBDState *s = bs->opaque; - acb = qemu_aio_get(&rbd_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&rbd_aiocb_info, bs, cb, opaque); acb->cmd = cmd; acb->qiov = qiov; if (cmd == RBD_AIO_DISCARD) { diff --git a/block/sheepdog.c b/block/sheepdog.c index 9306174..a48f58c 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -420,7 +420,7 @@ static void sd_aio_cancel(BlockDriverAIOCB *blockacb) acb->canceled = true; } -static AIOPool sd_aio_pool = { +static const AIOCBInfo sd_aiocb_info = { .aiocb_size = sizeof(SheepdogAIOCB), .cancel = sd_aio_cancel, }; @@ -431,7 +431,7 @@ static SheepdogAIOCB *sd_aio_setup(BlockDriverState *bs, QEMUIOVector *qiov, { SheepdogAIOCB *acb; - acb = qemu_aio_get(&sd_aio_pool, bs, cb, opaque); + acb = qemu_aio_get(&sd_aiocb_info, bs, cb, opaque); acb->qiov = qiov; diff --git a/block/win32-aio.c b/block/win32-aio.c index c34dc73..444c228 100644 --- a/block/win32-aio.c +++ b/block/win32-aio.c @@ -131,7 +131,7 @@ static void win32_aio_cancel(BlockDriverAIOCB *blockacb) } } -static AIOPool win32_aio_pool = { +static const AIOCBInfo win32_aiocb_info = { .aiocb_size = sizeof(QEMUWin32AIOCB), .cancel = win32_aio_cancel, }; @@ -145,7 +145,7 @@ BlockDriverAIOCB *win32_aio_submit(BlockDriverState *bs, uint64_t offset = sector_num * 512; DWORD rc; - waiocb = qemu_aio_get(&win32_aio_pool, bs, cb, opaque); + waiocb = qemu_aio_get(&win32_aiocb_info, bs, cb, opaque); waiocb->nbytes = nb_sectors * 512; waiocb->qiov = qiov; waiocb->is_read = (type == QEMU_AIO_READ); diff --git a/dma-helpers.c b/dma-helpers.c index 0c18e9e..4f5fb64 100644 --- a/dma-helpers.c +++ b/dma-helpers.c @@ -195,7 +195,7 @@ static void dma_aio_cancel(BlockDriverAIOCB *acb) dma_complete(dbs, 0); } -static AIOPool dma_aio_pool = { +static const AIOCBInfo dma_aiocb_info = { .aiocb_size = sizeof(DMAAIOCB), .cancel = dma_aio_cancel, }; @@ -205,7 +205,7 @@ BlockDriverAIOCB *dma_bdrv_io( DMAIOFunc *io_func, BlockDriverCompletionFunc *cb, void *opaque, DMADirection dir) { - DMAAIOCB *dbs = qemu_aio_get(&dma_aio_pool, bs, cb, opaque); + DMAAIOCB *dbs = qemu_aio_get(&dma_aiocb_info, bs, cb, opaque); trace_dma_bdrv_io(dbs, bs, sector_num, (dir == DMA_DIRECTION_TO_DEVICE)); diff --git a/hw/ide/core.c b/hw/ide/core.c index d683a8c..7d6b0fa 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -336,7 +336,7 @@ static void trim_aio_cancel(BlockDriverAIOCB *acb) qemu_aio_release(iocb); } -static AIOPool trim_aio_pool = { +static const AIOCBInfo trim_aiocb_info = { .aiocb_size = sizeof(TrimAIOCB), .cancel = trim_aio_cancel, }; @@ -360,7 +360,7 @@ BlockDriverAIOCB *ide_issue_trim(BlockDriverState *bs, TrimAIOCB *iocb; int i, j, ret; - iocb = qemu_aio_get(&trim_aio_pool, bs, cb, opaque); + iocb = qemu_aio_get(&trim_aiocb_info, bs, cb, opaque); iocb->bh = qemu_bh_new(ide_trim_bh_cb, iocb); iocb->ret = 0; diff --git a/qemu-aio.h b/qemu-aio.h index b29c509..3889fe9 100644 --- a/qemu-aio.h +++ b/qemu-aio.h @@ -21,19 +21,19 @@ typedef struct BlockDriverAIOCB BlockDriverAIOCB; typedef void BlockDriverCompletionFunc(void *opaque, int ret); -typedef struct AIOPool { +typedef struct AIOCBInfo { void (*cancel)(BlockDriverAIOCB *acb); size_t aiocb_size; -} AIOPool; +} AIOCBInfo; struct BlockDriverAIOCB { - AIOPool *pool; + const AIOCBInfo *aiocb_info; BlockDriverState *bs; BlockDriverCompletionFunc *cb; void *opaque; }; -void *qemu_aio_get(AIOPool *pool, BlockDriverState *bs, +void *qemu_aio_get(const AIOCBInfo *aiocb_info, BlockDriverState *bs, BlockDriverCompletionFunc *cb, void *opaque); void qemu_aio_release(void *p); diff --git a/thread-pool.c b/thread-pool.c index 266f12f..894cde6 100644 --- a/thread-pool.c +++ b/thread-pool.c @@ -206,7 +206,7 @@ static void thread_pool_cancel(BlockDriverAIOCB *acb) qemu_mutex_unlock(&lock); } -static AIOPool thread_pool_cb_pool = { +static const AIOCBInfo thread_pool_aiocb_info = { .aiocb_size = sizeof(ThreadPoolElement), .cancel = thread_pool_cancel, }; @@ -216,7 +216,7 @@ BlockDriverAIOCB *thread_pool_submit_aio(ThreadPoolFunc *func, void *arg, { ThreadPoolElement *req; - req = qemu_aio_get(&thread_pool_cb_pool, NULL, cb, opaque); + req = qemu_aio_get(&thread_pool_aiocb_info, NULL, cb, opaque); req->func = func; req->arg = arg; req->state = THREAD_QUEUED;
Now that AIOPool no longer keeps a freelist, it isn't really a "pool" anymore. Rename it to AIOCBInfo and make it const since it no longer needs to be modified. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- block.c | 22 +++++++++++----------- block/blkdebug.c | 4 ++-- block/blkverify.c | 4 ++-- block/curl.c | 4 ++-- block/gluster.c | 6 +++--- block/iscsi.c | 12 ++++++------ block/linux-aio.c | 4 ++-- block/qed.c | 4 ++-- block/rbd.c | 4 ++-- block/sheepdog.c | 4 ++-- block/win32-aio.c | 4 ++-- dma-helpers.c | 4 ++-- hw/ide/core.c | 4 ++-- qemu-aio.h | 8 ++++---- thread-pool.c | 4 ++-- 15 files changed, 46 insertions(+), 46 deletions(-)