All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Max Reitz <mreitz@redhat.com>
Cc: Alberto Garcia <berto@igalia.com>,
	qemu-devel@nongnu.org, qemu-block@nongnu.org,
	Eric Blake <eblake@redhat.com>, Jeff Cody <jcody@redhat.com>,
	John Snow <jsnow@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 04/11] block: Use block_job_get() in find_block_job()
Date: Mon, 4 Jul 2016 15:23:14 +0200	[thread overview]
Message-ID: <20160704132314.GF5399@noname.redhat.com> (raw)
In-Reply-To: <05898d8b-4c7d-f2bc-d128-68566a8d6308@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2717 bytes --]

Am 02.07.2016 um 16:02 hat Max Reitz geschrieben:
> On 01.07.2016 17:52, Alberto Garcia wrote:
> > find_block_job() looks for a block backend with a specified name,
> > checks whether it has a block job and acquires its AioContext.
> > 
> > We want to identify jobs by their ID and not by the block backend
> > they're attached to, so this patch ignores the backends altogether and
> > gets the job directly. Apart from making the code simpler, this will
> > allow us to find block jobs once they start having user-specified IDs.
> > 
> > To ensure backward compatibility we keep ERROR_CLASS_DEVICE_NOT_ACTIVE
> > as the error class if the job doesn't exist. In subsequent patches
> > we'll also need to keep the device name as the default job ID if the
> > user doesn't specify a different one.
> > 
> > Signed-off-by: Alberto Garcia <berto@igalia.com>
> > ---
> >  blockdev.c | 43 ++++++++++++++++---------------------------
> >  1 file changed, 16 insertions(+), 27 deletions(-)
> > 
> > diff --git a/blockdev.c b/blockdev.c
> > index 3a104a0..8cedb60 100644
> > --- a/blockdev.c
> > +++ b/blockdev.c
> > @@ -3704,42 +3704,31 @@ void qmp_blockdev_mirror(const char *device, const char *target,
> >      aio_context_release(aio_context);
> >  }
> >  
> > -/* Get the block job for a given device name and acquire its AioContext */
> > -static BlockJob *find_block_job(const char *device, AioContext **aio_context,
> > +/* Get a block job using its ID and acquire its AioContext */
> > +static BlockJob *find_block_job(const char *id, AioContext **aio_context,
> >                                  Error **errp)
> >  {
> > -    BlockBackend *blk;
> > -    BlockDriverState *bs;
> > +    BlockJob *job;
> >  
> >      *aio_context = NULL;
> >  
> > -    blk = blk_by_name(device);
> > -    if (!blk) {
> > -        goto notfound;
> > +    if (!id) {
> > +        error_setg(errp, "Unspecified job ID when looking for a block job");
> > +        return NULL;
> >      }
> 
> Why no plain assertion? Do you expect callers who may pass a NULL ID?
> 
> >  
> > -    *aio_context = blk_get_aio_context(blk);
> > +    job = block_job_get(id);
> > +
> > +    if (!job) {
> > +        error_set(errp, ERROR_CLASS_DEVICE_NOT_ACTIVE,
> > +                  "Block job '%s' not found", id);
> 
> This error class seems a bit weird now... I know I advocated for it in
> v2, but that was because you could actually specifically pass a device
> name to find block jobs on that device, but now you're just looking for
> block jobs with a certain ID (that happens to default to the device name).

libvirt uses the error class, so I don't think we can drop it.

Kevin

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2016-07-04 13:23 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-01 15:51 [Qemu-devel] [PATCH v3 00/11] Allow creating block jobs with a user-defined ID Alberto Garcia
2016-07-01 15:51 ` [Qemu-devel] [PATCH v3 01/11] stream: Fix prototype of stream_start() Alberto Garcia
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 02/11] blockjob: Update description of the 'id' field Alberto Garcia
2016-07-02 13:47   ` Max Reitz
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 03/11] blockjob: Add block_job_get() Alberto Garcia
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 04/11] block: Use block_job_get() in find_block_job() Alberto Garcia
2016-07-02 14:02   ` Max Reitz
2016-07-04 13:23     ` Kevin Wolf [this message]
2016-07-04 14:05       ` Daniel P. Berrange
2016-07-04 13:35     ` Alberto Garcia
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 05/11] blockjob: Add 'job_id' parameter to block_job_create() Alberto Garcia
2016-07-02 14:09   ` Max Reitz
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 06/11] mirror: Add 'job-id' parameter to 'blockdev-mirror' and 'drive-mirror' Alberto Garcia
2016-07-02 14:30   ` Max Reitz
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 07/11] backup: Add 'job-id' parameter to 'blockdev-backup' and 'drive-backup' Alberto Garcia
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 08/11] stream: Add 'job-id' parameter to 'block-stream' Alberto Garcia
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 09/11] commit: Add 'job-id' parameter to 'block-commit' Alberto Garcia
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 10/11] qemu-img: Set the ID of the block job in img_commit() Alberto Garcia
2016-07-02 14:21   ` Max Reitz
2016-07-04 12:43     ` Alberto Garcia
2016-07-01 15:52 ` [Qemu-devel] [PATCH v3 11/11] blockjob: Update description of the 'device' field in the QMP API Alberto Garcia
2016-07-02 14:37   ` Max Reitz
2016-07-04 15:49 ` [Qemu-devel] [PATCH v3 00/11] Allow creating block jobs with a user-defined ID Kevin Wolf

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=20160704132314.GF5399@noname.redhat.com \
    --to=kwolf@redhat.com \
    --cc=berto@igalia.com \
    --cc=eblake@redhat.com \
    --cc=jcody@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.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.