From: Kevin Wolf <kwolf@redhat.com>
To: Alberto Garcia <berto@igalia.com>
Cc: Jeff Cody <jcody@redhat.com>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/3] block: Add QMP support for streaming to an intermediate layer
Date: Thu, 12 Mar 2015 16:45:17 +0100 [thread overview]
Message-ID: <20150312154517.GB7029@noname.redhat.com> (raw)
In-Reply-To: <20150311163806.GA5883@igalia.com>
Am 11.03.2015 um 17:38 hat Alberto Garcia geschrieben:
> On Thu, Mar 05, 2015 at 03:09:58PM +0100, Kevin Wolf wrote:
>
> > > { 'command': 'block-stream',
> > > - 'data': { 'device': 'str', '*base': 'str', '*backing-file': 'str',
> > > - '*speed': 'int', '*on-error': 'BlockdevOnError' } }
> > > + 'data': { 'device': 'str', '*base': 'str', '*top': 'str',
> > > + '*backing-file': 'str', '*speed': 'int',
> > > + '*on-error': 'BlockdevOnError' } }
> >
> > There is no point in specifying some root node as 'device' that
> > isn't actually involved in the operation; worse, it isn't even
> > possible in the general case because 'top' could have multiple
> > users/parents.
> >
> > A better interface would probably be to allow node names for
> > 'device' and leave everything else as it is.
>
> Ok, I changed the code and it does make the implementation simpler.
>
> One issue that I'm finding is that when we move the block-stream
> job to an intermediate node, where the device name is empty, we get
> messages like "Device '' is busy".
>
> I can use node names instead, but they are also not guaranteed to
> exist. I heard there was a plan to auto-generate names, and searching
> the archives I found this patch by Jeff Cody:
>
> http://lists.gnu.org/archive/html/qemu-devel/2014-06/msg04057.html
>
> But it seems that it was never merged?
>
> If we are going to have a scenario where a parameter can mean either a
> device or a node name, we need a clear way to identify that node.
Yes, autogenerated node names were not merged yet. And if they were,
they wouldn't make for very good error messages either.
My first thought was "then make it 'Source/Target device is busy'
without mentioning any name". In the context of any given command, it
would still be clear which BDS is meant. In fact, I have argued before
that mentioning the device name in an error to a command that refers to
a specific device is redundant and should be avoided.
The problem here is that it's not stream_start() that generates the
error, but block_job_create(), which doesn't know which role it's bs
argument has for the block job. So it can't decide whether to say
"source device", "target device" or something completely different.
On the other hand, having an owner BDS for a block job is considered a
mistake meanwhile because there is no clear rule which BDS to pick when
the job involves more than one. In fact, without tying a job to a BDS,
it could be just a background job instead of specifically a block job.
I'm not saying that this conversion should be done now, but just to give
you some background about the direction we're generally taking.
So in the light of this, it might be reasonable to move the bs->job
check with the error check to the callers.
Another, less invasive, option would be to replace the error_set() call
in block_job_create() by error_copy(bs->job->blocker). We're not really
op blockers code here, so might be somewhat ugly, but I think eventually
the check is going to be fully replaced by op blockers anyway, so using
the same message now could make sense.
Jeff, as you are working on op blockers, do you have an opinion on this?
Kevin
next prev parent reply other threads:[~2015-03-12 15:46 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-20 13:53 [Qemu-devel] [PATCH 0/3] Support streaming to an intermediate layer Alberto Garcia
2015-02-20 13:53 ` [Qemu-devel] [PATCH 1/3] block: " Alberto Garcia
2015-03-05 14:04 ` Kevin Wolf
2015-03-05 14:58 ` Alberto Garcia
2015-03-05 15:15 ` Kevin Wolf
2015-03-05 15:47 ` Alberto Garcia
2015-03-12 13:18 ` Alberto Garcia
2015-02-20 13:53 ` [Qemu-devel] [PATCH 2/3] block: Add QMP support for " Alberto Garcia
2015-02-20 22:38 ` Eric Blake
2015-02-23 12:23 ` Alberto Garcia
2015-02-23 13:04 ` Kevin Wolf
2015-02-24 14:08 ` Markus Armbruster
2015-03-05 14:09 ` Kevin Wolf
2015-03-05 15:12 ` Alberto Garcia
2015-03-11 16:38 ` Alberto Garcia
2015-03-12 15:45 ` Kevin Wolf [this message]
2015-03-17 15:00 ` Alberto Garcia
2015-03-17 15:22 ` Eric Blake
2015-03-17 15:40 ` Alberto Garcia
2015-03-17 15:28 ` Kevin Wolf
2015-03-18 12:29 ` Alberto Garcia
2015-02-20 13:53 ` [Qemu-devel] [PATCH 3/3] docs: Document how to stream " Alberto Garcia
2015-02-20 17:34 ` [Qemu-devel] [PATCH 0/3] Support streaming " Eric Blake
2015-02-20 19:05 ` Alberto Garcia
2015-02-20 22:49 ` Eric Blake
2015-02-22 15:08 ` Alberto Garcia
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=20150312154517.GB7029@noname.redhat.com \
--to=kwolf@redhat.com \
--cc=berto@igalia.com \
--cc=jcody@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 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).