Revision c16b5a2c block/qcow2.c
b/block/qcow2.c | ||
---|---|---|
1246 | 1246 |
QCowL2Meta l2meta; |
1247 | 1247 |
} QCowAIOCB; |
1248 | 1248 |
|
1249 |
static void qcow_aio_cancel(BlockDriverAIOCB *blockacb) |
|
1250 |
{ |
|
1251 |
QCowAIOCB *acb = (QCowAIOCB *)blockacb; |
|
1252 |
if (acb->hd_aiocb) |
|
1253 |
bdrv_aio_cancel(acb->hd_aiocb); |
|
1254 |
qemu_aio_release(acb); |
|
1255 |
} |
|
1256 |
|
|
1257 |
static AIOPool qcow_aio_pool = { |
|
1258 |
.aiocb_size = sizeof(QCowAIOCB), |
|
1259 |
.cancel = qcow_aio_cancel, |
|
1260 |
}; |
|
1261 |
|
|
1249 | 1262 |
static void qcow_aio_read_cb(void *opaque, int ret); |
1250 | 1263 |
static void qcow_aio_read_bh(void *opaque) |
1251 | 1264 |
{ |
... | ... | |
1375 | 1388 |
{ |
1376 | 1389 |
QCowAIOCB *acb; |
1377 | 1390 |
|
1378 |
acb = qemu_aio_get(bs, cb, opaque); |
|
1391 |
acb = qemu_aio_get(&qcow_aio_pool, bs, cb, opaque);
|
|
1379 | 1392 |
if (!acb) |
1380 | 1393 |
return NULL; |
1381 | 1394 |
acb->hd_aiocb = NULL; |
... | ... | |
1498 | 1511 |
return &acb->common; |
1499 | 1512 |
} |
1500 | 1513 |
|
1501 |
static void qcow_aio_cancel(BlockDriverAIOCB *blockacb) |
|
1502 |
{ |
|
1503 |
QCowAIOCB *acb = (QCowAIOCB *)blockacb; |
|
1504 |
if (acb->hd_aiocb) |
|
1505 |
bdrv_aio_cancel(acb->hd_aiocb); |
|
1506 |
qemu_aio_release(acb); |
|
1507 |
} |
|
1508 |
|
|
1509 | 1514 |
static void qcow_close(BlockDriverState *bs) |
1510 | 1515 |
{ |
1511 | 1516 |
BDRVQcowState *s = bs->opaque; |
... | ... | |
2998 | 3003 |
|
2999 | 3004 |
.bdrv_aio_readv = qcow_aio_readv, |
3000 | 3005 |
.bdrv_aio_writev = qcow_aio_writev, |
3001 |
.bdrv_aio_cancel = qcow_aio_cancel, |
|
3002 |
.aiocb_size = sizeof(QCowAIOCB), |
|
3003 | 3006 |
.bdrv_write_compressed = qcow_write_compressed, |
3004 | 3007 |
|
3005 | 3008 |
.bdrv_snapshot_create = qcow_snapshot_create, |
Also available in: Unified diff