From: Greg Kurz <groug@kaod.org>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: qemu-devel@nongnu.org, xen-devel@lists.xenproject.org,
Stefano Stabellini <stefano@aporeto.com>,
anthony.perard@citrix.com, jgross@suse.com,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH 3/8] xen/9pfs: introduce Xen 9pfs backend
Date: Fri, 10 Mar 2017 10:48:28 +0100 [thread overview]
Message-ID: <20170310104828.78604daf@bahia> (raw)
In-Reply-To: <20170309185426.3506a17b@bahia>
[-- Attachment #1: Type: text/plain, Size: 5239 bytes --]
On Thu, 9 Mar 2017 18:54:26 +0100
Greg Kurz <groug@kaod.org> wrote:
> On Mon, 6 Mar 2017 18:12:43 -0800
> Stefano Stabellini <sstabellini@kernel.org> wrote:
>
> > Introduce the Xen 9pfs backend: add struct XenDevOps to register as a
> > Xen backend and add struct V9fsTransport to register as v9fs transport.
> >
> > All functions are empty stubs for now.
> >
> > Signed-off-by: Stefano Stabellini <stefano@aporeto.com>
> > CC: anthony.perard@citrix.com
> > CC: jgross@suse.com
> > CC: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> > CC: Greg Kurz <groug@kaod.org>
> > ---
> > hw/9pfs/xen-9p-backend.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 96 insertions(+)
> > create mode 100644 hw/9pfs/xen-9p-backend.c
> >
> > diff --git a/hw/9pfs/xen-9p-backend.c b/hw/9pfs/xen-9p-backend.c
> > new file mode 100644
> > index 0000000..924fb64
> > --- /dev/null
> > +++ b/hw/9pfs/xen-9p-backend.c
> > @@ -0,0 +1,96 @@
> > +/*
> > + * Xen 9p backend
> > + *
> > + * Copyright Aporeto 2017
> > + *
> > + * Authors:
> > + * Stefano Stabellini <stefano@aporeto.com>
> > + *
> > + */
> > +
> > +#include "qemu/osdep.h"
> > +
> > +#include "hw/hw.h"
> > +#include "hw/9pfs/9p.h"
> > +#include "hw/xen/xen_backend.h"
> > +#include "xen_9pfs.h"
> > +#include "qemu/config-file.h"
> > +#include "fsdev/qemu-fsdev.h"
> > +
> > +struct Xen9pfsDev {
> > + struct XenDevice xendev; /* must be first */
> > +};
>
> According to HACKING, this should be:
>
> typedef struct Xen9pfsDev {
> struct XenDevice xendev; /* must be first */
> } Xen9pfsDev;
>
> and...
>
> > +
> > +static ssize_t xen_9pfs_pdu_vmarshal(V9fsPDU *pdu,
> > + size_t offset,
> > + const char *fmt,
> > + va_list ap)
> > +{
> > + return 0;
> > +}
> > +
> > +static ssize_t xen_9pfs_pdu_vunmarshal(V9fsPDU *pdu,
> > + size_t offset,
> > + const char *fmt,
> > + va_list ap)
> > +{
> > + return 0;
> > +}
> > +
> > +static void xen_9pfs_init_out_iov_from_pdu(V9fsPDU *pdu,
> > + struct iovec **piov,
> > + unsigned int *pniov)
> > +{
> > +}
> > +
> > +static void xen_9pfs_init_in_iov_from_pdu(V9fsPDU *pdu,
> > + struct iovec **piov,
> > + unsigned int *pniov,
> > + size_t size)
> > +{
> > +}
> > +
> > +static void xen_9pfs_push_and_notify(V9fsPDU *pdu)
> > +{
> > +}
> > +
> > +static const struct V9fsTransport xen_9p_transport = {
> > + .pdu_vmarshal = xen_9pfs_pdu_vmarshal,
> > + .pdu_vunmarshal = xen_9pfs_pdu_vunmarshal,
> > + .init_in_iov_from_pdu = xen_9pfs_init_in_iov_from_pdu,
> > + .init_out_iov_from_pdu = xen_9pfs_init_out_iov_from_pdu,
> > + .push_and_notify = xen_9pfs_push_and_notify,
> > +};
> > +
> > +static int xen_9pfs_init(struct XenDevice *xendev)
> > +{
> > + return 0;
> > +}
> > +
> > +static int xen_9pfs_free(struct XenDevice *xendev)
> > +{
> > + return -1;
> > +}
> > +
> > +static int xen_9pfs_connect(struct XenDevice *xendev)
> > +{
> > + return 0;
> > +}
> > +
> > +static void xen_9pfs_alloc(struct XenDevice *xendev)
> > +{
> > +}
> > +
> > +static void xen_9pfs_disconnect(struct XenDevice *xendev)
> > +{
> > +}
> > +
> > +struct XenDevOps xen_9pfs_ops = {
> > + .size = sizeof(struct Xen9pfsDev),
>
> ... s/struct //
>
> > + .flags = DEVOPS_FLAG_NEED_GNTDEV,
> > + .alloc = xen_9pfs_alloc,
> > + .init = xen_9pfs_init,
> > + .initialise = xen_9pfs_connect,
> > + .disconnect = xen_9pfs_disconnect,
> > + .free = xen_9pfs_free,
> > +};
>
> With the above comments addressed:
>
> Reviewed-by: Greg Kurz <groug@kaod.org>
Hmm... there's still a problem actually. This patch breaks build for some
targets with '--enable-xen --enable-virtfs':
LINK cris-softmmu/qemu-system-cris
../hw/xen/xen_backend.o: In function `xen_be_register_common':
/home/greg/Work/qemu/qemu-9p/hw/xen/xen_backend.c:588: undefined reference to `xen_9pfs_ops'
This happens because only targets that support virtio and PCI pull the
9pfs/fsdev object files. This is an effort to have smaller QEMU binaries,
based on the historical dependency of 9pfs on virtio. This patch breaks
this assumption if CONFIG_XEN_BACKEND is defined but the target doesn't
define CONFIG_VIRTIO and CONFIG_PCI.
Since 9pfs can now be used with another transport, I guess that the
dependency on virtio and PCI isn't right anymore. The new condition
for targets to support 9pfs should rather be something like:
CONFIG_VIRTFS == y && CONFIG_SOFTMMU == y && (CONFIG_VIRTIO == y || CONFIG_XEN_BACKEND == y)
This would cause all targets to pull the 9pfs/fsdev object files though.
So I have a question: do all targets need to support the Xen backend, really ?
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Greg Kurz <groug@kaod.org>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: jgross@suse.com, qemu-devel@nongnu.org,
Stefano Stabellini <stefano@aporeto.com>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
anthony.perard@citrix.com, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 3/8] xen/9pfs: introduce Xen 9pfs backend
Date: Fri, 10 Mar 2017 10:48:28 +0100 [thread overview]
Message-ID: <20170310104828.78604daf@bahia> (raw)
In-Reply-To: <20170309185426.3506a17b@bahia>
[-- Attachment #1.1: Type: text/plain, Size: 5239 bytes --]
On Thu, 9 Mar 2017 18:54:26 +0100
Greg Kurz <groug@kaod.org> wrote:
> On Mon, 6 Mar 2017 18:12:43 -0800
> Stefano Stabellini <sstabellini@kernel.org> wrote:
>
> > Introduce the Xen 9pfs backend: add struct XenDevOps to register as a
> > Xen backend and add struct V9fsTransport to register as v9fs transport.
> >
> > All functions are empty stubs for now.
> >
> > Signed-off-by: Stefano Stabellini <stefano@aporeto.com>
> > CC: anthony.perard@citrix.com
> > CC: jgross@suse.com
> > CC: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
> > CC: Greg Kurz <groug@kaod.org>
> > ---
> > hw/9pfs/xen-9p-backend.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 96 insertions(+)
> > create mode 100644 hw/9pfs/xen-9p-backend.c
> >
> > diff --git a/hw/9pfs/xen-9p-backend.c b/hw/9pfs/xen-9p-backend.c
> > new file mode 100644
> > index 0000000..924fb64
> > --- /dev/null
> > +++ b/hw/9pfs/xen-9p-backend.c
> > @@ -0,0 +1,96 @@
> > +/*
> > + * Xen 9p backend
> > + *
> > + * Copyright Aporeto 2017
> > + *
> > + * Authors:
> > + * Stefano Stabellini <stefano@aporeto.com>
> > + *
> > + */
> > +
> > +#include "qemu/osdep.h"
> > +
> > +#include "hw/hw.h"
> > +#include "hw/9pfs/9p.h"
> > +#include "hw/xen/xen_backend.h"
> > +#include "xen_9pfs.h"
> > +#include "qemu/config-file.h"
> > +#include "fsdev/qemu-fsdev.h"
> > +
> > +struct Xen9pfsDev {
> > + struct XenDevice xendev; /* must be first */
> > +};
>
> According to HACKING, this should be:
>
> typedef struct Xen9pfsDev {
> struct XenDevice xendev; /* must be first */
> } Xen9pfsDev;
>
> and...
>
> > +
> > +static ssize_t xen_9pfs_pdu_vmarshal(V9fsPDU *pdu,
> > + size_t offset,
> > + const char *fmt,
> > + va_list ap)
> > +{
> > + return 0;
> > +}
> > +
> > +static ssize_t xen_9pfs_pdu_vunmarshal(V9fsPDU *pdu,
> > + size_t offset,
> > + const char *fmt,
> > + va_list ap)
> > +{
> > + return 0;
> > +}
> > +
> > +static void xen_9pfs_init_out_iov_from_pdu(V9fsPDU *pdu,
> > + struct iovec **piov,
> > + unsigned int *pniov)
> > +{
> > +}
> > +
> > +static void xen_9pfs_init_in_iov_from_pdu(V9fsPDU *pdu,
> > + struct iovec **piov,
> > + unsigned int *pniov,
> > + size_t size)
> > +{
> > +}
> > +
> > +static void xen_9pfs_push_and_notify(V9fsPDU *pdu)
> > +{
> > +}
> > +
> > +static const struct V9fsTransport xen_9p_transport = {
> > + .pdu_vmarshal = xen_9pfs_pdu_vmarshal,
> > + .pdu_vunmarshal = xen_9pfs_pdu_vunmarshal,
> > + .init_in_iov_from_pdu = xen_9pfs_init_in_iov_from_pdu,
> > + .init_out_iov_from_pdu = xen_9pfs_init_out_iov_from_pdu,
> > + .push_and_notify = xen_9pfs_push_and_notify,
> > +};
> > +
> > +static int xen_9pfs_init(struct XenDevice *xendev)
> > +{
> > + return 0;
> > +}
> > +
> > +static int xen_9pfs_free(struct XenDevice *xendev)
> > +{
> > + return -1;
> > +}
> > +
> > +static int xen_9pfs_connect(struct XenDevice *xendev)
> > +{
> > + return 0;
> > +}
> > +
> > +static void xen_9pfs_alloc(struct XenDevice *xendev)
> > +{
> > +}
> > +
> > +static void xen_9pfs_disconnect(struct XenDevice *xendev)
> > +{
> > +}
> > +
> > +struct XenDevOps xen_9pfs_ops = {
> > + .size = sizeof(struct Xen9pfsDev),
>
> ... s/struct //
>
> > + .flags = DEVOPS_FLAG_NEED_GNTDEV,
> > + .alloc = xen_9pfs_alloc,
> > + .init = xen_9pfs_init,
> > + .initialise = xen_9pfs_connect,
> > + .disconnect = xen_9pfs_disconnect,
> > + .free = xen_9pfs_free,
> > +};
>
> With the above comments addressed:
>
> Reviewed-by: Greg Kurz <groug@kaod.org>
Hmm... there's still a problem actually. This patch breaks build for some
targets with '--enable-xen --enable-virtfs':
LINK cris-softmmu/qemu-system-cris
../hw/xen/xen_backend.o: In function `xen_be_register_common':
/home/greg/Work/qemu/qemu-9p/hw/xen/xen_backend.c:588: undefined reference to `xen_9pfs_ops'
This happens because only targets that support virtio and PCI pull the
9pfs/fsdev object files. This is an effort to have smaller QEMU binaries,
based on the historical dependency of 9pfs on virtio. This patch breaks
this assumption if CONFIG_XEN_BACKEND is defined but the target doesn't
define CONFIG_VIRTIO and CONFIG_PCI.
Since 9pfs can now be used with another transport, I guess that the
dependency on virtio and PCI isn't right anymore. The new condition
for targets to support 9pfs should rather be something like:
CONFIG_VIRTFS == y && CONFIG_SOFTMMU == y && (CONFIG_VIRTIO == y || CONFIG_XEN_BACKEND == y)
This would cause all targets to pull the 9pfs/fsdev object files though.
So I have a question: do all targets need to support the Xen backend, really ?
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
[-- Attachment #2: Type: text/plain, Size: 127 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-03-10 9:48 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-07 2:12 [Qemu-devel] [PATCH 0/8] xen/9pfs: introduce the Xen 9pfs backend Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-07 2:12 ` [Qemu-devel] [PATCH 1/8] xen: import ring.h from xen Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-07 2:12 ` [Qemu-devel] [PATCH 2/8] xen: introduce the header file for the Xen 9pfs transport protocol Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-07 2:12 ` [Qemu-devel] [PATCH 3/8] xen/9pfs: introduce Xen 9pfs backend Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-09 17:54 ` [Qemu-devel] " Greg Kurz
2017-03-09 17:54 ` Greg Kurz
2017-03-10 9:48 ` Greg Kurz [this message]
2017-03-10 9:48 ` Greg Kurz
2017-03-13 23:26 ` [Qemu-devel] " Stefano Stabellini
2017-03-13 23:26 ` Stefano Stabellini
2017-03-07 2:12 ` [Qemu-devel] [PATCH 4/8] xen/9pfs: connect to the frontend Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-07 2:12 ` [Qemu-devel] [PATCH 5/8] xen/9pfs: receive requests from " Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-07 2:12 ` [Qemu-devel] [PATCH 6/8] xen/9pfs: implement in/out_iov_from_pdu and vmarshal/vunmarshal Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-07 2:12 ` [Qemu-devel] [PATCH 7/8] xen/9pfs: send responses back to the frontend Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-07 2:12 ` [Qemu-devel] [PATCH 8/8] xen/9pfs: build and register Xen 9pfs backend Stefano Stabellini
2017-03-07 2:12 ` Stefano Stabellini
2017-03-09 17:52 ` [Qemu-devel] " Greg Kurz
2017-03-09 17:52 ` 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=20170310104828.78604daf@bahia \
--to=groug@kaod.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=anthony.perard@citrix.com \
--cc=jgross@suse.com \
--cc=qemu-devel@nongnu.org \
--cc=sstabellini@kernel.org \
--cc=stefano@aporeto.com \
--cc=xen-devel@lists.xenproject.org \
/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.