From: Paolo Bonzini <pbonzini@redhat.com>
To: Fam Zheng <famz@redhat.com>, qemu-devel@nongnu.org
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] virtio-blk: Allow config-wce in dataplane
Date: Tue, 13 May 2014 09:07:01 +0200 [thread overview]
Message-ID: <5371C495.7090809@redhat.com> (raw)
In-Reply-To: <1399947893-25843-1-git-send-email-famz@redhat.com>
Il 13/05/2014 04:24, Fam Zheng ha scritto:
> Dataplane now uses block layer. Protect bdrv_set_enable_write_cache with
> aio_context_acquire and aio_context_release, so we can enable config-wce
> to allow guest to modify the write cache online.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
>
> ---
> This applies on top of Stefan's "dataplane: use QEMU block layer"
> series.
>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
> hw/block/dataplane/virtio-blk.c | 6 ------
> hw/block/virtio-blk.c | 9 ++++++++-
> 2 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
> index 79fb612..46a6824 100644
> --- a/hw/block/dataplane/virtio-blk.c
> +++ b/hw/block/dataplane/virtio-blk.c
> @@ -332,12 +332,6 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
> return;
> }
>
> - if (blk->config_wce) {
> - error_setg(errp, "device is incompatible with x-data-plane, "
> - "use config-wce=off");
> - return;
> - }
> -
> /* If dataplane is (re-)enabled while the guest is running there could be
> * block jobs that can conflict.
> */
> diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
> index 8a568e5..a031e56 100644
> --- a/hw/block/virtio-blk.c
> +++ b/hw/block/virtio-blk.c
> @@ -26,6 +26,7 @@
> # include <scsi/sg.h>
> #endif
> #include "hw/virtio/virtio-bus.h"
> +#include "block/block_int.h"
You shouldn't need to include this header file. Apart from this, the
patch looks good.
Paolo
>
> typedef struct VirtIOBlockReq
> {
> @@ -523,7 +524,10 @@ static void virtio_blk_set_config(VirtIODevice *vdev, const uint8_t *config)
> struct virtio_blk_config blkcfg;
>
> memcpy(&blkcfg, config, sizeof(blkcfg));
> +
> + aio_context_acquire(bdrv_get_aio_context(s->bs));
> bdrv_set_enable_write_cache(s->bs, blkcfg.wce != 0);
> + aio_context_release(bdrv_get_aio_context(s->bs));
> }
>
> static uint32_t virtio_blk_get_features(VirtIODevice *vdev, uint32_t features)
> @@ -582,7 +586,10 @@ static void virtio_blk_set_status(VirtIODevice *vdev, uint8_t status)
> * s->bs would erroneously be placed in writethrough mode.
> */
> if (!(features & (1 << VIRTIO_BLK_F_CONFIG_WCE))) {
> - bdrv_set_enable_write_cache(s->bs, !!(features & (1 << VIRTIO_BLK_F_WCE)));
> + aio_context_acquire(bdrv_get_aio_context(s->bs));
> + bdrv_set_enable_write_cache(s->bs,
> + !!(features & (1 << VIRTIO_BLK_F_WCE)));
> + aio_context_release(bdrv_get_aio_context(s->bs));
> }
> }
>
>
next prev parent reply other threads:[~2014-05-13 7:07 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-13 2:24 [Qemu-devel] [PATCH] virtio-blk: Allow config-wce in dataplane Fam Zheng
2014-05-13 7:07 ` Paolo Bonzini [this message]
2014-05-13 7:13 ` Fam Zheng
2014-05-13 9:06 ` Paolo Bonzini
2014-05-13 14:10 ` Stefan Hajnoczi
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=5371C495.7090809@redhat.com \
--to=pbonzini@redhat.com \
--cc=famz@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.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.