qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paul Durrant <Paul.Durrant@citrix.com>
To: Anthony Perard <anthony.perard@citrix.com>
Cc: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"qemu-block@nongnu.org" <qemu-block@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Kevin Wolf <kwolf@redhat.com>, Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 14/18] xen: add implementations of xen-block connect and disconnect functions...
Date: Sat, 8 Dec 2018 11:31:09 +0000	[thread overview]
Message-ID: <c49ac9208a244cad94c13be2fb996469@AMSPEX02CL03.citrite.net> (raw)
In-Reply-To: <20181207182054.GM18875@perard.uk.xensource.com>

> -----Original Message-----
> From: Anthony PERARD [mailto:anthony.perard@citrix.com]
> Sent: 07 December 2018 18:21
> To: Paul Durrant <Paul.Durrant@citrix.com>
> Cc: qemu-devel@nongnu.org; qemu-block@nongnu.org; xen-
> devel@lists.xenproject.org; Stefano Stabellini <sstabellini@kernel.org>;
> Kevin Wolf <kwolf@redhat.com>; Max Reitz <mreitz@redhat.com>
> Subject: Re: [PATCH v2 14/18] xen: add implementations of xen-block
> connect and disconnect functions...
> 
> On Thu, Dec 06, 2018 at 03:08:40PM +0000, Paul Durrant wrote:
> > ...and wire in the dataplane.
> >
> > This patch adds the remaining code to make the xen-block XenDevice
> > functional. The parameters that a block frontend expects to find are
> > populated in the backend xenstore area, and the 'ring-ref' and
> > 'event-channel' values specified in the frontend xenstore area are
> > mapped/bound and used to set up the dataplane.
> >
> > Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
> 
> With this patch, we should be able to have QEMU instantiate a new
> backend for a guest, right ? (via command line or QMP)
> 
> I've tried, and that doesn't work, the xenstore path for the frontend is
> wrong. In the qemu trace, I have:
>     xs_node_create /local/domain/0/backend/xen-disk/23/268572709
> Which is probably fine, even if not described in xenstore-paths.markdown.
>     xs_node_create /local/domain/23/device/xen-disk/268572709
> Which is not, instead of "xen-disk", we should have "vbd".
> 
> I know that this is fixed in "xen: automatically create
> XenBlockDevice-s", but at least the "vbd" type couldn't be added in this
> patch, or maybe a previous one.


Yes, I guess I should move the name overrides into an earlier patch.

> 
> 
> Another issue seems to be error handling. I've done a very simple test,
> I've added '-device xen-disk,vdev=d536p37,id=mydisk' to the command
> line (which is obvious wrong), and QEMU abort with:
>     qemu-system-i386: hw/block/xen-block.c:174: xen_block_realize:
> Assertion `conf->blk' failed.
> But I've pointed out the error in the code below.
> 
> 
> And just for fun, adding then removing a xen-disk via QMP. Adding works
> fine (once I've fixed the frontend name). I've run the following with
> ./scripts/qmp/qmp-shell:
> blockdev-add driver=file  filename=/root/vm/disk/testing-disk.qcow2 node-
> name=emptyfile
> blockdev-add driver=qcow2 node-name=emptyqcow2 file=emptyfile
> device_add driver=xen-disk vdev=xvdn id=fromqmp drive=emptyqcow2
> 
> But, then, remove doesn't work, running "device_del id=fromqmp" doesn't
> do anything. I guess we can try to fix that later if you don't find
> what's missing.

Hmm, that's weird. I guess the name lookup must be failing somewhere.

> 
> > @@ -76,6 +151,7 @@ static void xen_block_realize(XenDevice *xendev,
> Error **errp)
> >      const char *type = object_get_typename(OBJECT(blockdev));
> >      XenBlockVdev *vdev = &blockdev->vdev;
> >      Error *local_err = NULL;
> > +    BlockConf *conf = &blockdev->conf;
> >
> >      if (vdev->type == XEN_BLOCK_VDEV_TYPE_INVALID) {
> >          error_setg(errp, "vdev property not set");
> > @@ -90,6 +166,59 @@ static void xen_block_realize(XenDevice *xendev,
> Error **errp)
> >              error_propagate(errp, local_err);
> 
> You probably want to add a return here, this is when
> `blockdev_class->realize' fails.
> 

