VIR_FREE(priv->blockJobError);
virStorageSourceFree(priv->migrSource);
+ VIR_FREE(priv->qomName);
}
static virClassPtr qemuDomainStorageSourcePrivateClass;
}
+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, "<qom name='%s'/>\n", priv->qomName);
+
+ return 0;
+}
+
+
static void
qemuDomainObjPrivateXMLFormatVcpus(virBufferPtr buf,
virDomainDefPtr def)
.alloc = qemuDomainObjPrivateAlloc,
.free = qemuDomainObjPrivateFree,
.diskNew = qemuDomainDiskPrivateNew,
+ .diskParse = qemuDomainDiskPrivateParse,
+ .diskFormat = qemuDomainDiskPrivateFormat,
.vcpuNew = qemuDomainVcpuPrivateNew,
.chrSourceNew = qemuDomainChrSourcePrivateNew,
.vsockNew = qemuDomainVsockPrivateNew,
/* 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) \
<target dev='vdb' bus='virtio'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
+ <privateData>
+ <qom name='virtio-disk1/virtio-backend'/>
+ </privateData>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>