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