aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFeiran Zheng <famcool@gmail.com>2011-03-09 21:19:35 +0800
committerKevin Wolf <kwolf@redhat.com>2011-03-15 13:21:14 +0100
commit209bef3e014ba1613759575e2c10f0ef8d64eb84 (patch)
tree0de0ffc334bfa57ded7da2ccdfcd03f9eb581f7e
parent52f9a172b6db89ba1f4389883be805d65dd3ca8c (diff)
hw/xen_disk: aio_inflight not released in handling ioreq when nr_segments==0
In hw/xen_disk.c, async writing ioreq is leaked when ioreq->req.nr_segments==0, because `aio_inflight` flag is not released properly (skipped by misplaced "break"). Signed-off-by: Feiran Zheng <famcool@gmail.com> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r--hw/xen_disk.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/xen_disk.c b/hw/xen_disk.c
index ed9e5eb4d7..445bf03aa0 100644
--- a/hw/xen_disk.c
+++ b/hw/xen_disk.c
@@ -408,9 +408,9 @@ static int ioreq_runio_qemu_aio(struct ioreq *ioreq)
break;
case BLKIF_OP_WRITE:
case BLKIF_OP_WRITE_BARRIER:
- ioreq->aio_inflight++;
if (!ioreq->req.nr_segments)
break;
+ ioreq->aio_inflight++;
bdrv_aio_writev(blkdev->bs, ioreq->start / BLOCK_SIZE,
&ioreq->v, ioreq->v.size / BLOCK_SIZE,
qemu_aio_complete, ioreq);