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