Revision f1b52868
b/hw/virtio-blk.c | ||
---|---|---|
384 | 384 |
{ |
385 | 385 |
VirtIOBlock *s = opaque; |
386 | 386 |
VirtIOBlockReq *req = s->rq; |
387 |
MultiReqBuffer mrb = { |
|
388 |
.num_writes = 0, |
|
389 |
.old_bs = NULL, |
|
390 |
}; |
|
387 | 391 |
|
388 | 392 |
qemu_bh_delete(s->bh); |
389 | 393 |
s->bh = NULL; |
... | ... | |
391 | 395 |
s->rq = NULL; |
392 | 396 |
|
393 | 397 |
while (req) { |
394 |
bdrv_aio_writev(req->dev->bs, req->out->sector, &req->qiov, |
|
395 |
req->qiov.size / 512, virtio_blk_rw_complete, req); |
|
398 |
virtio_blk_handle_request(req, &mrb); |
|
396 | 399 |
req = req->next; |
397 | 400 |
} |
401 |
|
|
402 |
if (mrb.num_writes > 0) { |
|
403 |
do_multiwrite(mrb.old_bs, mrb.blkreq, mrb.num_writes); |
|
404 |
} |
|
398 | 405 |
} |
399 | 406 |
|
400 | 407 |
static void virtio_blk_dma_restart_cb(void *opaque, int running, int reason) |
Also available in: Unified diff