From: "Andreas Färber" <afaerber@suse.de>
To: Olaf Hering <olaf@aepfle.de>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, stefanha@redhat.com, stefano.stabellini@eu.citrix.com
Subject: Re: [Qemu-devel] [PATCH] xen_disk: fix io accounting
Date: Thu, 06 Feb 2014 19:02:02 +0100 [thread overview]
Message-ID: <52F3CE1A.8050709@suse.de> (raw)
In-Reply-To: <1391702153-19893-1-git-send-email-olaf@aepfle.de>
Am 06.02.2014 16:55, schrieb Olaf Hering:
> bdrv_acct_done was called unconditional. But in case the ioreq has no
> segments there is no matching bdrv_acct_start call. This could lead to
> bogus accounting values.
>
> Found by code inspection.
>
> Signed-off-by: Olaf Hering <olaf@aepfle.de>
> ---
> hw/block/xen_disk.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c
> index 098f6c6..7f0f14a 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;
> + }
This will need a /* fall through */ comment for static analysis tools.
Andreas
> + case BLKIF_OP_READ:
> + bdrv_acct_done(ioreq->blkdev->bs, &ioreq->acct);
> + break;
> + default:
> + break;
> + }
> qemu_bh_schedule(ioreq->blkdev->bh);
> }
>
>
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2014-02-06 18:02 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-06 15:55 [Qemu-devel] [PATCH] xen_disk: fix io accounting Olaf Hering
2014-02-06 18:02 ` Andreas Färber [this message]
2014-02-07 12:47 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52F3CE1A.8050709@suse.de \
--to=afaerber@suse.de \
--cc=kwolf@redhat.com \
--cc=olaf@aepfle.de \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=stefano.stabellini@eu.citrix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.