The code setting the nodenames needs to use the 'true' nodename of the
format layer.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_domain.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 1b2f09a316..d8d3a17e55 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2001,7 +2001,7 @@ qemuStorageSourcePrivateDataParse(xmlXPathContextPtr ctxt,
xmlNodePtr nbdkitnode = NULL;
qemuBlockStorageSourceSetStorageNodename(src,
virXPathString("string(./nodenames/nodename[@type='storage']/@name)",
ctxt));
- src->nodeformat =
virXPathString("string(./nodenames/nodename[@type='format']/@name)",
ctxt);
+ qemuBlockStorageSourceSetFormatNodename(src,
virXPathString("string(./nodenames/nodename[@type='format']/@name)",
ctxt));
src->tlsAlias = virXPathString("string(./objects/TLSx509/@alias)",
ctxt);
if (src->sliceStorage)
@@ -2112,7 +2112,7 @@ qemuStorageSourcePrivateDataFormat(virStorageSource *src,
g_auto(virBuffer) fdsetsChildBuf = VIR_BUFFER_INIT_CHILD(buf);
virBufferEscapeString(&nodenamesChildBuf, "<nodename
type='storage' name='%s'/>\n",
qemuBlockStorageSourceGetStorageNodename(src));
- virBufferEscapeString(&nodenamesChildBuf, "<nodename
type='format' name='%s'/>\n", src->nodeformat);
+ virBufferEscapeString(&nodenamesChildBuf, "<nodename
type='format' name='%s'/>\n",
qemuBlockStorageSourceGetFormatNodename(src));
if (src->sliceStorage)
virBufferEscapeString(&nodenamesChildBuf, "<nodename
type='slice-storage' name='%s'/>\n",
@@ -2817,8 +2817,9 @@ qemuDomainVirStorageSourceFindByNodeName(virStorageSource *top,
for (tmp = top; virStorageSourceIsBacking(tmp); tmp = tmp->backingStore) {
const char *nodestorage = qemuBlockStorageSourceGetStorageNodename(tmp);
+ const char *nodeformat = qemuBlockStorageSourceGetFormatNodename(tmp);
- if ((tmp->nodeformat && STREQ(tmp->nodeformat, nodeName)) ||
+ if ((nodeformat && STREQ(nodeformat, nodeName)) ||
(nodestorage && STREQ(nodestorage, nodeName)))
return tmp;
}
@@ -11144,10 +11145,11 @@ qemuDomainPrepareStorageSourceBlockdevNodename(virDomainDiskDef
*disk,
virQEMUDriverConfig *cfg)
{
char *nodestorage = g_strdup_printf("%s-storage", nodenameprefix);
+ char *nodeformat = g_strdup_printf("%s-format", nodenameprefix);
/* qemuBlockStorageSourceSetStorageNodename steals 'nodestorage' */
qemuBlockStorageSourceSetStorageNodename(src, nodestorage);
- src->nodeformat = g_strdup_printf("%s-format", nodenameprefix);
+ qemuBlockStorageSourceSetFormatNodename(src, nodeformat);
if (qemuBlockStorageSourceNeedsStorageSliceLayer(src))
src->sliceStorage->nodename =
g_strdup_printf("libvirt-%u-slice-sto", src->id);
@@ -11161,8 +11163,7 @@ qemuDomainPrepareStorageSourceBlockdevNodename(virDomainDiskDef
*disk,
qemuDomainPrepareStorageSourceConfig(src, cfg);
qemuDomainPrepareDiskSourceData(disk, src);
- if (qemuDomainSecretStorageSourcePrepareEncryption(priv, src,
- src->nodeformat) < 0)
+ if (qemuDomainSecretStorageSourcePrepareEncryption(priv, src, nodeformat) < 0)
return -1;
if (!qemuDomainPrepareStorageSourceNbdkit(src, cfg, nodestorage, priv)) {
@@ -11698,7 +11699,7 @@ qemuDomainInitializePflashStorageSource(virDomainObj *vm,
pflash0->path = g_strdup(def->os.loader->path);
pflash0->readonly = false;
virTristateBoolToBool(def->os.loader->readonly, &pflash0->readonly);
- pflash0->nodeformat = g_strdup("libvirt-pflash0-format");
+ qemuBlockStorageSourceSetFormatNodename(pflash0,
g_strdup("libvirt-pflash0-format"));
qemuBlockStorageSourceSetStorageNodename(pflash0,
g_strdup("libvirt-pflash0-storage"));
if (def->os.loader->nvram) {
--
2.41.0