mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 11:35:19 +00:00
conf: Introduce 'shareBacking' for <transient> disks
In case the user wants to share the disk image between multiple VMs the qemu driver needs to hotplug such disks to instantiate the backends. Since that doesn't work for all disk configs add a switch to force this behaviour. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
aa6e33edcc
commit
be63e8703c
@ -3135,6 +3135,12 @@ paravirtualized driver is specified via the ``disk`` element.
|
||||
disk transient prevents the domain from participating in migration,
|
||||
snapshots, or blockjobs. Only supported in vmx hypervisor
|
||||
(:since:`Since 0.9.5`) and ``qemu`` hypervisor (:since:`Since 6.9.0`).
|
||||
|
||||
In cases where the source image of the ``<transient/>`` disk is supposed to
|
||||
be shared between multiple concurrently running VMs the optional
|
||||
``shareBacking`` attribute should be set to ``yes``. Note that hypervisor
|
||||
drivers may need to hotplug such disk and thus it works only with
|
||||
configurations supporting hotplug. :since:`Since 7.4.0`
|
||||
``serial``
|
||||
If present, this specify serial number of virtual hard drive. For example, it
|
||||
may look like ``<serial>WD-WMAP9A966149</serial>``. Not supported for
|
||||
|
@ -1429,6 +1429,11 @@
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="transient">
|
||||
<optional>
|
||||
<attribute name="shareBacking">
|
||||
<ref name='virYesNo'/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<empty/>
|
||||
</element>
|
||||
</optional>
|
||||
|
@ -9047,6 +9047,7 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
|
||||
xmlNodePtr blockioNode;
|
||||
xmlNodePtr driverNode;
|
||||
xmlNodePtr mirrorNode;
|
||||
xmlNodePtr transientNode;
|
||||
g_autoptr(virStorageSource) src = NULL;
|
||||
|
||||
if (!(src = virDomainDiskDefParseSourceXML(xmlopt, node, ctxt, flags)))
|
||||
@ -9155,9 +9156,15 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt,
|
||||
}
|
||||
}
|
||||
|
||||
if (virXPathNode("./transient", ctxt))
|
||||
if ((transientNode = virXPathNode("./transient", ctxt))) {
|
||||
def->transient = true;
|
||||
|
||||
if (virXMLPropTristateBool(transientNode, "shareBacking",
|
||||
VIR_XML_PROP_NONE,
|
||||
&def->transientShareBacking) < 0)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (virDomainDiskDefIotuneParse(def, ctxt) < 0)
|
||||
return NULL;
|
||||
|
||||
@ -23551,8 +23558,12 @@ virDomainDiskDefFormat(virBuffer *buf,
|
||||
virBufferAddLit(buf, "<readonly/>\n");
|
||||
if (def->src->shared)
|
||||
virBufferAddLit(buf, "<shareable/>\n");
|
||||
if (def->transient)
|
||||
virBufferAddLit(buf, "<transient/>\n");
|
||||
if (def->transient) {
|
||||
virBufferAddLit(buf, "<transient");
|
||||
if (def->transientShareBacking == VIR_TRISTATE_BOOL_YES)
|
||||
virBufferAddLit(buf, " shareBacking='yes'");
|
||||
virBufferAddLit(buf, "/>\n");
|
||||
}
|
||||
virBufferEscapeString(buf, "<serial>%s</serial>\n", def->serial);
|
||||
virBufferEscapeString(buf, "<wwn>%s</wwn>\n", def->wwn);
|
||||
virBufferEscapeString(buf, "<vendor>%s</vendor>\n", def->vendor);
|
||||
|
@ -575,6 +575,7 @@ struct _virDomainDiskDef {
|
||||
unsigned int snapshot; /* virDomainSnapshotLocation, snapshot_conf.h */
|
||||
virDomainStartupPolicy startupPolicy;
|
||||
bool transient;
|
||||
virTristateBool transientShareBacking;
|
||||
virDomainDeviceInfo info;
|
||||
virTristateBool rawio;
|
||||
virDomainDeviceSGIO sgio;
|
||||
|
Loading…
Reference in New Issue
Block a user