Make the helper reopening a blockdev for access pick the correct layer
to reopen based on what is currently in use.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_block.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index c62f8fe5f3..0d676f71b0 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -3192,8 +3192,19 @@ qemuBlockReopenAccess(virDomainObj *vm,
src->readonly = readonly;
/* from now on all error paths must use 'goto cleanup' */
- if (!(srcprops = qemuBlockStorageSourceGetFormatProps(src, src->backingStore)))
- return -1;
+ /* based on which is the current 'effecitve' layer we must reopen the
+ * appropriate blockdev */
+ if (qemuBlockStorageSourceGetFormatNodename(src)) {
+ if (!(srcprops = qemuBlockStorageSourceGetFormatProps(src,
src->backingStore)))
+ return -1;
+ } else if (qemuBlockStorageSourceGetSliceNodename(src)) {
+ if (!(srcprops = qemuBlockStorageSourceGetBlockdevStorageSliceProps(src, true)))
+ return -1;
+ } else {
+ if (!(srcprops = qemuBlockStorageSourceGetBackendProps(src,
+
QEMU_BLOCK_STORAGE_SOURCE_BACKEND_PROPS_EFFECTIVE_NODE)))
+ return -1;
+ }
if (virJSONValueArrayAppend(reopenoptions, &srcprops) < 0)
return -1;
--
2.42.0