On Wed 15 Apr 2015 05:22:13 PM CEST, Max Reitz <mre...@redhat.com> wrote:
>> diff --git a/block/mirror.c b/block/mirror.c >> index 4056164..189e8f8 100644 >> --- a/block/mirror.c >> +++ b/block/mirror.c >> @@ -607,8 +607,9 @@ static void mirror_complete(BlockJob *job, Error **errp) >> return; >> } >> if (!s->synced) { >> - error_set(errp, QERR_BLOCK_JOB_NOT_READY, >> - bdrv_get_device_name(job->bs)); >> + error_setg(errp, >> + "The active block job for device '%s' cannot be >> completed", >> + bdrv_get_device_name(job->bs)); > > I know there is no way right now that bdrv_get_device_name() returns > an empty string, but somehow I'd feel more consistent for this to be > bdrv_get_device_or_node_name() and the string saying "node" instead of > "device". Your choice, though, since it's completely correct for now. Yeah, I decided to leave it like that while the mirror operation can only work on root nodes. In general in all these patches I'm only using bdrv_get_device_or_node_name() in the cases where it's actually possible that the device name is empty. >> +/* Get the block job for a given device or node name >> + * and acquire its AioContext */ >> +static BlockJob *find_block_job(const char *device_or_node, >> + AioContext **aio_context, >> Error **errp) >> { >> - BlockBackend *blk; >> BlockDriverState *bs; >> >> - blk = blk_by_name(device); >> - if (!blk) { >> + bs = bdrv_lookup_bs(device_or_node, device_or_node, NULL); >> + if (!bs) { >> goto notfound; > > It would be possible to pass errp to bdrv_lookup_bs() and move the > error_set() under notfound to the if (!bs->job) block (I'd find the > error message confusing if there just is no node with that name; but > on the other hand, it wouldn't be a regression). Sounds reasonable, I'll change that. >> diff --git a/blockjob.c b/blockjob.c >> index 562362b..b2b6cc9 100644 >> --- a/blockjob.c >> +++ b/blockjob.c >> @@ -52,7 +52,7 @@ void *block_job_create(const BlockJobDriver *driver, >> BlockDriverState *bs, >> BlockJob *job; >> >> if (bs->job) { >> - error_set(errp, QERR_DEVICE_IN_USE, bdrv_get_device_name(bs)); >> + error_set(errp, QERR_DEVICE_IN_USE, >> bdrv_get_device_or_node_name(bs)); > > Hm, the error message only mentions "device" now... Not too nice. Errr... I overlooked that, I'll fix it. >> @@ -1895,7 +1895,7 @@ >> # >> # @type: job type >> # >> -# @device: device name >> +# @device: device name, or node name if not present >> # >> # @len: maximum progress value >> # > > I think you need to apply the same treatment for the comment of > BlockJobInfo, too. You're right again :) Berto