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,6 +35,12 @@ | ||
| 35 | #define SECTOR_BITS 9 | 35 | #define SECTOR_BITS 9 |
| 36 | #define SECTOR_SIZE (1 << SECTOR_BITS) | 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 | static BlockDriverAIOCB *bdrv_aio_read_em(BlockDriverState *bs, | 44 | static BlockDriverAIOCB *bdrv_aio_read_em(BlockDriverState *bs, |
| 39 | int64_t sector_num, uint8_t *buf, int nb_sectors, | 45 | int64_t sector_num, uint8_t *buf, int nb_sectors, |
| 40 | BlockDriverCompletionFunc *cb, void *opaque); | 46 | BlockDriverCompletionFunc *cb, void *opaque); |
| @@ -111,6 +117,7 @@ void bdrv_register(BlockDriver *bdrv) | @@ -111,6 +117,7 @@ void bdrv_register(BlockDriver *bdrv) | ||
| 111 | bdrv->bdrv_aio_read = bdrv_aio_read_em; | 117 | bdrv->bdrv_aio_read = bdrv_aio_read_em; |
| 112 | bdrv->bdrv_aio_write = bdrv_aio_write_em; | 118 | bdrv->bdrv_aio_write = bdrv_aio_write_em; |
| 113 | bdrv->bdrv_aio_cancel = bdrv_aio_cancel_em; | 119 | bdrv->bdrv_aio_cancel = bdrv_aio_cancel_em; |
| 120 | + bdrv->aiocb_size = sizeof(BlockDriverAIOCBSync); | ||
| 114 | } else if (!bdrv->bdrv_read && !bdrv->bdrv_pread) { | 121 | } else if (!bdrv->bdrv_read && !bdrv->bdrv_pread) { |
| 115 | /* add synchronous IO emulation layer */ | 122 | /* add synchronous IO emulation layer */ |
| 116 | bdrv->bdrv_read = bdrv_read_em; | 123 | bdrv->bdrv_read = bdrv_read_em; |
| @@ -1061,14 +1068,6 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB *acb) | @@ -1061,14 +1068,6 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB *acb) | ||
| 1061 | { | 1068 | { |
| 1062 | } | 1069 | } |
| 1063 | #else | 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 | static void bdrv_aio_bh_cb(void *opaque) | 1071 | static void bdrv_aio_bh_cb(void *opaque) |
| 1073 | { | 1072 | { |
| 1074 | BlockDriverAIOCBSync *acb = opaque; | 1073 | BlockDriverAIOCBSync *acb = opaque; |