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