Yes, I do.

> >          }
> >      }
> > +
> > +    /*
> > +     * The blkif protocol does not deal with removable media, so it
> must
> > +     * always be present, even for CDRom devices.
> > +     */
> > +    assert(conf->blk);
> 
> That assert should probably not be there, as a missing conf->blk isn't a
> programming error, but a user error, I think.
> 
> Actually, the issue is the missing return abrove, and the assert is
> probably fine.
> 

Yes, the assert is intentional and caught the programming error :-)

  Paul

> --
> Anthony PERARD

  reply	other threads:[~2018-12-08 11:31 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-06 15:08 [Qemu-devel] [PATCH v2 00/18] Xen PV backend 'qdevification' Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 01/18] xen: re-name XenDevice to XenLegacyDevice Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 02/18] xen: introduce new 'XenBus' and 'XenDevice' object hierarchy Paul Durrant
2018-12-07 12:15   ` Anthony PERARD
2018-12-07 12:57     ` Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 03/18] xen: introduce 'xen-block', 'xen-disk' and 'xen-cdrom' Paul Durrant
2018-12-07 14:35   ` Anthony PERARD
2018-12-07 14:39     ` Paul Durrant
2018-12-07 15:26       ` Anthony PERARD
2018-12-07 15:34         ` Daniel P. Berrangé
2018-12-10  9:35         ` Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 04/18] xen: create xenstore areas for XenDevice-s Paul Durrant
2018-12-07 15:07   ` Anthony PERARD
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 05/18] xen: add xenstore watcher infrastructure Paul Durrant
2018-12-07 15:57   ` Anthony PERARD
2018-12-10  9:43     ` Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 06/18] xen: add grant table interface for XenDevice-s Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 07/18] xen: add event channel " Paul Durrant
2018-12-07 16:03   ` Anthony PERARD
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 08/18] xen: duplicate xen_disk.c as basis of dataplane/xen-block.c Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 09/18] xen: remove unnecessary code from dataplane/xen-block.c Paul Durrant
2018-12-07 16:20   ` [Qemu-devel] [Xen-devel] " Anthony PERARD
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 10/18] xen: add header and build dataplane/xen-block.c Paul Durrant
2018-12-07 16:48   ` Anthony PERARD
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 11/18] xen: remove 'XenBlkDev' and 'blkdev' names from dataplane/xen-block Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 12/18] xen: remove 'ioreq' struct/varable/field names from dataplane/xen-block.c Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 13/18] xen: purge 'blk' and 'ioreq' from function names in dataplane/xen-block.c Paul Durrant
2018-12-07 16:52   ` Anthony PERARD
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 14/18] xen: add implementations of xen-block connect and disconnect functions Paul Durrant
2018-12-07 18:20   ` Anthony PERARD
2018-12-08 11:31     ` Paul Durrant [this message]
2018-12-10 16:07     ` Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 15/18] xen: add a mechanism to automatically create XenDevice-s Paul Durrant
2018-12-07 18:30   ` Anthony PERARD
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 16/18] xen: automatically create XenBlockDevice-s Paul Durrant
2018-12-07 18:52   ` Anthony PERARD
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 17/18] MAINTAINERS: add myself as a Xen maintainer Paul Durrant
2018-12-06 15:08 ` [Qemu-devel] [PATCH v2 18/18] xen: remove the legacy 'xen_disk' backend Paul Durrant
2018-12-07 18:52   ` Anthony PERARD

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=c49ac9208a244cad94c13be2fb996469@AMSPEX02CL03.citrite.net \
    --to=paul.durrant@citrix.com \
    --cc=anthony.perard@citrix.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=sstabellini@kernel.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).