Commit 90765429aab64478e4dd9de3bbb21e5eafb5ead5

Authored by bellard
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
@@ -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;