[libvirt] [PATCH] qemu: Fix typo pci-extender-bus -> pci-expander-bus
by Andrea Bolognani
---
Pushed as trivial.
src/qemu/qemu_domain_address.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
index 883264a..f42e7c0 100644
--- a/src/qemu/qemu_domain_address.c
+++ b/src/qemu/qemu_domain_address.c
@@ -1382,7 +1382,7 @@ qemuDomainAddressFindNewBusNr(virDomainDefPtr def)
* bus and busNr of the next highest bus for the guest to assign a
* unique bus number to each PCI bus that is a child of this
* bus. Each PCI controller. On top of this, the pxb device (which
- * implements the pci-extender-bus) includes a pci-bridge within
+ * implements the pci-expander-bus) includes a pci-bridge within
* it, and that bridge also uses one bus number (so each pxb device
* requires at least 2 bus numbers).
*
--
2.7.4
8 years, 5 months
[libvirt] [PATCH] virsh migrate: Fix positional parameters
by Jiri Denemark
Thanks to our smart option parser which automatically assigns positional
parameters the following (previously working) command fails:
virsh migrate test qemu+ssh://1.2.3.4/system tcp://1.2.3.4/
error: invalid argument: Unsupported compression method
'tcp://1.2.3.4/'
We need to make sure new options are added at the end of the list rather
than where they logically belong.
Reported by Brian Rak.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
tools/virsh-domain.c | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 02be58f..19c40b3 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -9792,26 +9792,6 @@ static const vshCmdOptDef opts_migrate[] = {
.type = VSH_OT_BOOL,
.help = N_("compress repeated pages during live migration")
},
- {.name = "comp-methods",
- .type = VSH_OT_STRING,
- .help = N_("comma separated list of compression methods to be used")
- },
- {.name = "comp-mt-level",
- .type = VSH_OT_INT,
- .help = N_("compress level for multithread compression")
- },
- {.name = "comp-mt-threads",
- .type = VSH_OT_INT,
- .help = N_("number of compression threads for multithread compression")
- },
- {.name = "comp-mt-dthreads",
- .type = VSH_OT_INT,
- .help = N_("number of decompression threads for multithread compression")
- },
- {.name = "comp-xbzrle-cache",
- .type = VSH_OT_INT,
- .help = N_("page cache size for xbzrle compression")
- },
{.name = "auto-converge",
.type = VSH_OT_BOOL,
.help = N_("force convergence during live migration")
@@ -9873,6 +9853,26 @@ static const vshCmdOptDef opts_migrate[] = {
.type = VSH_OT_INT,
.help = N_("port to use by target server for incoming disks migration")
},
+ {.name = "comp-methods",
+ .type = VSH_OT_STRING,
+ .help = N_("comma separated list of compression methods to be used")
+ },
+ {.name = "comp-mt-level",
+ .type = VSH_OT_INT,
+ .help = N_("compress level for multithread compression")
+ },
+ {.name = "comp-mt-threads",
+ .type = VSH_OT_INT,
+ .help = N_("number of compression threads for multithread compression")
+ },
+ {.name = "comp-mt-dthreads",
+ .type = VSH_OT_INT,
+ .help = N_("number of decompression threads for multithread compression")
+ },
+ {.name = "comp-xbzrle-cache",
+ .type = VSH_OT_INT,
+ .help = N_("page cache size for xbzrle compression")
+ },
{.name = NULL}
};
--
2.9.0
8 years, 5 months
[libvirt] [PATCH] conf: limit chassisNr, and busNr to a minimum value of 1, not 0
by Laine Stump
In the case of chassisNr (used to set chassis_nr of a pci-bridge
controller), 0 is reserved for / used by the pci[e]-root bus. In the
base of busNr, a value of 0 would mean that the root bus had no places
available to plug in new buses, including the pxb itself (the
documentation I wrote for pxb even noted the limit of busNr as 1.254).
NB: oddly, the "chassis" attribute, which is used for pcie-root-port
and pcie-switch-downstream-port *can* be set to 0, since it's the
combination of {chassis, slot} that needs to be unique, not chassis by
itself (and slot 0 of pcie-root is reserved, while pcie-*-port can use
*only* slot 0).
This resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1342962
---
docs/formatdomain.html.in | 2 +-
src/conf/domain_conf.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index d181ffa..88db3bc 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -3277,7 +3277,7 @@
control QEMU's "chassis_nr" option for the pci-bridge device
(normally libvirt automatically sets this to the same value as
the index attribute of the pci controller). If set, chassisNr
- must be between 0 and 255.
+ must be between 1 and 255.
</dd>
<dt><code>chassis</code></dt>
<dd>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 23ca236..9a6610b 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8426,11 +8426,11 @@ virDomainControllerDefParseXML(xmlNodePtr node,
chassisNr);
goto error;
}
- if (def->opts.pciopts.chassisNr < 0 ||
+ if (def->opts.pciopts.chassisNr < 1 ||
def->opts.pciopts.chassisNr > 255) {
virReportError(VIR_ERR_XML_ERROR,
_("PCI controller chassisNr '%s' out of range "
- "- must be 0-255"),
+ "- must be 1-255"),
chassisNr);
goto error;
}
@@ -8477,11 +8477,11 @@ virDomainControllerDefParseXML(xmlNodePtr node,
busNr);
goto error;
}
- if (def->opts.pciopts.busNr < 0 ||
+ if (def->opts.pciopts.busNr < 1 ||
def->opts.pciopts.busNr > 254) {
virReportError(VIR_ERR_XML_ERROR,
_("PCI controller busNr '%s' out of range "
- "- must be 0-254"),
+ "- must be 1-254"),
busNr);
goto error;
}
--
2.5.5
8 years, 5 months
[libvirt] [PATCH 1/1] perf: add more perf events support
by Qiaowei Ren
With current perf framework, this patch adds support to more perf
events, including cache missing, cache peference, cpu cycles,
instrction, etc..
Signed-off-by: Qiaowei Ren <qiaowei.ren(a)intel.com>
---
include/libvirt/libvirt-domain.h | 39 ++++++++++++++++++++++++
src/libvirt-domain.c | 8 +++++
src/qemu/qemu_driver.c | 23 +++++++-------
src/util/virperf.c | 65 +++++++++++++++++++++++++++++++++++++++-
src/util/virperf.h | 4 +++
5 files changed, 126 insertions(+), 13 deletions(-)
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index cba4fa5..99c4c48 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -1928,6 +1928,45 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats);
*/
# define VIR_PERF_PARAM_MBML "mbml"
+/**
+ * VIR_PERF_PARAM_CACHE_MISSES:
+ *
+ * Macro for typed parameter name that represents cache_misses perf
+ * event which can be used to measure the amount of cache missing by
+ * applications running on the platform. It corresponds to the
+ * "perf.cache_misses" field in the *Stats APIs.
+ */
+# define VIR_PERF_PARAM_CACHE_MISSES "cache_misses"
+
+/**
+ * VIR_PERF_PARAM_CACHE_REFERENCES:
+ *
+ * Macro for typed parameter name that represents cache_peferences
+ * perf event which can be used to measure the amount of cache hit
+ * by applications running on the platform. It corresponds to the
+ * "perf.cache_peferences" field in the *Stats APIs.
+ */
+# define VIR_PERF_PARAM_CACHE_REFERENCES "cache_peferences"
+
+/**
+ * VIR_PERF_PARAM_INSTRUCTIONS:
+ *
+ * Macro for typed parameter name that represents instructions perf
+ * event which can be used to measure the amount of instructions
+ * by applications running on the platform. It corresponds to the
+ * "perf.instructions" field in the *Stats APIs.
+ */
+# define VIR_PERF_PARAM_INSTRUCTIONS "instructions"
+
+/**
+ * VIR_PERF_PARAM_CPU_CYCLES:
+ *
+ * Macro for typed parameter name that represents cpu_cycles perf event
+ * which can be used to measure how many cycles one instruction needs.
+ * It corresponds to the "perf.cpu_cycles" field in the *Stats APIs.
+ */
+# define VIR_PERF_PARAM_CPU_CYCLES "cpu_cycles"
+
int virDomainGetPerfEvents(virDomainPtr dom,
virTypedParameterPtr *params,
int *nparams,
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index 73ae369..ef71b31 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -11452,6 +11452,14 @@ virConnectGetDomainCapabilities(virConnectPtr conn,
* "perf.mbml" - the amount of data (bytes/s) sent through the memory controller
* on the socket as unsigned long long. It is produced by mbml
* perf event.
+ * "perf.cache_misses" - the amount of cache missing as unsigned long long.
+ * It is produced by cache_misses perf event.
+ * "perf.cache_peferences" - the amount of cache hit as unsigned long long.
+ * It is produced by cache_peferences perf event.
+ * "perf.instructions" - the amount of instructions as unsigned long long.
+ * It is produced by instructions perf event.
+ * "perf.cpu_cycles" - the amount of cycles one instruction needs as unsigned
+ * long long. It is produced by cpu_cycles perf event.
*
* Note that entire stats groups or individual stat fields may be missing from
* the output in case they are not supported by the given hypervisor, are not
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 10d3e3d..d465ec5 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -9756,6 +9756,10 @@ qemuDomainSetPerfEvents(virDomainPtr dom,
VIR_PERF_PARAM_CMT, VIR_TYPED_PARAM_BOOLEAN,
VIR_PERF_PARAM_MBMT, VIR_TYPED_PARAM_BOOLEAN,
VIR_PERF_PARAM_MBML, VIR_TYPED_PARAM_BOOLEAN,
+ VIR_PERF_PARAM_CACHE_MISSES, VIR_TYPED_PARAM_BOOLEAN,
+ VIR_PERF_PARAM_CACHE_REFERENCES, VIR_TYPED_PARAM_BOOLEAN,
+ VIR_PERF_PARAM_INSTRUCTIONS, VIR_TYPED_PARAM_BOOLEAN,
+ VIR_PERF_PARAM_CPU_CYCLES, VIR_TYPED_PARAM_BOOLEAN,
NULL) < 0)
return -1;
@@ -19071,10 +19075,10 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver,
#undef QEMU_ADD_COUNT_PARAM
static int
-qemuDomainGetStatsPerfRdt(virPerfPtr perf,
- virPerfEventType type,
- virDomainStatsRecordPtr record,
- int *maxparams)
+qemuDomainGetStatsPerfOneEvent(virPerfPtr perf,
+ virPerfEventType type,
+ virDomainStatsRecordPtr record,
+ int *maxparams)
{
char param_name[VIR_TYPED_PARAM_FIELD_LENGTH];
uint64_t value = 0;
@@ -19110,14 +19114,9 @@ qemuDomainGetStatsPerf(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
if (!virPerfEventIsEnabled(priv->perf, i))
continue;
- switch (i) {
- case VIR_PERF_EVENT_CMT:
- case VIR_PERF_EVENT_MBMT:
- case VIR_PERF_EVENT_MBML:
- if (qemuDomainGetStatsPerfRdt(priv->perf, i, record, maxparams) < 0)
- goto cleanup;
- break;
- }
+ if (qemuDomainGetStatsPerfOneEvent(priv->perf, i,
+ record, maxparams) < 0)
+ goto cleanup;
}
ret = 0;
diff --git a/src/util/virperf.c b/src/util/virperf.c
index 450b3ba..38f2158 100644
--- a/src/util/virperf.c
+++ b/src/util/virperf.c
@@ -38,7 +38,9 @@ VIR_LOG_INIT("util.perf");
#define VIR_FROM_THIS VIR_FROM_PERF
VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST,
- "cmt", "mbmt", "mbml");
+ "cmt", "mbmt", "mbml",
+ "cache_misses", "cache_peferences",
+ "instructions", "cpu_cycles");
struct virPerfEvent {
int type;
@@ -186,6 +188,60 @@ virPerfRdtEnable(virPerfEventPtr event,
return -1;
}
+static int
+virPerfGeneralEnable(virPerfEventPtr event,
+ pid_t pid)
+{
+ struct perf_event_attr attr;
+
+ memset(&attr, 0, sizeof(attr));
+ attr.size = sizeof(attr);
+ attr.inherit = 1;
+ attr.disabled = 1;
+ attr.enable_on_exec = 0;
+
+ switch (event->type) {
+ case VIR_PERF_EVENT_CACHE_MISSES:
+ attr.type = PERF_TYPE_HARDWARE;
+ attr.config = PERF_COUNT_HW_CACHE_MISSES;
+ break;
+ case VIR_PERF_EVENT_CACHE_REFERENCES:
+ attr.type = PERF_TYPE_HARDWARE;
+ attr.config = PERF_COUNT_HW_CACHE_REFERENCES;
+ break;
+ case VIR_PERF_EVENT_INSTRUCTIONS:
+ attr.type = PERF_TYPE_HARDWARE;
+ attr.config = PERF_COUNT_HW_INSTRUCTIONS;
+ break;
+ case VIR_PERF_EVENT_CPU_CYCLES:
+ attr.type = PERF_TYPE_HARDWARE;
+ attr.config = PERF_COUNT_HW_CPU_CYCLES;
+ break;
+ }
+
+ event->fd = syscall(__NR_perf_event_open, &attr, pid, -1, -1, 0);
+ if (event->fd < 0) {
+ virReportSystemError(errno,
+ _("Unable to open perf event for %s"),
+ virPerfEventTypeToString(event->type));
+ goto error;
+ }
+
+ if (ioctl(event->fd, PERF_EVENT_IOC_ENABLE) < 0) {
+ virReportSystemError(errno,
+ _("Unable to enable perf event for %s"),
+ virPerfEventTypeToString(event->type));
+ goto error;
+ }
+
+ event->enabled = true;
+ return 0;
+
+ error:
+ VIR_FORCE_CLOSE(event->fd);
+ return -1;
+}
+
int
virPerfEventEnable(virPerfPtr perf,
virPerfEventType type,
@@ -202,6 +258,13 @@ virPerfEventEnable(virPerfPtr perf,
if (virPerfRdtEnable(event, pid) < 0)
return -1;
break;
+ case VIR_PERF_EVENT_CACHE_MISSES:
+ case VIR_PERF_EVENT_CACHE_REFERENCES:
+ case VIR_PERF_EVENT_INSTRUCTIONS:
+ case VIR_PERF_EVENT_CPU_CYCLES:
+ if (virPerfGeneralEnable(event, pid) < 0)
+ return -1;
+ break;
case VIR_PERF_EVENT_LAST:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unexpected perf event type=%d"), type);
diff --git a/src/util/virperf.h b/src/util/virperf.h
index 769e85a..2cab339 100644
--- a/src/util/virperf.h
+++ b/src/util/virperf.h
@@ -28,6 +28,10 @@ typedef enum {
VIR_PERF_EVENT_CMT,
VIR_PERF_EVENT_MBMT,
VIR_PERF_EVENT_MBML,
+ VIR_PERF_EVENT_CACHE_MISSES,
+ VIR_PERF_EVENT_CACHE_REFERENCES,
+ VIR_PERF_EVENT_INSTRUCTIONS,
+ VIR_PERF_EVENT_CPU_CYCLES,
VIR_PERF_EVENT_LAST
} virPerfEventType;
--
1.9.1
8 years, 5 months
[libvirt] [PATCH] storage: Fix several issues with transient pool cleanup
by Jovanka Gulicoska
There are several cases where we do not handle transient pool destroy
and cleanup correctly. For example:
https://bugzilla.redhat.com/show_bug.cgi?id=1227475
Move the pool cleanup logic to a new function storagePoolSetInactive and
use it consistently.
---
src/storage/storage_driver.c | 38 ++++++++++++++++++++------------------
1 file changed, 20 insertions(+), 18 deletions(-)
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index e2d729f..74af35d 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -77,6 +77,21 @@ static void storageDriverUnlock(void)
}
static void
+storagePoolSetInactive(virStoragePoolObjPtr pool)
+{
+ pool->active = false;
+
+ if (pool->configFile == NULL) {
+ virStoragePoolObjRemove(&driver->pools, pool);
+ pool = NULL;
+ } else if (pool->newDef) {
+ virStoragePoolDefFree(pool->def);
+ pool->def = pool->newDef;
+ pool->newDef = NULL;
+ }
+}
+
+static void
storagePoolUpdateState(virStoragePoolObjPtr pool)
{
bool active;
@@ -143,6 +158,7 @@ storagePoolUpdateAllState(void)
virStoragePoolObjPtr pool = driver->pools.objs[i];
virStoragePoolObjLock(pool);
+ storagePoolSetInactive(pool);
storagePoolUpdateState(pool);
virStoragePoolObjUnlock(pool);
}
@@ -198,6 +214,7 @@ storageDriverAutostart(void)
unlink(stateFile);
if (backend->stopPool)
backend->stopPool(conn, pool);
+ storagePoolSetInactive(pool);
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to autostart storage pool '%s': %s"),
pool->def->name, virGetLastErrorMessage());
@@ -737,7 +754,7 @@ storagePoolCreateXML(virConnectPtr conn,
unlink(stateFile);
if (backend->stopPool)
backend->stopPool(conn, pool);
- virStoragePoolObjRemove(&driver->pools, pool);
+ storagePoolSetInactive(pool);
pool = NULL;
goto cleanup;
}
@@ -1068,16 +1085,7 @@ storagePoolDestroy(virStoragePoolPtr obj)
VIR_STORAGE_POOL_EVENT_STOPPED,
0);
- pool->active = false;
-
- if (pool->configFile == NULL) {
- virStoragePoolObjRemove(&driver->pools, pool);
- pool = NULL;
- } else if (pool->newDef) {
- virStoragePoolDefFree(pool->def);
- pool->def = pool->newDef;
- pool->newDef = NULL;
- }
+ storagePoolSetInactive(pool);
ret = 0;
@@ -1197,13 +1205,7 @@ storagePoolRefresh(virStoragePoolPtr obj,
pool->def->uuid,
VIR_STORAGE_POOL_EVENT_STOPPED,
0);
- pool->active = false;
-
- if (pool->configFile == NULL) {
- virStoragePoolObjRemove(&driver->pools, pool);
- pool = NULL;
- }
- goto cleanup;
+ storagePoolSetInactive(pool);
}
event = virStoragePoolEventLifecycleNew(pool->def->name,
--
2.5.5
8 years, 5 months
[libvirt] [PATCH] virsh: introduce name-uuid for list command
by Chen Hanxiao
From: Chen Hanxiao <chenhanxiao(a)gmail.com>
This patch will show both name and UUID of domain:
Id Name State UUID
---------------------------------------------------------------------------------------
3 f23 running 918f1dd6-b19f-412b-ba17-d113bad89af8
Signed-off-by: Chen Hanxiao <chenhanxiao(a)gmail.com>
---
tools/virsh-domain-monitor.c | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
index 0a93949..32e4ea4 100644
--- a/tools/virsh-domain-monitor.c
+++ b/tools/virsh-domain-monitor.c
@@ -1793,6 +1793,10 @@ static const vshCmdOptDef opts_list[] = {
.type = VSH_OT_BOOL,
.help = N_("show domain title")
},
+ {.name = "name-uuid",
+ .type = VSH_OT_BOOL,
+ .help = N_("show domain name and uuid")
+ },
{.name = NULL}
};
@@ -1807,6 +1811,7 @@ cmdList(vshControl *ctl, const vshCmd *cmd)
bool optTable = vshCommandOptBool(cmd, "table");
bool optUUID = vshCommandOptBool(cmd, "uuid");
bool optName = vshCommandOptBool(cmd, "name");
+ bool optNameUuid = vshCommandOptBool(cmd, "name-uuid");
size_t i;
char *title;
char uuid[VIR_UUID_STRING_BUFLEN];
@@ -1844,10 +1849,10 @@ cmdList(vshControl *ctl, const vshCmd *cmd)
FILTER("state-shutoff", VIR_CONNECT_LIST_DOMAINS_SHUTOFF);
FILTER("state-other", VIR_CONNECT_LIST_DOMAINS_OTHER);
- if (optTable + optName + optUUID > 1) {
+ if (optTable + optName + optUUID + optNameUuid > 1) {
vshError(ctl, "%s",
- _("Only one argument from --table, --name and --uuid "
- "may be specified."));
+ _("Only one argument from --table, --name, --uuid "
+ "and --name-uuid may be specified."));
return false;
}
@@ -1864,6 +1869,12 @@ cmdList(vshControl *ctl, const vshCmd *cmd)
_("Id"), _("Name"), _("State"), _("Title"),
"-----------------------------------------"
"-----------------------------------------");
+ else if (optNameUuid)
+ vshPrintExtra(ctl, " %-5s %-30s %-10s %-36s\n%s\n",
+ _("Id"), _("Name"), _("State"), _("UUID"),
+ "-----------------------------------------"
+ "-----------------------------------------"
+ "----");
else
vshPrintExtra(ctl, " %-5s %-30s %s\n%s\n",
_("Id"), _("Name"), _("State"),
@@ -1901,6 +1912,16 @@ cmdList(vshControl *ctl, const vshCmd *cmd)
title);
VIR_FREE(title);
+ } else if (optNameUuid) {
+ if (virDomainGetUUIDString(dom, uuid) < 0) {
+ vshError(ctl, "%s", _("Failed to get domain's UUID"));
+ goto cleanup;
+ }
+ vshPrint(ctl, " %-5s %-30s %-10s %-36s\n", id_buf,
+ virDomainGetName(dom),
+ state == -2 ? _("saved")
+ : virshDomainStateToString(state),
+ uuid);
} else {
vshPrint(ctl, " %-5s %-30s %s\n", id_buf,
virDomainGetName(dom),
--
1.8.3.1
8 years, 5 months
[libvirt] [PATCH v3 0/4] util: Make failure to get supplementary groups non-fatal
by Peter Krempa
Changes:
- New patches fixing few problems in virt-login-shell found while modifying the original patch.
- split out addition of @quiet
- rest of review feedback
Peter Krempa (4):
tools: virt-login-shell: Fix group list bounds checking
tools: virt-login-shell: Fix cut'n'paste mistake in error message
util: Add option not to report errors in virGetUserEnt
util: Make failure to get supplementary group list for a uid non-fatal
src/util/virutil.c | 49 ++++++++++++++++++++++++++++--------------------
tools/virt-login-shell.c | 9 +++++----
2 files changed, 34 insertions(+), 24 deletions(-)
--
2.8.3
8 years, 5 months
[libvirt] [PATCH 0/6] Remove 'make check' heating
by Ján Tomko
https://xkcd.com/1172/
Ján Tomko (6):
Remove virsh-all
tests: mock gnutls_dh_params_generate2
Introduce virsh self-test
Remove virsh-synopsis
Drop virrandomtest
Mark virsh-optparse as expensive
.gitignore | 1 +
tests/Makefile.am | 8 +---
tests/virnettlscontexttest.c | 2 +-
tests/virnettlssessiontest.c | 2 +-
tests/virrandommock.c | 51 +++++++++++++++++++++
tests/virrandomtest.c | 86 ------------------------------------
tests/virsh-optparse | 2 +
tests/{virsh-all => virsh-self-test} | 31 ++++---------
tests/virsh-synopsis | 44 ------------------
tools/virsh.c | 50 +++++++++++++++++++++
10 files changed, 115 insertions(+), 162 deletions(-)
delete mode 100644 tests/virrandomtest.c
rename tests/{virsh-all => virsh-self-test} (54%)
delete mode 100755 tests/virsh-synopsis
--
2.7.3
8 years, 5 months
[libvirt] [PATCH v2 0/7] Redirdev attach & detach
by Michal Privoznik
v2 of:
https://www.redhat.com/archives/libvir-list/2016-June/msg00615.html
diff to v1:
- Peter's review worked in
- Pushed ACKed patches
- Found one silly bug (patch 7/7)
Michal Privoznik (7):
domain_conf: Validate redirdev after parsing
virDomainRedirdevDef: Introduce find & remove routines
virDomainDeviceInfoIterateInternal: Iterate through redirdevs too
qemuDomainAttachDeviceConfig: Allow redirdev coldplug
qemuDomainDetachDeviceConfig: Allow cold unplug of redirdevs
qemuDomainRemoveDevice: Enable live redirdev detach
qemuDomainDetachDeviceFlags: Pass live device XML to live detach code
src/conf/domain_conf.c | 105 ++++++++++++++++++++++++++++++++++++-----------
src/conf/domain_conf.h | 4 ++
src/libvirt_private.syms | 2 +
src/qemu/qemu_driver.c | 35 ++++++++++++----
src/qemu/qemu_hotplug.c | 76 +++++++++++++++++++++++++++++++++-
src/qemu/qemu_hotplug.h | 3 ++
6 files changed, 193 insertions(+), 32 deletions(-)
--
2.8.4
8 years, 5 months