diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 6e51f590cd..4ea12c3fd7 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -1065,6 +1065,7 @@ qemuDomainDiskPrivateDispose(void *obj) VIR_FREE(priv->blockJobError); virStorageSourceFree(priv->migrSource); + VIR_FREE(priv->qomName); } static virClassPtr qemuDomainStorageSourcePrivateClass; @@ -2123,6 +2124,30 @@ qemuStorageSourcePrivateDataFormat(virStorageSourcePtr src, } +static int +qemuDomainDiskPrivateParse(xmlXPathContextPtr ctxt, + virDomainDiskDefPtr disk) +{ + qemuDomainDiskPrivatePtr priv = QEMU_DOMAIN_DISK_PRIVATE(disk); + + priv->qomName = virXPathString("string(./qom/@name)", ctxt); + + return 0; +} + + +static int +qemuDomainDiskPrivateFormat(virDomainDiskDefPtr disk, + virBufferPtr buf) +{ + qemuDomainDiskPrivatePtr priv = QEMU_DOMAIN_DISK_PRIVATE(disk); + + virBufferEscapeString(buf, "\n", priv->qomName); + + return 0; +} + + static void qemuDomainObjPrivateXMLFormatVcpus(virBufferPtr buf, virDomainDefPtr def) @@ -2973,6 +2998,8 @@ virDomainXMLPrivateDataCallbacks virQEMUDriverPrivateDataCallbacks = { .alloc = qemuDomainObjPrivateAlloc, .free = qemuDomainObjPrivateFree, .diskNew = qemuDomainDiskPrivateNew, + .diskParse = qemuDomainDiskPrivateParse, + .diskFormat = qemuDomainDiskPrivateFormat, .vcpuNew = qemuDomainVcpuPrivateNew, .chrSourceNew = qemuDomainChrSourcePrivateNew, .vsockNew = qemuDomainVsockPrivateNew, diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 5dcbdfbbe1..2afc6b454a 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -396,6 +396,8 @@ struct _qemuDomainDiskPrivate { /* information about the device */ bool tray; /* device has tray */ bool removable; /* device media can be removed/changed */ + + char *qomName; /* QOM path of the disk (also refers to the block backend) */ }; # define QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(src) \ diff --git a/tests/qemustatusxml2xmldata/modern-in.xml b/tests/qemustatusxml2xmldata/modern-in.xml index c9f5c4e76a..24e9fd9f6d 100644 --- a/tests/qemustatusxml2xmldata/modern-in.xml +++ b/tests/qemustatusxml2xmldata/modern-in.xml @@ -333,6 +333,9 @@
+ + +