diff options
author | Max Reitz <mreitz@redhat.com> | 2016-06-10 20:57:46 +0200 |
---|---|---|
committer | Max Reitz <mreitz@redhat.com> | 2016-06-16 15:20:37 +0200 |
commit | 9bd910e2cbe413ab5927068bf189e929cb6790bc (patch) | |
tree | 3fc6200baa141e7a361d3fe927be7d826ea90b22 /blockdev.c | |
parent | 87cd3d20e1e9b31315bf416d6e720cf7e3eb2ea9 (diff) | |
download | qemu-9bd910e2cbe413ab5927068bf189e929cb6790bc.zip qemu-9bd910e2cbe413ab5927068bf189e929cb6790bc.tar.gz qemu-9bd910e2cbe413ab5927068bf189e929cb6790bc.tar.bz2 |
block: Allow replacement of a BDS by its overlay
change_parent_backing_link() asserts that the BDS to be replaced is not
used as a backing file. However, we may want to replace a BDS by its
overlay in which case that very link should not be redirected.
For instance, when doing a sync=none drive-mirror operation, we may have
the following BDS/BB forest before block job completion:
target
base <- source <- BlockBackend
During job completion, we want to establish the source BDS as the
target's backing node:
target
|
v
base <- source <- BlockBackend
This makes the target a valid replacement for the source:
target <- BlockBackend
|
v
base <- source
Without this modification to change_parent_backing_link() we have to
inject the target into the graph before the source is its backing node,
thus temporarily creating a wrong graph:
target <- BlockBackend
base <- source
Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-id: 20160610185750.30956-2-mreitz@redhat.com
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'blockdev.c')
0 files changed, 0 insertions, 0 deletions