[libvirt] [PATCH] docs: rng: make newly introduced features in domcaps optional
by Nikolay Shirokovskiy
<features> was introduced in 24f17f55 and have only gic child element
at the time. Thus from backcompat POV the other children are optional.
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy(a)virtuozzo.com>
---
docs/schemas/domaincaps.rng | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/docs/schemas/domaincaps.rng b/docs/schemas/domaincaps.rng
index 7d80693..2258365 100644
--- a/docs/schemas/domaincaps.rng
+++ b/docs/schemas/domaincaps.rng
@@ -183,9 +183,15 @@
<element name='features'>
<interleave>
<ref name='gic'/>
- <ref name='vmcoreinfo'/>
- <ref name='vmgenid'/>
- <ref name='sev'/>
+ <optional>
+ <ref name='vmcoreinfo'/>
+ </optional>
+ <optional>
+ <ref name='vmgenid'/>
+ </optional>
+ <optional>
+ <ref name='sev'/>
+ </optional>
</interleave>
</element>
</define>
--
1.8.3.1
5 years, 9 months
[libvirt] [PATCH] conf: Introduce virDomainDefCputuneValidate helper
by Suyang Chen
move all the def->cputune 'period must be in range'
and 'quota must be in range' errors into two macros
and called in virDomainDefCputuneValidate function
and have it called from virDomainDefValidateInternal function
Reason: Two macros maybe easier to debug and change in the future
Solve the first two small tasks in bitsizedtask:
"Move validation checks out of domain XML parsing"
Signed-off-by: Suyang Chen <dawson0xff(a)gmail.com>
---
src/conf/domain_conf.c | 109 +++++++++++++++--------------------------
1 file changed, 40 insertions(+), 69 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 356a9ae56c..c159cffa05 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -6565,6 +6565,43 @@ virDomainDefLifecycleActionValidate(const virDomainDef *def)
return 0;
}
+#define CPUTUNE_VALIDATE_PERIOD(name) \
+ if (def->cputune.name > 0 && \
+ (def->cputune.name < 1000 || def->cputune.name > 1000000)) { \
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, \
+ _("Value of cputune '%s' must be in range " \
+ "[1000, 1000000]"), #name); \
+ return -1; \
+ }
+
+#define CPUTUNE_VALIDATE_QUOTA(name) \
+ if (def->cputune.name > 0 && \
+ (def->cputune.name < 1000 || \
+ def->cputune.name > 18446744073709551LL)) { \
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, \
+ _("Value of cputune '%s' must be in range " \
+ "[1000, 18446744073709551]"), #name); \
+ return -1; \
+ }
+
+static int
+virDomainDefCputuneValidate(const virDomainDef *def)
+{
+ CPUTUNE_VALIDATE_PERIOD(period)
+ CPUTUNE_VALIDATE_PERIOD(global_period)
+ CPUTUNE_VALIDATE_PERIOD(emulator_period)
+ CPUTUNE_VALIDATE_PERIOD(iothread_period)
+
+ CPUTUNE_VALIDATE_QUOTA(quota)
+ CPUTUNE_VALIDATE_QUOTA(global_quota)
+ CPUTUNE_VALIDATE_QUOTA(emulator_quota)
+ CPUTUNE_VALIDATE_QUOTA(iothread_quota)
+
+ return 0;
+}
+
+#undef CPUTUNE_VALIDATE_PERIOD
+#undef CPUTUNE_VALIDATE_QUOTA
static int
virDomainDefMemtuneValidate(const virDomainDef *def)
@@ -6685,6 +6722,9 @@ virDomainDefValidateInternal(const virDomainDef *def,
if (virDomainDefOSValidate(def, xmlopt) < 0)
return -1;
+ if (virDomainDefCputuneValidate(def) < 0)
+ return -1;
+
return 0;
}
@@ -19673,14 +19713,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
- if (def->cputune.period > 0 &&
- (def->cputune.period < 1000 || def->cputune.period > 1000000)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Value of cputune period must be in range "
- "[1000, 1000000]"));
- goto error;
- }
-
if (virXPathLongLong("string(./cputune/quota[1])", ctxt,
&def->cputune.quota) < -1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -19688,15 +19720,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
- if (def->cputune.quota > 0 &&
- (def->cputune.quota < 1000 ||
- def->cputune.quota > 18446744073709551LL)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Value of cputune quota must be in range "
- "[1000, 18446744073709551]"));
- goto error;
- }
-
if (virXPathULongLong("string(./cputune/global_period[1])", ctxt,
&def->cputune.global_period) < -1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -19704,14 +19727,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
- if (def->cputune.global_period > 0 &&
- (def->cputune.global_period < 1000 || def->cputune.global_period > 1000000)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Value of cputune global period must be in range "
- "[1000, 1000000]"));
- goto error;
- }
-
if (virXPathLongLong("string(./cputune/global_quota[1])", ctxt,
&def->cputune.global_quota) < -1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -19719,15 +19734,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
- if (def->cputune.global_quota > 0 &&
- (def->cputune.global_quota < 1000 ||
- def->cputune.global_quota > 18446744073709551LL)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Value of cputune global quota must be in range "
- "[1000, 18446744073709551]"));
- goto error;
- }
-
if (virXPathULongLong("string(./cputune/emulator_period[1])", ctxt,
&def->cputune.emulator_period) < -1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -19735,15 +19741,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
- if (def->cputune.emulator_period > 0 &&
- (def->cputune.emulator_period < 1000 ||
- def->cputune.emulator_period > 1000000)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Value of cputune emulator_period must be in range "
- "[1000, 1000000]"));
- goto error;
- }
-
if (virXPathLongLong("string(./cputune/emulator_quota[1])", ctxt,
&def->cputune.emulator_quota) < -1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -19751,14 +19748,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
- if (def->cputune.emulator_quota > 0 &&
- (def->cputune.emulator_quota < 1000 ||
- def->cputune.emulator_quota > 18446744073709551LL)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Value of cputune emulator_quota must be in range "
- "[1000, 18446744073709551]"));
- goto error;
- }
if (virXPathULongLong("string(./cputune/iothread_period[1])", ctxt,
&def->cputune.iothread_period) < -1) {
@@ -19767,15 +19756,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
- if (def->cputune.iothread_period > 0 &&
- (def->cputune.iothread_period < 1000 ||
- def->cputune.iothread_period > 1000000)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Value of cputune iothread_period must be in range "
- "[1000, 1000000]"));
- goto error;
- }
-
if (virXPathLongLong("string(./cputune/iothread_quota[1])", ctxt,
&def->cputune.iothread_quota) < -1) {
virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -19783,15 +19763,6 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error;
}
- if (def->cputune.iothread_quota > 0 &&
- (def->cputune.iothread_quota < 1000 ||
- def->cputune.iothread_quota > 18446744073709551LL)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Value of cputune iothread_quota must be in range "
- "[1000, 18446744073709551]"));
- goto error;
- }
-
if ((n = virXPathNodeSet("./cputune/vcpupin", ctxt, &nodes)) < 0)
goto error;
--
2.20.1
5 years, 9 months
[libvirt] [PATCH] news: Document recent snapshot topological flag
by Eric Blake
A new API flag is news-worthy.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
I'll probably push this one as trivial in 24 hours, if it does not
get a review sooner.
docs/news.xml | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/docs/news.xml b/docs/news.xml
index 896700fa97..1973a0096d 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -82,6 +82,18 @@
chooses.
</description>
</change>
+ <change>
+ <summary>
+ snapshots: Topologically-sorted listing
+ </summary>
+ <description>
+ A new flag VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL is available
+ for the various snapshot listing APIs such as
+ virDomainSnapshotListAll(). For drivers that support the
+ flag, the listed snapshots are guaranteed to be sorted such
+ that parents occur before children.
+ </description>
+ </change>
</section>
<section title="Improvements">
</section>
--
2.20.1
5 years, 9 months
[libvirt] [PATCH 0/2] Remove --enable-test-coverage, promote 'make coverage'
by Cole Robinson
This is my follow up to my message here:
https://www.redhat.com/archives/libvir-list/2019-February/msg01213.html
This removes our custom ./configure --enable-test-coverage and
'make cov' targets in favor of gnulib's 'make coverage' which IMO
is much simpler to use. See the mail above for full explanation
Patch #2 adds some hacking.html docs, see that for some details
about gnulib's features here.
Cole Robinson (2):
configure: Remove --enable-test-coverage
docs: hacking: Add 'Code coverage reports' section
Makefile.am | 20 +++-----------------
configure.ac | 18 ------------------
docs/hacking.html.in | 29 +++++++++++++++++++++++++++++
examples/Makefile.am | 2 +-
src/Makefile.am | 3 +--
src/remote/Makefile.inc.am | 2 --
tests/Makefile.am | 2 --
tools/Makefile.am | 6 ------
8 files changed, 34 insertions(+), 48 deletions(-)
--
2.20.1
5 years, 9 months
[libvirt] [PATCH] docs: Consistent spacing in *GetXMLDesc functions
by Eric Blake
We copy-and-paste a lot of our docs, as evidenced by the number of
*GetXMLDesc() functions which had the same unusual indentation and
missing capital in the second sentence of the returns paragraph.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
Pushing under the trivial rule.
src/libvirt-domain-snapshot.c | 4 ++--
src/libvirt-domain.c | 12 ++++++------
src/libvirt-interface.c | 4 ++--
src/libvirt-network.c | 8 ++++----
src/libvirt-nwfilter.c | 8 ++++----
5 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/src/libvirt-domain-snapshot.c b/src/libvirt-domain-snapshot.c
index 23c0b84d9e..947547627a 100644
--- a/src/libvirt-domain-snapshot.c
+++ b/src/libvirt-domain-snapshot.c
@@ -254,8 +254,8 @@ virDomainSnapshotCreateXML(virDomainPtr domain,
* VIR_DOMAIN_SNAPSHOT_XML_SECURE; this flag is rejected on read-only
* connections.
*
- * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case
+ * of error. The caller must free() the returned value.
*/
char *
virDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index 072b92b717..be5b1f6740 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -2570,8 +2570,8 @@ virDomainGetControlInfo(virDomainPtr domain,
* XML might not validate against the schema, so it is mainly for
* internal use.
*
- * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case
+ * of error. The caller must free() the returned value.
*/
char *
virDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
@@ -2619,8 +2619,8 @@ virDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
* generates libvirt domain XML. The format of the native
* data is hypervisor dependent.
*
- * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case
+ * of error. The caller must free() the returned value.
*/
char *
virConnectDomainXMLFromNative(virConnectPtr conn,
@@ -2669,8 +2669,8 @@ virConnectDomainXMLFromNative(virConnectPtr conn,
* a native configuration file describing the domain.
* The format of the native data is hypervisor dependent.
*
- * Returns a 0 terminated UTF-8 encoded native config datafile, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated UTF-8 encoded native config datafile, or
+ * NULL in case of error. The caller must free() the returned value.
*/
char *
virConnectDomainXMLToNative(virConnectPtr conn,
diff --git a/src/libvirt-interface.c b/src/libvirt-interface.c
index 69415293ed..7228ddca57 100644
--- a/src/libvirt-interface.c
+++ b/src/libvirt-interface.c
@@ -403,8 +403,8 @@ virInterfaceGetMACString(virInterfacePtr iface)
* is not set, the ip address and netmask will be the current live
* setting of the interface, not the settings from the config files.
*
- * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case
+ * of error. The caller must free() the returned value.
*/
char *
virInterfaceGetXMLDesc(virInterfacePtr iface, unsigned int flags)
diff --git a/src/libvirt-network.c b/src/libvirt-network.c
index 9f9e0ddaf8..d46a7d5c47 100644
--- a/src/libvirt-network.c
+++ b/src/libvirt-network.c
@@ -783,8 +783,8 @@ virNetworkGetUUIDString(virNetworkPtr network, char *buf)
* VIR_NETWORK_XML_INACTIVE, then the expansion of virtual interfaces is
* not performed.
*
- * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case
+ * of error. The caller must free() the returned value.
*/
char *
virNetworkGetXMLDesc(virNetworkPtr network, unsigned int flags)
@@ -820,8 +820,8 @@ virNetworkGetXMLDesc(virNetworkPtr network, unsigned int flags)
* Provides a bridge interface name to which a domain may connect
* a network interface in order to join the network.
*
- * Returns a 0 terminated interface name, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated interface name, or NULL in case of
+ * error. The caller must free() the returned value.
*/
char *
virNetworkGetBridgeName(virNetworkPtr network)
diff --git a/src/libvirt-nwfilter.c b/src/libvirt-nwfilter.c
index 3da85adc9e..16eceb6525 100644
--- a/src/libvirt-nwfilter.c
+++ b/src/libvirt-nwfilter.c
@@ -453,8 +453,8 @@ virNWFilterUndefine(virNWFilterPtr nwfilter)
* Provide an XML description of the network filter. The description may be
* reused later to redefine the network filter with virNWFilterCreateXML().
*
- * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case
+ * of error. The caller must free() the returned value.
*/
char *
virNWFilterGetXMLDesc(virNWFilterPtr nwfilter, unsigned int flags)
@@ -770,8 +770,8 @@ virNWFilterBindingDelete(virNWFilterBindingPtr binding)
* Provide an XML description of the network filter. The description may be
* reused later to redefine the network filter with virNWFilterCreateXML().
*
- * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
- * the caller must free() the returned value.
+ * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case
+ * of error. The caller must free() the returned value.
*/
char *
virNWFilterBindingGetXMLDesc(virNWFilterBindingPtr binding, unsigned int flags)
--
2.20.1
5 years, 9 months
[libvirt] [PATCH v2] test: storage: Fill in default vol types for every pool
by Cole Robinson
Fill in a default volume type for every pool type, as reported
by the VolGetInfo API. Now that we cover the whole enum, report
an error for invalid values.
Signed-off-by: Cole Robinson <crobinso(a)redhat.com>
---
v2: Use virReportEnumRangeError and handle the error in the caller
index ef754658f3..08970f8d6c 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -5164,13 +5164,28 @@ testStorageVolDelete(virStorageVolPtr vol,
static int
testStorageVolumeTypeForPool(int pooltype)
{
- switch (pooltype) {
- case VIR_STORAGE_POOL_DIR:
- case VIR_STORAGE_POOL_FS:
- case VIR_STORAGE_POOL_NETFS:
- return VIR_STORAGE_VOL_FILE;
- default:
- return VIR_STORAGE_VOL_BLOCK;
+ switch ((virStoragePoolType) pooltype) {
+ case VIR_STORAGE_POOL_DIR:
+ case VIR_STORAGE_POOL_FS:
+ case VIR_STORAGE_POOL_NETFS:
+ case VIR_STORAGE_POOL_VSTORAGE:
+ return VIR_STORAGE_VOL_FILE;
+ case VIR_STORAGE_POOL_SHEEPDOG:
+ case VIR_STORAGE_POOL_ISCSI_DIRECT:
+ case VIR_STORAGE_POOL_GLUSTER:
+ case VIR_STORAGE_POOL_RBD:
+ return VIR_STORAGE_VOL_NETWORK;
+ case VIR_STORAGE_POOL_LOGICAL:
+ case VIR_STORAGE_POOL_DISK:
+ case VIR_STORAGE_POOL_MPATH:
+ case VIR_STORAGE_POOL_ISCSI:
+ case VIR_STORAGE_POOL_SCSI:
+ case VIR_STORAGE_POOL_ZFS:
+ return VIR_STORAGE_VOL_BLOCK;
+ case VIR_STORAGE_POOL_LAST:
+ default:
+ virReportEnumRangeError(virStoragePoolType, pooltype);
+ return -1;
}
}
@@ -5193,7 +5208,8 @@ testStorageVolGetInfo(virStorageVolPtr vol,
goto cleanup;
memset(info, 0, sizeof(*info));
- info->type = testStorageVolumeTypeForPool(def->type);
+ if ((info->type = testStorageVolumeTypeForPool(def->type)) < 0)
+ goto cleanup;
info->capacity = privvol->target.capacity;
info->allocation = privvol->target.allocation;
ret = 0;
--
2.20.1
5 years, 9 months
[libvirt] [PATCH] test: Drop a few unnecessary <source> elements added by virt-install
by Erik Skultety
The <source mode='bind'/> elements were added in commit 4d7ea75e and
apparently generated by virt-install, but since the @path attribute
is missing, the element will never be formatted back to the XML which the
libvirt-go-xml-check expects, so it fails.
The lack of the @path attribute is not a problem in general, because we
can autogenerate the path in certain cases, so qemuxml2argvtest will
always be happy, but XML formatting is a different thing.
Therefore, drop these generated elements, as they're unnecessary for the
purposes of qemuxml2argvtest and won't mess with the XML formatting
test in Go.
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
Additionally, I could introduce a xml2xml test here, but I already spent enough
time hunting the CI failure down between libvirt and libvirt-go so this was the
simplest solution which doesn't require any extra work.
tests/qemuxml2argvdata/aarch64-virt-graphics.xml | 1 -
tests/qemuxml2argvdata/ppc64-pseries-graphics.xml | 1 -
tests/qemuxml2argvdata/x86_64-pc-graphics.xml | 1 -
tests/qemuxml2argvdata/x86_64-q35-graphics.xml | 1 -
4 files changed, 4 deletions(-)
diff --git a/tests/qemuxml2argvdata/aarch64-virt-graphics.xml b/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
index 95aef91beb..2559cd7950 100644
--- a/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
+++ b/tests/qemuxml2argvdata/aarch64-virt-graphics.xml
@@ -34,7 +34,6 @@
</interface>
<console type="pty"/>
<channel type="unix">
- <source mode="bind"/>
<target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>
<input type="tablet" bus="usb"/>
diff --git a/tests/qemuxml2argvdata/ppc64-pseries-graphics.xml b/tests/qemuxml2argvdata/ppc64-pseries-graphics.xml
index 3d54a4f171..bab115f666 100644
--- a/tests/qemuxml2argvdata/ppc64-pseries-graphics.xml
+++ b/tests/qemuxml2argvdata/ppc64-pseries-graphics.xml
@@ -28,7 +28,6 @@
</interface>
<console type="pty"/>
<channel type="unix">
- <source mode="bind"/>
<target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>
<input type="tablet" bus="usb"/>
diff --git a/tests/qemuxml2argvdata/x86_64-pc-graphics.xml b/tests/qemuxml2argvdata/x86_64-pc-graphics.xml
index 03745eabf4..8d8fc14f9f 100644
--- a/tests/qemuxml2argvdata/x86_64-pc-graphics.xml
+++ b/tests/qemuxml2argvdata/x86_64-pc-graphics.xml
@@ -40,7 +40,6 @@
</interface>
<console type="pty"/>
<channel type="unix">
- <source mode="bind"/>
<target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>
<input type="tablet" bus="usb"/>
diff --git a/tests/qemuxml2argvdata/x86_64-q35-graphics.xml b/tests/qemuxml2argvdata/x86_64-q35-graphics.xml
index 56db898e64..a93b49e480 100644
--- a/tests/qemuxml2argvdata/x86_64-q35-graphics.xml
+++ b/tests/qemuxml2argvdata/x86_64-q35-graphics.xml
@@ -40,7 +40,6 @@
</interface>
<console type="pty"/>
<channel type="unix">
- <source mode="bind"/>
<target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>
<input type="tablet" bus="usb"/>
--
2.20.1
5 years, 9 months
[libvirt] [PATCH 0/3] virFileWrapper: Couple of small improvements
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (3):
tests: Turn virFileWrapperAddPrefix to void
virFileWrapper: Use VIR_AUTOFREE()
tests: Call virFileWrapperClearPrefixes() for tests using
virFileWrapper
tests/qemufirmwaretest.c | 2 +
tests/qemuxml2argvtest.c | 1 +
tests/virfilewrapper.c | 94 +++++++++++-----------------------------
tests/virfilewrapper.h | 2 +-
4 files changed, 29 insertions(+), 70 deletions(-)
--
2.19.2
5 years, 9 months
[libvirt] [PATCH 0/5] qemu_hotplug: Fix a rare race condition when detaching a device twice
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (5):
qemu_hotplug: Properly check for qemuMonitorDelDevice retval
qemu_hotplug: Introduce and use qemuDomainDeleteDevice
DO NOT APPLY: Simple reproducer
DO NOT APPLY: Revert simple reproducer
qemu_hotplug: Fix a rare race condition when detaching a device twice
src/qemu/qemu_domain.h | 1 +
src/qemu/qemu_hotplug.c | 99 ++++++++++++++++++++++++++++++++---------
2 files changed, 79 insertions(+), 21 deletions(-)
--
2.19.2
5 years, 9 months