aboutsummaryrefslogtreecommitdiff
path: root/hw/block/xen_disk.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2014-02-24 16:12:55 +0000
committerPeter Maydell <peter.maydell@linaro.org>2014-02-24 16:12:55 +0000
commitc58e291591dbc1c846fa152d4792554803405ebb (patch)
tree7ecea8fea0dda60ba8b702abd5d1d35dcca0ef5c /hw/block/xen_disk.c
parent6dedf0522c3fdeb10fe27d4aef35f4c57f3d0806 (diff)
parent58da5b1e01a586eb5a52ba3eec342d6828269839 (diff)
Merge remote-tracking branch 'remotes/sstabellini/xen-140220' into staging
* remotes/sstabellini/xen-140220: xen_disk: fix io accounting Call pci_piix3_xen_ide_unplug from unplug_disks Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/block/xen_disk.c')
-rw-r--r--hw/block/xen_disk.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c
index 098f6c62c7..7f0f14ae52 100644
--- a/hw/block/xen_disk.c
+++ b/hw/block/xen_disk.c
@@ -483,7 +483,18 @@ static void qemu_aio_complete(void *opaque, int ret)
ioreq->status = ioreq->aio_errors ? BLKIF_RSP_ERROR : BLKIF_RSP_OKAY;
ioreq_unmap(ioreq);
ioreq_finish(ioreq);
- bdrv_acct_done(ioreq->blkdev->bs, &ioreq->acct);
+ switch (ioreq->req.operation) {
+ case BLKIF_OP_WRITE:
+ case BLKIF_OP_FLUSH_DISKCACHE:
+ if (!ioreq->req.nr_segments) {
+ break;
+ }
+ case BLKIF_OP_READ:
+ bdrv_acct_done(ioreq->blkdev->bs, &ioreq->acct);
+ break;
+ default:
+ break;
+ }
qemu_bh_schedule(ioreq->blkdev->bh);
}