From: Peter Krempa Date: Wed, 22 Nov 2023 15:58:12 +0000 (+0100) Subject: qemuBlockReopenAccess: prepare for removal of 'raw' format layer X-Git-Tag: v9.10.0-rc1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ec0e28e876b17df9;p=thirdparty%2Flibvirt.git qemuBlockReopenAccess: prepare for removal of 'raw' format layer 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 Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c index 2555db1778..8b73d93962 100644 --- a/src/qemu/qemu_block.c +++ b/src/qemu/qemu_block.c @@ -3202,8 +3202,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;