From: "Marc-André Lureau" <mlureau@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: haifeng lin <haifeng.lin@huawei.com>,
thibaut collet <thibaut.collet@6wind.com>,
jasowang@redhat.com, qemu-devel@nongnu.org, pbonzini@redhat.com,
marcandre lureau <marcandre.lureau@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 11/21] vhost: only use shared log if in use by backend
Date: Tue, 29 Sep 2015 11:26:47 -0400 (EDT) [thread overview]
Message-ID: <331996466.19918817.1443540407897.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <20150929175849-mutt-send-email-mst@redhat.com>
Hi
----- Original Message -----
> On Thu, Sep 24, 2015 at 06:22:11PM +0200, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > Do not allocate a shared log if the backend doesn't support it.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> So squash this in the previous patch introducing the shared log?
> This split makes review harder, not easier.
Ok, I'll try to reorder things
>
> > ---
> > hw/virtio/vhost-user.c | 9 +++++++++
> > hw/virtio/vhost.c | 15 ++++++++++-----
> > include/hw/virtio/vhost-backend.h | 4 ++++
> > 3 files changed, 23 insertions(+), 5 deletions(-)
> >
> > diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
> > index 41e0364..455caba 100644
> > --- a/hw/virtio/vhost-user.c
> > +++ b/hw/virtio/vhost-user.c
> > @@ -553,6 +553,14 @@ static int vhost_user_get_vq_index(struct vhost_dev
> > *dev, int idx)
> > return idx;
> > }
> >
> > +static bool vhost_user_requires_shm_log(struct vhost_dev *dev)
> > +{
> > + assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_USER);
> > +
> > + return virtio_has_feature(dev->protocol_features,
> > + VHOST_USER_PROTOCOL_F_LOG_SHMFD);
> > +}
> > +
> > const VhostOps user_ops = {
> > .backend_type = VHOST_BACKEND_TYPE_USER,
> > .vhost_backend_init = vhost_user_init,
> > @@ -573,4 +581,5 @@ const VhostOps user_ops = {
> > .vhost_reset_device = vhost_user_reset_device,
> > .vhost_get_vq_index = vhost_user_get_vq_index,
> > .vhost_set_vring_enable = vhost_user_set_vring_enable,
> > + .vhost_requires_shm_log = vhost_user_requires_shm_log,
> > };
> > diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> > index d9f2131..ec27c7b 100644
> > --- a/hw/virtio/vhost.c
> > +++ b/hw/virtio/vhost.c
> > @@ -357,10 +357,15 @@ static void vhost_log_put(struct vhost_dev *dev, bool
> > sync)
> > }
> > }
> >
> > -static inline void vhost_dev_log_resize(struct vhost_dev* dev, uint64_t
> > size)
> > +static bool vhost_dev_log_is_shared(struct vhost_dev *dev)
> > {
> > - bool share = dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_USER;
> > - struct vhost_log *log = vhost_log_get(size, share);
> > + return dev->vhost_ops->vhost_requires_shm_log &&
> > + dev->vhost_ops->vhost_requires_shm_log(dev);
> > +}
> > +
> > +static inline void vhost_dev_log_resize(struct vhost_dev *dev, uint64_t
> > size)
> > +{
> > + struct vhost_log *log = vhost_log_get(size,
> > vhost_dev_log_is_shared(dev));
> > uint64_t log_base = (uintptr_t)log->log;
> > int r;
> >
> > @@ -1166,10 +1171,10 @@ int vhost_dev_start(struct vhost_dev *hdev,
> > VirtIODevice *vdev)
> >
> > if (hdev->log_enabled) {
> > uint64_t log_base;
> > - bool share = hdev->vhost_ops->backend_type ==
> > VHOST_BACKEND_TYPE_USER;
> >
> > hdev->log_size = vhost_get_log_size(hdev);
> > - hdev->log = vhost_log_get(hdev->log_size, share);
> > + hdev->log = vhost_log_get(hdev->log_size,
> > + vhost_dev_log_is_shared(hdev));
> > log_base = (uintptr_t)hdev->log->log;
> > r = hdev->vhost_ops->vhost_set_log_base(hdev,
> > hdev->log_size ? log_base
> > : 0,
> > diff --git a/include/hw/virtio/vhost-backend.h
> > b/include/hw/virtio/vhost-backend.h
> > index 868a78a..e07118c 100644
> > --- a/include/hw/virtio/vhost-backend.h
> > +++ b/include/hw/virtio/vhost-backend.h
> > @@ -11,6 +11,8 @@
> > #ifndef VHOST_BACKEND_H_
> > #define VHOST_BACKEND_H_
> >
> > +#include <stdbool.h>
> > +
> > typedef enum VhostBackendType {
> > VHOST_BACKEND_TYPE_NONE = 0,
> > VHOST_BACKEND_TYPE_KERNEL = 1,
> > @@ -64,6 +66,7 @@ typedef int (*vhost_reset_device_op)(struct vhost_dev
> > *dev);
> > typedef int (*vhost_get_vq_index_op)(struct vhost_dev *dev, int idx);
> > typedef int (*vhost_set_vring_enable_op)(struct vhost_dev *dev,
> > int enable);
> > +typedef bool (*vhost_requires_shm_log_op)(struct vhost_dev *dev);
> >
> > typedef struct VhostOps {
> > VhostBackendType backend_type;
> > @@ -90,6 +93,7 @@ typedef struct VhostOps {
> > vhost_reset_device_op vhost_reset_device;
> > vhost_get_vq_index_op vhost_get_vq_index;
> > vhost_set_vring_enable_op vhost_set_vring_enable;
> > + vhost_requires_shm_log_op vhost_requires_shm_log;
> > } VhostOps;
> >
> > extern const VhostOps user_ops;
> > --
> > 2.4.3
>
next prev parent reply other threads:[~2015-09-29 15:26 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-24 16:22 [Qemu-devel] [PATCH v5 00/21] vhost-user: add migration support marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 01/21] vhost-user: unit test for new messages marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 02/21] configure: probe for memfd marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 03/21] util: add linux-only memfd fallback marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 04/21] util: add memfd helpers marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 05/21] vhost: alloc shareable log marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 06/21] vhost: document log resizing marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 07/21] vhost: add vhost_set_log_base op marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 08/21] vhost-user: send log shm fd along with log_base marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 09/21] vhost-user: add a migration blocker marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 10/21] vhost: use a function for each call marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 11/21] vhost: only use shared log if in use by backend marcandre.lureau
2015-09-29 14:59 ` Michael S. Tsirkin
2015-09-29 15:26 ` Marc-André Lureau [this message]
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 12/21] vhost-user: document migration log marcandre.lureau
2015-09-24 16:38 ` Eric Blake
2015-09-24 16:41 ` Marc-André Lureau
2015-09-24 16:47 ` Eric Blake
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 13/21] net: add trace_vhost_user_event marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 14/21] vhost user: add support of live migration marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 15/21] vhost user: add rarp sending after live migration for legacy guest marcandre.lureau
2015-09-24 17:24 ` Thibaut Collet
2015-09-24 21:53 ` Marc-André Lureau
2015-09-27 13:12 ` Michael S. Tsirkin
2015-09-27 15:13 ` Marc-André Lureau
2015-09-27 15:49 ` Thibaut Collet
2015-09-27 18:04 ` Marc-André Lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 16/21] vhost-user-test: move wait_for_fds() out marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 17/21] vhost-user-test: remove useless static check marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 18/21] vhost-user-test: wrap server in TestServer struct marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 19/21] vhost-user-test: learn to tweak various qemu arguments marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 20/21] vhost-user-test: add live-migration test marcandre.lureau
2015-09-24 16:22 ` [Qemu-devel] [PATCH v5 21/21] vhost-user-test: check ownership during migration marcandre.lureau
2015-09-27 13:19 ` [Qemu-devel] [PATCH v5 00/21] vhost-user: add migration support Michael S. Tsirkin
2015-09-29 15:07 ` Michael S. Tsirkin
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=331996466.19918817.1443540407897.JavaMail.zimbra@redhat.com \
--to=mlureau@redhat.com \
--cc=haifeng.lin@huawei.com \
--cc=jasowang@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=thibaut.collet@6wind.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.