Message ID | e369d41f15ff1330ea42d5d143c5d76e5fc6e192.1467727577.git.berto@igalia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 05.07.2016 16:29, Alberto Garcia wrote: > img_commit() creates a block job without an ID. This is no longer > allowed now that we require it to be unique and well-formed. We were > solving this by having a fallback in block_job_create(), but now that > we extended the API of commit_active_start() we can finally set an > explicit ID and revert that change. > > Signed-off-by: Alberto Garcia <berto@igalia.com> > Reviewed-by: Max Reitz <mreitz@redhat.com> > Reviewed-by: Kevin Wolf <kwolf@redhat.com> > --- > blockjob.c | 6 ------ > qemu-img.c | 2 +- > 2 files changed, 1 insertion(+), 7 deletions(-) > > diff --git a/blockjob.c b/blockjob.c > index 511c0db..3b9cec7 100644 > --- a/blockjob.c > +++ b/blockjob.c > @@ -132,12 +132,6 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver, > > if (job_id == NULL) { > job_id = bdrv_get_device_name(bs); > - /* Assign a default ID if the BDS does not have a device > - * name. We'll get rid of this soon when we finish extending > - * the API of all commands that create block jobs. */ > - if (job_id[0] == '\0') { > - job_id = "default_job"; > - } I stand by my R-b, but as a remark to what you said for v3: I can't imagine how this function can be called in a way that job_id will be empty here (after this patch), and this is why I proposed an assert(job_id[0] != '\0'). It'd probably be a mistake on our part if such a case could happen (which is why an assertion would be fine). However, gracefully returning an error is of course fine, too. The issue I take with this is that the error we'd be returning is "Invalid job ID ''", which isn't very helpful (it should be "No job ID specified, and no default available"). In any case, since I can't imagine the job_id being empty here and since we'll handle that case gracefully in case it should occur, I won't object (and my R-b stands). Max > } > > if (!id_wellformed(job_id)) { > diff --git a/qemu-img.c b/qemu-img.c > index a78f598..521724c 100644 > --- a/qemu-img.c > +++ b/qemu-img.c > @@ -921,7 +921,7 @@ static int img_commit(int argc, char **argv) > .bs = bs, > }; > > - commit_active_start(NULL, bs, base_bs, 0, BLOCKDEV_ON_ERROR_REPORT, > + commit_active_start("commit", bs, base_bs, 0, BLOCKDEV_ON_ERROR_REPORT, > common_block_job_cb, &cbi, &local_err); > if (local_err) { > goto done; >
On Tue 05 Jul 2016 05:56:09 PM CEST, Max Reitz <mreitz@redhat.com> wrote: >> @@ -132,12 +132,6 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver, >> >> if (job_id == NULL) { >> job_id = bdrv_get_device_name(bs); >> - /* Assign a default ID if the BDS does not have a device >> - * name. We'll get rid of this soon when we finish extending >> - * the API of all commands that create block jobs. */ >> - if (job_id[0] == '\0') { >> - job_id = "default_job"; >> - } > > I stand by my R-b, but as a remark to what you said for v3: I can't > imagine how this function can be called in a way that job_id will be > empty here (after this patch), and this is why I proposed an > assert(job_id[0] != '\0'). It'd probably be a mistake on our part if > such a case could happen (which is why an assertion would be fine). At the moment you cannot do it, but if we allow creating block jobs on other nodes (e.g. intermediate block streaming) the user must provide a job ID, else there'll be no default. > However, gracefully returning an error is of course fine, too. The > issue I take with this is that the error we'd be returning is "Invalid > job ID ''", which isn't very helpful (it should be "No job ID > specified, and no default available"). We can add a special check for the empty string and use that error message that you propose. Berto
diff --git a/blockjob.c b/blockjob.c index 511c0db..3b9cec7 100644 --- a/blockjob.c +++ b/blockjob.c @@ -132,12 +132,6 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver, if (job_id == NULL) { job_id = bdrv_get_device_name(bs); - /* Assign a default ID if the BDS does not have a device - * name. We'll get rid of this soon when we finish extending - * the API of all commands that create block jobs. */ - if (job_id[0] == '\0') { - job_id = "default_job"; - } } if (!id_wellformed(job_id)) { diff --git a/qemu-img.c b/qemu-img.c index a78f598..521724c 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -921,7 +921,7 @@ static int img_commit(int argc, char **argv) .bs = bs, }; - commit_active_start(NULL, bs, base_bs, 0, BLOCKDEV_ON_ERROR_REPORT, + commit_active_start("commit", bs, base_bs, 0, BLOCKDEV_ON_ERROR_REPORT, common_block_job_cb, &cbi, &local_err); if (local_err) { goto done;