• Home
  • Raw
  • Download

Lines Matching refs:dbs

56     DMAAIOCB *dbs = (DMAAIOCB *)opaque;  in reschedule_dma()  local
58 qemu_bh_delete(dbs->bh); in reschedule_dma()
59 dbs->bh = NULL; in reschedule_dma()
65 DMAAIOCB *dbs = (DMAAIOCB *)opaque; in continue_after_map_failure() local
67 dbs->bh = qemu_bh_new(reschedule_dma, dbs); in continue_after_map_failure()
68 qemu_bh_schedule(dbs->bh); in continue_after_map_failure()
71 static void dma_bdrv_unmap(DMAAIOCB *dbs) in dma_bdrv_unmap() argument
75 for (i = 0; i < dbs->iov.niov; ++i) { in dma_bdrv_unmap()
76 cpu_physical_memory_unmap(dbs->iov.iov[i].iov_base, in dma_bdrv_unmap()
77 dbs->iov.iov[i].iov_len, !dbs->is_write, in dma_bdrv_unmap()
78 dbs->iov.iov[i].iov_len); in dma_bdrv_unmap()
84 DMAAIOCB *dbs = (DMAAIOCB *)opaque; in dma_bdrv_cb() local
88 dbs->acb = NULL; in dma_bdrv_cb()
89 dbs->sector_num += dbs->iov.size / 512; in dma_bdrv_cb()
90 dma_bdrv_unmap(dbs); in dma_bdrv_cb()
91 qemu_iovec_reset(&dbs->iov); in dma_bdrv_cb()
93 if (dbs->sg_cur_index == dbs->sg->nsg || ret < 0) { in dma_bdrv_cb()
94 dbs->common.cb(dbs->common.opaque, ret); in dma_bdrv_cb()
95 qemu_iovec_destroy(&dbs->iov); in dma_bdrv_cb()
96 qemu_aio_release(dbs); in dma_bdrv_cb()
100 while (dbs->sg_cur_index < dbs->sg->nsg) { in dma_bdrv_cb()
101 cur_addr = dbs->sg->sg[dbs->sg_cur_index].base + dbs->sg_cur_byte; in dma_bdrv_cb()
102 cur_len = dbs->sg->sg[dbs->sg_cur_index].len - dbs->sg_cur_byte; in dma_bdrv_cb()
103 mem = cpu_physical_memory_map(cur_addr, &cur_len, !dbs->is_write); in dma_bdrv_cb()
106 qemu_iovec_add(&dbs->iov, mem, cur_len); in dma_bdrv_cb()
107 dbs->sg_cur_byte += cur_len; in dma_bdrv_cb()
108 if (dbs->sg_cur_byte == dbs->sg->sg[dbs->sg_cur_index].len) { in dma_bdrv_cb()
109 dbs->sg_cur_byte = 0; in dma_bdrv_cb()
110 ++dbs->sg_cur_index; in dma_bdrv_cb()
114 if (dbs->iov.size == 0) { in dma_bdrv_cb()
115 cpu_register_map_client(dbs, continue_after_map_failure); in dma_bdrv_cb()
119 if (dbs->is_write) { in dma_bdrv_cb()
120 dbs->acb = bdrv_aio_writev(dbs->bs, dbs->sector_num, &dbs->iov, in dma_bdrv_cb()
121 dbs->iov.size / 512, dma_bdrv_cb, dbs); in dma_bdrv_cb()
123 dbs->acb = bdrv_aio_readv(dbs->bs, dbs->sector_num, &dbs->iov, in dma_bdrv_cb()
124 dbs->iov.size / 512, dma_bdrv_cb, dbs); in dma_bdrv_cb()
126 if (!dbs->acb) { in dma_bdrv_cb()
127 dma_bdrv_unmap(dbs); in dma_bdrv_cb()
128 qemu_iovec_destroy(&dbs->iov); in dma_bdrv_cb()
135 DMAAIOCB *dbs = container_of(acb, DMAAIOCB, common); in dma_aio_cancel() local
137 if (dbs->acb) { in dma_aio_cancel()
138 bdrv_aio_cancel(dbs->acb); in dma_aio_cancel()
152 DMAAIOCB *dbs = qemu_aio_get(&dma_aio_pool, bs, cb, opaque); in dma_bdrv_io() local
154 dbs->acb = NULL; in dma_bdrv_io()
155 dbs->bs = bs; in dma_bdrv_io()
156 dbs->sg = sg; in dma_bdrv_io()
157 dbs->sector_num = sector_num; in dma_bdrv_io()
158 dbs->sg_cur_index = 0; in dma_bdrv_io()
159 dbs->sg_cur_byte = 0; in dma_bdrv_io()
160 dbs->is_write = is_write; in dma_bdrv_io()
161 dbs->bh = NULL; in dma_bdrv_io()
162 qemu_iovec_init(&dbs->iov, sg->nsg); in dma_bdrv_io()
163 dma_bdrv_cb(dbs, 0); in dma_bdrv_io()
164 if (!dbs->acb) { in dma_bdrv_io()
165 qemu_aio_release(dbs); in dma_bdrv_io()
168 return &dbs->common; in dma_bdrv_io()