Commit 90765429aab64478e4dd9de3bbb21e5eafb5ead5
1 parent
ce1a14dc
fixed aio emulation
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2099 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
7 additions
and
8 deletions
block.c
| ... | ... | @@ -35,6 +35,12 @@ |
| 35 | 35 | #define SECTOR_BITS 9 |
| 36 | 36 | #define SECTOR_SIZE (1 << SECTOR_BITS) |
| 37 | 37 | |
| 38 | +typedef struct BlockDriverAIOCBSync { | |
| 39 | + BlockDriverAIOCB common; | |
| 40 | + QEMUBH *bh; | |
| 41 | + int ret; | |
| 42 | +} BlockDriverAIOCBSync; | |
| 43 | + | |
| 38 | 44 | static BlockDriverAIOCB *bdrv_aio_read_em(BlockDriverState *bs, |
| 39 | 45 | int64_t sector_num, uint8_t *buf, int nb_sectors, |
| 40 | 46 | BlockDriverCompletionFunc *cb, void *opaque); |
| ... | ... | @@ -111,6 +117,7 @@ void bdrv_register(BlockDriver *bdrv) |
| 111 | 117 | bdrv->bdrv_aio_read = bdrv_aio_read_em; |
| 112 | 118 | bdrv->bdrv_aio_write = bdrv_aio_write_em; |
| 113 | 119 | bdrv->bdrv_aio_cancel = bdrv_aio_cancel_em; |
| 120 | + bdrv->aiocb_size = sizeof(BlockDriverAIOCBSync); | |
| 114 | 121 | } else if (!bdrv->bdrv_read && !bdrv->bdrv_pread) { |
| 115 | 122 | /* add synchronous IO emulation layer */ |
| 116 | 123 | bdrv->bdrv_read = bdrv_read_em; |
| ... | ... | @@ -1061,14 +1068,6 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB *acb) |
| 1061 | 1068 | { |
| 1062 | 1069 | } |
| 1063 | 1070 | #else |
| 1064 | -typedef struct BlockDriverAIOCBSync { | |
| 1065 | - BlockDriverAIOCB common; | |
| 1066 | - QEMUBH *bh; | |
| 1067 | - int ret; | |
| 1068 | -} BlockDriverAIOCBSync; | |
| 1069 | - | |
| 1070 | -static BlockDriverAIOCBSync *free_acb = NULL; | |
| 1071 | - | |
| 1072 | 1071 | static void bdrv_aio_bh_cb(void *opaque) |
| 1073 | 1072 | { |
| 1074 | 1073 | BlockDriverAIOCBSync *acb = opaque; | ... | ... |