From: Greg Kurz <groug@kaod.org>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: aneesh.kumar@linux.vnet.ibm.com, qemu-devel@nongnu.org,
xen-devel@lists.xensource.com, anthony.perard@citrix.com,
wei.liu2@citrix.com
Subject: Re: [Qemu-devel] [PATCH 2/4] 9pfs: introduce transport specific callbacks
Date: Thu, 24 Nov 2016 09:31:52 +0100 [thread overview]
Message-ID: <20161124093152.5afff15c@bahia> (raw)
In-Reply-To: <1479764372-29470-2-git-send-email-sstabellini@kernel.org>
On Mon, 21 Nov 2016 13:39:30 -0800
Stefano Stabellini <sstabellini@kernel.org> wrote:
> Don't call virtio functions from 9pfs generic code, use generic function
> callbacks instead.
>
> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
Just a couple of indentation and line over 80 characters nits. I'll fix them
before pushing to 9p-next.
Reviewed-by: Greg Kurz <groug@kaod.org>
> hw/9pfs/9p.c | 8 ++++----
> hw/9pfs/9p.h | 18 ++++++++++++++++++
> hw/9pfs/virtio-9p-device.c | 18 ++++++++++++++----
> hw/9pfs/virtio-9p.h | 9 ---------
> 4 files changed, 36 insertions(+), 17 deletions(-)
>
> diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
> index 05e950f..5a20a13 100644
> --- a/hw/9pfs/9p.c
> +++ b/hw/9pfs/9p.c
> @@ -47,7 +47,7 @@ ssize_t pdu_marshal(V9fsPDU *pdu, size_t offset, const char *fmt, ...)
> va_list ap;
>
> va_start(ap, fmt);
> - ret = virtio_pdu_vmarshal(pdu, offset, fmt, ap);
> + ret = pdu->s->transport->pdu_vmarshal(pdu, offset, fmt, ap);
> va_end(ap);
>
> return ret;
> @@ -59,7 +59,7 @@ ssize_t pdu_unmarshal(V9fsPDU *pdu, size_t offset, const char *fmt, ...)
> va_list ap;
>
> va_start(ap, fmt);
> - ret = virtio_pdu_vunmarshal(pdu, offset, fmt, ap);
> + ret = pdu->s->transport->pdu_vunmarshal(pdu, offset, fmt, ap);
> va_end(ap);
>
> return ret;
> @@ -67,7 +67,7 @@ ssize_t pdu_unmarshal(V9fsPDU *pdu, size_t offset, const char *fmt, ...)
>
> static void pdu_push_and_notify(V9fsPDU *pdu)
> {
> - virtio_9p_push_and_notify(pdu);
> + pdu->s->transport->push_and_notify(pdu);
> }
>
> static int omode_to_uflags(int8_t mode)
> @@ -1751,7 +1751,7 @@ static void v9fs_init_qiov_from_pdu(QEMUIOVector *qiov, V9fsPDU *pdu,
> struct iovec *iov;
> unsigned int niov;
>
> - virtio_init_iov_from_pdu(pdu, &iov, &niov, is_write);
> + pdu->s->transport->init_iov_from_pdu(pdu, &iov, &niov, is_write);
>
> qemu_iovec_init_external(&elem, iov, niov);
> qemu_iovec_init(qiov, niov);
> diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h
> index 07cee01..ab398d0 100644
> --- a/hw/9pfs/9p.h
> +++ b/hw/9pfs/9p.h
> @@ -230,6 +230,7 @@ typedef struct V9fsState
> enum p9_proto_version proto_version;
> int32_t msize;
> V9fsPDU pdus[MAX_REQ];
> + struct V9fsTransport *transport;
> /*
> * lock ensuring atomic path update
> * on rename.
> @@ -343,4 +344,21 @@ void pdu_free(V9fsPDU *pdu);
> void pdu_submit(V9fsPDU *pdu);
> void v9fs_reset(V9fsState *s);
>
> +struct V9fsTransport {
> + ssize_t (*pdu_vmarshal)(V9fsPDU *pdu, size_t offset, const char *fmt, va_list ap);
over 80 characters
> + ssize_t (*pdu_vunmarshal)(V9fsPDU *pdu, size_t offset, const char *fmt, va_list ap);
ditto
> + void (*init_iov_from_pdu)(V9fsPDU *pdu, struct iovec **piov,
> + unsigned int *pniov, bool is_write);
indent
> + void (*push_and_notify)(V9fsPDU *pdu);
> +};
> +
> +static inline int v9fs_register_transport(V9fsState *s, struct V9fsTransport *t)
> +{
> + if (s->transport) {
> + return -EINVAL;
> + }
> + s->transport = t;
> + return 0;
> +}
> +
> #endif
> diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
> index 1782e4a..e1a37a4 100644
> --- a/hw/9pfs/virtio-9p-device.c
> +++ b/hw/9pfs/virtio-9p-device.c
> @@ -20,7 +20,9 @@
> #include "hw/virtio/virtio-access.h"
> #include "qemu/iov.h"
>
> -void virtio_9p_push_and_notify(V9fsPDU *pdu)
> +static struct V9fsTransport virtio_9p_transport;
> +
> +static void virtio_9p_push_and_notify(V9fsPDU *pdu)
> {
> V9fsState *s = pdu->s;
> V9fsVirtioState *v = container_of(s, V9fsVirtioState, state);
> @@ -126,6 +128,7 @@ static void virtio_9p_device_realize(DeviceState *dev, Error **errp)
> v->config_size = sizeof(struct virtio_9p_config) + strlen(s->fsconf.tag);
> virtio_init(vdev, "virtio-9p", VIRTIO_ID_9P, v->config_size);
> v->vq = virtio_add_queue(vdev, MAX_REQ, handle_9p_output);
> + v9fs_register_transport(s, &virtio_9p_transport);
>
> out:
> return;
> @@ -148,7 +151,7 @@ static void virtio_9p_reset(VirtIODevice *vdev)
> v9fs_reset(&v->state);
> }
>
> -ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
> +static ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
> const char *fmt, va_list ap)
indent
> {
> V9fsState *s = pdu->s;
> @@ -158,7 +161,7 @@ ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
> return v9fs_iov_vmarshal(elem->in_sg, elem->in_num, offset, 1, fmt, ap);
> }
>
> -ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
> +static ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
> const char *fmt, va_list ap)
indent
> {
> V9fsState *s = pdu->s;
> @@ -168,7 +171,7 @@ ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
> return v9fs_iov_vunmarshal(elem->out_sg, elem->out_num, offset, 1, fmt, ap);
> }
>
> -void virtio_init_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
> +static void virtio_init_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
> unsigned int *pniov, bool is_write)
indent
> {
> V9fsState *s = pdu->s;
> @@ -184,6 +187,13 @@ void virtio_init_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
> }
> }
>
> +static struct V9fsTransport virtio_9p_transport = {
> + .pdu_vmarshal = virtio_pdu_vmarshal,
> + .pdu_vunmarshal = virtio_pdu_vunmarshal,
> + .init_iov_from_pdu = virtio_init_iov_from_pdu,
> + .push_and_notify = virtio_9p_push_and_notify,
> +};
> +
> /* virtio-9p device */
>
> static const VMStateDescription vmstate_virtio_9p = {
> diff --git a/hw/9pfs/virtio-9p.h b/hw/9pfs/virtio-9p.h
> index 52c4b9d..e763da2c 100644
> --- a/hw/9pfs/virtio-9p.h
> +++ b/hw/9pfs/virtio-9p.h
> @@ -14,15 +14,6 @@ typedef struct V9fsVirtioState
> V9fsState state;
> } V9fsVirtioState;
>
> -void virtio_9p_push_and_notify(V9fsPDU *pdu);
> -
> -ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
> - const char *fmt, va_list ap);
> -ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
> - const char *fmt, va_list ap);
> -void virtio_init_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
> - unsigned int *pniov, bool is_write);
> -
> #define TYPE_VIRTIO_9P "virtio-9p-device"
> #define VIRTIO_9P(obj) \
> OBJECT_CHECK(V9fsVirtioState, (obj), TYPE_VIRTIO_9P)
WARNING: multiple messages have this Message-ID (diff)
From: Greg Kurz <groug@kaod.org>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: anthony.perard@citrix.com, xen-devel@lists.xensource.com,
wei.liu2@citrix.com, aneesh.kumar@linux.vnet.ibm.com,
qemu-devel@nongnu.org
Subject: Re: [PATCH 2/4] 9pfs: introduce transport specific callbacks
Date: Thu, 24 Nov 2016 09:31:52 +0100 [thread overview]
Message-ID: <20161124093152.5afff15c@bahia> (raw)
In-Reply-To: <1479764372-29470-2-git-send-email-sstabellini@kernel.org>
On Mon, 21 Nov 2016 13:39:30 -0800
Stefano Stabellini <sstabellini@kernel.org> wrote:
> Don't call virtio functions from 9pfs generic code, use generic function
> callbacks instead.
>
> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
Just a couple of indentation and line over 80 characters nits. I'll fix them
before pushing to 9p-next.
Reviewed-by: Greg Kurz <groug@kaod.org>
> hw/9pfs/9p.c | 8 ++++----
> hw/9pfs/9p.h | 18 ++++++++++++++++++
> hw/9pfs/virtio-9p-device.c | 18 ++++++++++++++----
> hw/9pfs/virtio-9p.h | 9 ---------
> 4 files changed, 36 insertions(+), 17 deletions(-)
>
> diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c
> index 05e950f..5a20a13 100644
> --- a/hw/9pfs/9p.c
> +++ b/hw/9pfs/9p.c
> @@ -47,7 +47,7 @@ ssize_t pdu_marshal(V9fsPDU *pdu, size_t offset, const char *fmt, ...)
> va_list ap;
>
> va_start(ap, fmt);
> - ret = virtio_pdu_vmarshal(pdu, offset, fmt, ap);
> + ret = pdu->s->transport->pdu_vmarshal(pdu, offset, fmt, ap);
> va_end(ap);
>
> return ret;
> @@ -59,7 +59,7 @@ ssize_t pdu_unmarshal(V9fsPDU *pdu, size_t offset, const char *fmt, ...)
> va_list ap;
>
> va_start(ap, fmt);
> - ret = virtio_pdu_vunmarshal(pdu, offset, fmt, ap);
> + ret = pdu->s->transport->pdu_vunmarshal(pdu, offset, fmt, ap);
> va_end(ap);
>
> return ret;
> @@ -67,7 +67,7 @@ ssize_t pdu_unmarshal(V9fsPDU *pdu, size_t offset, const char *fmt, ...)
>
> static void pdu_push_and_notify(V9fsPDU *pdu)
> {
> - virtio_9p_push_and_notify(pdu);
> + pdu->s->transport->push_and_notify(pdu);
> }
>
> static int omode_to_uflags(int8_t mode)
> @@ -1751,7 +1751,7 @@ static void v9fs_init_qiov_from_pdu(QEMUIOVector *qiov, V9fsPDU *pdu,
> struct iovec *iov;
> unsigned int niov;
>
> - virtio_init_iov_from_pdu(pdu, &iov, &niov, is_write);
> + pdu->s->transport->init_iov_from_pdu(pdu, &iov, &niov, is_write);
>
> qemu_iovec_init_external(&elem, iov, niov);
> qemu_iovec_init(qiov, niov);
> diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h
> index 07cee01..ab398d0 100644
> --- a/hw/9pfs/9p.h
> +++ b/hw/9pfs/9p.h
> @@ -230,6 +230,7 @@ typedef struct V9fsState
> enum p9_proto_version proto_version;
> int32_t msize;
> V9fsPDU pdus[MAX_REQ];
> + struct V9fsTransport *transport;
> /*
> * lock ensuring atomic path update
> * on rename.
> @@ -343,4 +344,21 @@ void pdu_free(V9fsPDU *pdu);
> void pdu_submit(V9fsPDU *pdu);
> void v9fs_reset(V9fsState *s);
>
> +struct V9fsTransport {
> + ssize_t (*pdu_vmarshal)(V9fsPDU *pdu, size_t offset, const char *fmt, va_list ap);
over 80 characters
> + ssize_t (*pdu_vunmarshal)(V9fsPDU *pdu, size_t offset, const char *fmt, va_list ap);
ditto
> + void (*init_iov_from_pdu)(V9fsPDU *pdu, struct iovec **piov,
> + unsigned int *pniov, bool is_write);
indent
> + void (*push_and_notify)(V9fsPDU *pdu);
> +};
> +
> +static inline int v9fs_register_transport(V9fsState *s, struct V9fsTransport *t)
> +{
> + if (s->transport) {
> + return -EINVAL;
> + }
> + s->transport = t;
> + return 0;
> +}
> +
> #endif
> diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
> index 1782e4a..e1a37a4 100644
> --- a/hw/9pfs/virtio-9p-device.c
> +++ b/hw/9pfs/virtio-9p-device.c
> @@ -20,7 +20,9 @@
> #include "hw/virtio/virtio-access.h"
> #include "qemu/iov.h"
>
> -void virtio_9p_push_and_notify(V9fsPDU *pdu)
> +static struct V9fsTransport virtio_9p_transport;
> +
> +static void virtio_9p_push_and_notify(V9fsPDU *pdu)
> {
> V9fsState *s = pdu->s;
> V9fsVirtioState *v = container_of(s, V9fsVirtioState, state);
> @@ -126,6 +128,7 @@ static void virtio_9p_device_realize(DeviceState *dev, Error **errp)
> v->config_size = sizeof(struct virtio_9p_config) + strlen(s->fsconf.tag);
> virtio_init(vdev, "virtio-9p", VIRTIO_ID_9P, v->config_size);
> v->vq = virtio_add_queue(vdev, MAX_REQ, handle_9p_output);
> + v9fs_register_transport(s, &virtio_9p_transport);
>
> out:
> return;
> @@ -148,7 +151,7 @@ static void virtio_9p_reset(VirtIODevice *vdev)
> v9fs_reset(&v->state);
> }
>
> -ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
> +static ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
> const char *fmt, va_list ap)
indent
> {
> V9fsState *s = pdu->s;
> @@ -158,7 +161,7 @@ ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
> return v9fs_iov_vmarshal(elem->in_sg, elem->in_num, offset, 1, fmt, ap);
> }
>
> -ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
> +static ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
> const char *fmt, va_list ap)
indent
> {
> V9fsState *s = pdu->s;
> @@ -168,7 +171,7 @@ ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
> return v9fs_iov_vunmarshal(elem->out_sg, elem->out_num, offset, 1, fmt, ap);
> }
>
> -void virtio_init_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
> +static void virtio_init_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
> unsigned int *pniov, bool is_write)
indent
> {
> V9fsState *s = pdu->s;
> @@ -184,6 +187,13 @@ void virtio_init_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
> }
> }
>
> +static struct V9fsTransport virtio_9p_transport = {
> + .pdu_vmarshal = virtio_pdu_vmarshal,
> + .pdu_vunmarshal = virtio_pdu_vunmarshal,
> + .init_iov_from_pdu = virtio_init_iov_from_pdu,
> + .push_and_notify = virtio_9p_push_and_notify,
> +};
> +
> /* virtio-9p device */
>
> static const VMStateDescription vmstate_virtio_9p = {
> diff --git a/hw/9pfs/virtio-9p.h b/hw/9pfs/virtio-9p.h
> index 52c4b9d..e763da2c 100644
> --- a/hw/9pfs/virtio-9p.h
> +++ b/hw/9pfs/virtio-9p.h
> @@ -14,15 +14,6 @@ typedef struct V9fsVirtioState
> V9fsState state;
> } V9fsVirtioState;
>
> -void virtio_9p_push_and_notify(V9fsPDU *pdu);
> -
> -ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
> - const char *fmt, va_list ap);
> -ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
> - const char *fmt, va_list ap);
> -void virtio_init_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
> - unsigned int *pniov, bool is_write);
> -
> #define TYPE_VIRTIO_9P "virtio-9p-device"
> #define VIRTIO_9P(obj) \
> OBJECT_CHECK(V9fsVirtioState, (obj), TYPE_VIRTIO_9P)
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-11-24 8:32 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-21 21:39 [Qemu-devel] [PATCH 0/4] 9pfs: clean-up for multiple transports Stefano Stabellini
2016-11-21 21:39 ` Stefano Stabellini
2016-11-21 21:39 ` [Qemu-devel] [PATCH 1/4] 9pfs: move pdus to V9fsState Stefano Stabellini
2016-11-21 21:39 ` Stefano Stabellini
2016-11-21 21:39 ` [Qemu-devel] [PATCH 2/4] 9pfs: introduce transport specific callbacks Stefano Stabellini
2016-11-21 21:39 ` Stefano Stabellini
2016-11-24 8:31 ` Greg Kurz [this message]
2016-11-24 8:31 ` Greg Kurz
2016-11-24 14:23 ` [Qemu-devel] " Greg Kurz
2016-11-24 14:23 ` Greg Kurz
2016-11-24 14:43 ` Greg Kurz
2016-11-24 14:43 ` Greg Kurz
2016-11-28 20:12 ` [Qemu-devel] [Xen-devel] " Stefano Stabellini
2016-11-28 20:12 ` [Qemu-devel] " Stefano Stabellini
2016-11-28 20:11 ` [Qemu-devel] [Xen-devel] " Stefano Stabellini
2016-11-28 20:11 ` [Qemu-devel] " Stefano Stabellini
2016-11-21 21:39 ` [Qemu-devel] [PATCH 3/4] 9pfs: use v9fs_init_qiov_from_pdu instead of v9fs_pack Stefano Stabellini
2016-11-21 21:39 ` Stefano Stabellini
2016-11-24 14:48 ` [Qemu-devel] " Greg Kurz
2016-11-24 14:48 ` Greg Kurz
2016-11-28 20:35 ` [Qemu-devel] " Stefano Stabellini
2016-11-28 20:35 ` Stefano Stabellini
2016-11-21 21:39 ` [Qemu-devel] [PATCH 4/4] 9pfs: add a size parameter to init_iov_from_pdu Stefano Stabellini
2016-11-21 21:39 ` Stefano Stabellini
2016-11-24 16:17 ` [Qemu-devel] " Greg Kurz
2016-11-24 16:17 ` Greg Kurz
2016-11-28 21:21 ` [Qemu-devel] " Stefano Stabellini
2016-11-28 21:21 ` Stefano Stabellini
2016-11-24 8:30 ` [Qemu-devel] [PATCH 1/4] 9pfs: move pdus to V9fsState Greg Kurz
2016-11-24 8:30 ` Greg Kurz
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=20161124093152.5afff15c@bahia \
--to=groug@kaod.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=anthony.perard@citrix.com \
--cc=qemu-devel@nongnu.org \
--cc=sstabellini@kernel.org \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xensource.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.