Revision c16b5a2c block/qcow.c

b/block/qcow.c
503 503
    BlockDriverAIOCB *hd_aiocb;
504 504
} QCowAIOCB;
505 505

  
506
static void qcow_aio_cancel(BlockDriverAIOCB *blockacb)
507
{
508
    QCowAIOCB *acb = (QCowAIOCB *)blockacb;
509
    if (acb->hd_aiocb)
510
        bdrv_aio_cancel(acb->hd_aiocb);
511
    qemu_aio_release(acb);
512
}
513

  
514
static AIOPool qcow_aio_pool = {
515
    .aiocb_size         = sizeof(QCowAIOCB),
516
    .cancel             = qcow_aio_cancel,
517
};
506 518

  
507 519
static QCowAIOCB *qcow_aio_setup(BlockDriverState *bs,
508 520
        int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
......
510 522
{
511 523
    QCowAIOCB *acb;
512 524

  
513
    acb = qemu_aio_get(bs, cb, opaque);
525
    acb = qemu_aio_get(&qcow_aio_pool, bs, cb, opaque);
514 526
    if (!acb)
515 527
        return NULL;
516 528
    acb->hd_aiocb = NULL;
......
720 732
    return &acb->common;
721 733
}
722 734

  
723
static void qcow_aio_cancel(BlockDriverAIOCB *blockacb)
724
{
725
    QCowAIOCB *acb = (QCowAIOCB *)blockacb;
726
    if (acb->hd_aiocb)
727
        bdrv_aio_cancel(acb->hd_aiocb);
728
    qemu_aio_release(acb);
729
}
730

  
731 735
static void qcow_close(BlockDriverState *bs)
732 736
{
733 737
    BDRVQcowState *s = bs->opaque;
......
924 928
    .bdrv_make_empty	= qcow_make_empty,
925 929
    .bdrv_aio_readv	= qcow_aio_readv,
926 930
    .bdrv_aio_writev	= qcow_aio_writev,
927
    .bdrv_aio_cancel	= qcow_aio_cancel,
928
    .aiocb_size		= sizeof(QCowAIOCB),
929 931
    .bdrv_write_compressed = qcow_write_compressed,
930 932
    .bdrv_get_info	= qcow_get_info,
931 933

  

Also available in: Unified diff