block: Accept node-name for blockdev-mirror
In order to remove the necessity to use BlockBackend names in the external API, we want to allow node-names everywhere. This converts blockdev-mirror to accept a node-name without lifting the restriction that we're operating at a root node. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
cef34eebf3
commit
07eec65272
10
blockdev.c
10
blockdev.c
@ -3627,21 +3627,13 @@ void qmp_blockdev_mirror(bool has_job_id, const char *job_id,
|
||||
Error **errp)
|
||||
{
|
||||
BlockDriverState *bs;
|
||||
BlockBackend *blk;
|
||||
BlockDriverState *target_bs;
|
||||
AioContext *aio_context;
|
||||
BlockMirrorBackingMode backing_mode = MIRROR_LEAVE_BACKING_CHAIN;
|
||||
Error *local_err = NULL;
|
||||
|
||||
blk = blk_by_name(device);
|
||||
if (!blk) {
|
||||
error_setg(errp, "Device '%s' not found", device);
|
||||
return;
|
||||
}
|
||||
bs = blk_bs(blk);
|
||||
|
||||
bs = qmp_get_root_bs(device, errp);
|
||||
if (!bs) {
|
||||
error_setg(errp, "Device '%s' has no media", device);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1277,7 +1277,8 @@
|
||||
# @job-id: #optional identifier for the newly-created block job. If
|
||||
# omitted, the device name will be used. (Since 2.7)
|
||||
#
|
||||
# @device: the name of the device whose writes should be mirrored.
|
||||
# @device: The device name or node-name of a root node whose writes should be
|
||||
# mirrored.
|
||||
#
|
||||
# @target: the id or node-name of the block device to mirror to. This mustn't be
|
||||
# attached to guest.
|
||||
|
@ -1747,7 +1747,8 @@ Arguments:
|
||||
|
||||
- "job-id": Identifier for the newly-created block job. If omitted,
|
||||
the device name will be used. (json-string, optional)
|
||||
- "device": device name to operate on (json-string)
|
||||
- "device": The device name or node-name of a root node whose writes should be
|
||||
mirrored (json-string)
|
||||
- "target": device name to mirror to (json-string)
|
||||
- "replaces": the block driver node name to replace when finished
|
||||
(json-string, optional)
|
||||
|
Loading…
Reference in New Issue
Block a user