Re: [libvirt] [RFC 12/42] pc: initialize legacy hotplug only for 2.6 and older machine types
by Eduardo Habkost
On Wed, May 11, 2016 at 03:50:39PM +0200, Igor Mammedov wrote:
> On Tue, 10 May 2016 17:24:14 -0300
> Eduardo Habkost <ehabkost(a)redhat.com> wrote:
>
> > On Mon, May 02, 2016 at 02:33:21PM +0200, Igor Mammedov wrote:
> > > on old machine types CPU hotplug was uncondtionally
> > > enabled since it was introduced, consuming IO ports
> > > and providing AML regardles of whether it was actually
> > > in use or not. Keep it so for 2.6 and older machines.
> > >
> > > New machine types will have an option to turn CPU
> > > hotplug on if it's needed while by default it stays
> > > disabled not consuming extra RAM/IO resources.
> > >
> > > Signed-off-by: Igor Mammedov <imammedo(a)redhat.com>
> >
> > What if people are using "-machine pc -smp N,max_cpus=M"?
> > Shouldn't we at least warning about missing CPU hotplug support
> > when using just "max_cpus" with no "cpu-hotplug=on" with pc-2.7
> > and newer?
> Yep, I'll add it on next respin.
> Would hard error better than warning?
Not sure. It would break older libvirt versions, wouldn't it?
But: isn't the new legacy-cpu-hotplug=false default going to
break old libvirt versions anyway? Should we?
(CCing libvirt list)
>
> > Should max_cpus > smp_cpus automatically set
> > cpu-hotplug=on?
> I'd prefer dumb explicit feature enablement,
> as it doesn't put any assumptions on other options and
> QEMU + mgmt don't have to maintain logic for implicit
> rules that might enable it.
>
> and if I didn't manage to push 'device_add x86cpu' in 2.7 time frame,
> guess work gets a bit confusing with current cpu-add semantic,
> consider current:
>
> SRC-QEMU -smp 1,maxcpus=2
> cpu-add 1
> DST-QEMU -smp 2,maxcpus=2
>
> vs would be device_add:
>
> SRC-QEMU -smp 1,maxcpus=2
> device_add cpu
> DST-QEMU -smp 1,maxcpus=2 -device cpu
>
> so instead of qemu/users guessing, I suggest to make it explictly
> enabled to get feature (which is mostly optional) or
> cleanly fail qemu start if confusing options are specified
> with a clear error message.
Agreed we shouldn't encourage people to use the old option to get
the new behavior.
But I am worried about breaking existing configurations on a
machine-type change. Is it possible to avoid that?
--
Eduardo
8 years, 6 months
[libvirt] [PATCH] schemas: Improve outdated comment
by Christophe Fergeau
---
docs/schemas/domaincommon.rng | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 273715c..8798001 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -2622,10 +2622,7 @@
</element>
</define>
<!--
- A graphic description, currently in Xen only 2 types are supported:
- - sdl with optional display, xauth and fullscreen
- - vnc with a required port and optional listen IP address, password
- and keymap
+ A graphic description (SPICE, VNC, SDL, ...)
-->
<define name="graphic">
<element name="graphics">
--
2.7.4
8 years, 6 months
[libvirt] [PATCH 1/1] perf: add support to perf event for MBM
by Qiaowei Ren
Some Intel processor families (e.g. the Intel Xeon processor E5 v3
family) introduced some RDT (Resource Director Technology) features
to monitor or control shared resource. Among these features, MBM
(Memory Bandwidth Monitoring), which is build on the CMT (Cache
Monitoring Technology) infrastructure, provides OS/VMM a way to
monitor bandwidth from one level of cache to another.
With current perf framework, this patch adds support to perf event
for MBM.
Signed-off-by: Qiaowei Ren <qiaowei.ren(a)intel.com>
---
include/libvirt/libvirt-domain.h | 18 ++++++++++++
src/qemu/qemu_driver.c | 35 +++++++++++++++++++----
src/util/virperf.c | 60 ++++++++++++++++++++++++----------------
src/util/virperf.h | 2 ++
4 files changed, 85 insertions(+), 30 deletions(-)
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index 160f20f..e4594f0 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -1904,6 +1904,24 @@ void virDomainStatsRecordListFree(virDomainStatsRecordPtr *stats);
*/
# define VIR_PERF_PARAM_CMT "cmt"
+/**
+ * VIR_PERF_PARAM_MBMT:
+ *
+ * Macro for typed parameter name that represents MBMT perf event
+ * which can be used to monitor total system bandwidth (bytes/s)
+ * from one level of cache to another.
+ */
+# define VIR_PERF_PARAM_MBMT "mbmt"
+
+/**
+ * VIR_PERF_PARAM_MBML:
+ *
+ * Macro for typed parameter name that represents MBML perf event
+ * which can be used to monitor the amount of data (bytes/s) sent
+ * through the memory controller on the socket.
+ */
+# define VIR_PERF_PARAM_MBML "mbml"
+
int virDomainGetPerfEvents(virDomainPtr dom,
virTypedParameterPtr *params,
int *nparams,
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c4c4968..a3bd7ec 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -10051,6 +10051,8 @@ qemuDomainSetPerfEvents(virDomainPtr dom,
if (virTypedParamsValidate(params, nparams,
VIR_PERF_PARAM_CMT, VIR_TYPED_PARAM_BOOLEAN,
+ VIR_PERF_PARAM_MBMT, VIR_TYPED_PARAM_BOOLEAN,
+ VIR_PERF_PARAM_MBML, VIR_TYPED_PARAM_BOOLEAN,
NULL) < 0)
return -1;
@@ -19495,20 +19497,38 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver,
#undef QEMU_ADD_COUNT_PARAM
static int
-qemuDomainGetStatsPerfCmt(virPerfPtr perf,
+qemuDomainGetStatsPerfRdt(virPerfPtr perf,
+ virPerfEventType type,
virDomainStatsRecordPtr record,
int *maxparams)
{
- uint64_t cache = 0;
+ uint64_t value = 0;
- if (virPerfReadEvent(perf, VIR_PERF_EVENT_CMT, &cache) < 0)
+ if (virPerfReadEvent(perf, type, &value) < 0)
return -1;
- if (virTypedParamsAddULLong(&record->params,
+ if (type == VIR_PERF_EVENT_CMT &&
+ virTypedParamsAddULLong(&record->params,
&record->nparams,
maxparams,
"perf.cache",
- cache) < 0)
+ value) < 0)
+ return -1;
+
+ if (type == VIR_PERF_EVENT_MBMT &&
+ virTypedParamsAddULLong(&record->params,
+ &record->nparams,
+ maxparams,
+ "perf.total_bytes",
+ value) < 0)
+ return -1;
+
+ if (type == VIR_PERF_EVENT_MBML &&
+ virTypedParamsAddULLong(&record->params,
+ &record->nparams,
+ maxparams,
+ "perf.local_bytes",
+ value) < 0)
return -1;
return 0;
@@ -19531,7 +19551,10 @@ qemuDomainGetStatsPerf(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
switch (i) {
case VIR_PERF_EVENT_CMT:
- if (qemuDomainGetStatsPerfCmt(priv->perf, record, maxparams) < 0)
+ case VIR_PERF_EVENT_MBMT:
+ case VIR_PERF_EVENT_MBML:
+ if (qemuDomainGetStatsPerfRdt(priv->perf, i,
+ record, maxparams) < 0)
goto cleanup;
break;
}
diff --git a/src/util/virperf.c b/src/util/virperf.c
index bd65587..826d36a 100644
--- a/src/util/virperf.c
+++ b/src/util/virperf.c
@@ -38,7 +38,7 @@ VIR_LOG_INIT("util.perf");
#define VIR_FROM_THIS VIR_FROM_PERF
VIR_ENUM_IMPL(virPerfEvent, VIR_PERF_EVENT_LAST,
- "cmt");
+ "cmt", "mbmt", "mbml");
struct virPerfEvent {
int type;
@@ -110,10 +110,10 @@ virPerfGetEvent(virPerfPtr perf,
}
static int
-virPerfCmtEnable(virPerfEventPtr event,
+virPerfRdtEnable(virPerfEventPtr event,
pid_t pid)
{
- struct perf_event_attr cmt_attr;
+ struct perf_event_attr rdt_attr;
char *buf = NULL;
char *tmp = NULL;
unsigned int event_type, scale;
@@ -127,32 +127,42 @@ virPerfCmtEnable(virPerfEventPtr event,
if (virStrToLong_ui(buf, NULL, 10, &event_type) < 0) {
virReportSystemError(errno, "%s",
- _("failed to get cmt event type"));
+ _("failed to get rdt event type"));
goto error;
}
VIR_FREE(buf);
- if (virFileReadAll("/sys/devices/intel_cqm/events/llc_occupancy.scale",
- 10, &buf) < 0)
- goto error;
+ memset(&rdt_attr, 0, sizeof(rdt_attr));
+ rdt_attr.size = sizeof(rdt_attr);
+ rdt_attr.type = event_type;
+ rdt_attr.inherit = 1;
+ rdt_attr.disabled = 1;
+ rdt_attr.enable_on_exec = 0;
- if (virStrToLong_ui(buf, NULL, 10, &scale) < 0) {
- virReportSystemError(errno, "%s",
- _("failed to get cmt scaling factor"));
- goto error;
+ switch (event->type) {
+ case VIR_PERF_EVENT_CMT:
+ if (virFileReadAll("/sys/devices/intel_cqm/events/llc_occupancy.scale",
+ 10, &buf) < 0)
+ goto error;
+
+ if (virStrToLong_ui(buf, NULL, 10, &scale) < 0) {
+ virReportSystemError(errno, "%s",
+ _("failed to get cmt scaling factor"));
+ goto error;
+ }
+ event->efields.cmt.scale = scale;
+
+ rdt_attr.config = 1;
+ break;
+ case VIR_PERF_EVENT_MBMT:
+ rdt_attr.config = 2;
+ break;
+ case VIR_PERF_EVENT_MBML:
+ rdt_attr.config = 3;
+ break;
}
- event->efields.cmt.scale = scale;
-
- memset(&cmt_attr, 0, sizeof(cmt_attr));
- cmt_attr.size = sizeof(cmt_attr);
- cmt_attr.type = event_type;
- cmt_attr.config = 1;
- cmt_attr.inherit = 1;
- cmt_attr.disabled = 1;
- cmt_attr.enable_on_exec = 0;
-
- event->fd = syscall(__NR_perf_event_open, &cmt_attr, pid, -1, -1, 0);
+ event->fd = syscall(__NR_perf_event_open, &rdt_attr, pid, -1, -1, 0);
if (event->fd < 0) {
virReportSystemError(errno,
_("Unable to open perf type=%d for pid=%d"),
@@ -162,7 +172,7 @@ virPerfCmtEnable(virPerfEventPtr event,
if (ioctl(event->fd, PERF_EVENT_IOC_ENABLE) < 0) {
virReportSystemError(errno, "%s",
- _("Unable to enable perf event for CMT"));
+ _("Unable to enable perf event for RDT"));
goto error;
}
@@ -186,7 +196,9 @@ virPerfEventEnable(virPerfPtr perf,
switch (type) {
case VIR_PERF_EVENT_CMT:
- if (virPerfCmtEnable(event, pid) < 0)
+ case VIR_PERF_EVENT_MBMT:
+ case VIR_PERF_EVENT_MBML:
+ if (virPerfRdtEnable(event, pid) < 0)
return -1;
break;
case VIR_PERF_EVENT_LAST:
diff --git a/src/util/virperf.h b/src/util/virperf.h
index 8ec8753..769e85a 100644
--- a/src/util/virperf.h
+++ b/src/util/virperf.h
@@ -26,6 +26,8 @@
typedef enum {
VIR_PERF_EVENT_CMT,
+ VIR_PERF_EVENT_MBMT,
+ VIR_PERF_EVENT_MBML,
VIR_PERF_EVENT_LAST
} virPerfEventType;
--
1.9.1
8 years, 6 months
[libvirt] Introducing Fabian Freyer (GSoC 2016 student)
by Roman Bogorodskiy
Hi,
I'd like to introduce Fabian Freyer (CCed), he's taking part in Google
Support of Code this year within FreeBSD organization and his project is
called "Improving libvirt support for bhyve".
Below I'm sharing a tentative plan we currently have. Or, to be more
specific, it's a list of ideas for the bhyve driver with things were
implementation is clear going first, followed by items were some
additional research and working on approach needed. There's no goal to
implement everything from this list though.
This list was assembled by Fabian with some minor edits from me.
Suggestions and ideas are very welcome.
---
The primary aim of this project is to implement missing calls and
functionality in the libvirt bhyve driver. According to the libvirt API
Support Matrix [1], there are a large number of calls not yet implemented. While
some missing API calls are not applicable to bhyve, a number of them are,
among them the following calls:
General calls:
- virConnectDomainXMLFromNative
This would mostly be an argument parser for a bhyve(8) and bhyvectl(8)
command line.
- virConnectGetCPUModelNames
This needs a research: bhyve is not very flexible in configuration of
what CPU model is exposed to the guest, need to figure out if that’s
worth implementing now.
Connection calls:
Most of these include some form of authentication handling and are
therefore not applicable. However, the following do apply to bhyve and are
easy to implement:
- virConnectGetType
Trivially return “BHYVE”
- virConnectIsAlive
Trivially return 1, since “A connection will be classed as
alive if it is [...] local” and /dev/vmm is local.
- virConnectIsEncrypted
Trivially return 0, since bhyve does not support encrypted interfaces.
General Domain calls:
- virDomainGetMaxMemory
Since bhyve does not support memory ballooning, just
return the amount of memory allocated here
- virDomainGetMaxVcpus, virDomainGetVcpus
Would use the approach described in this mailing list
thread: “Until the vCPU state is exposed by bhyvectl, or we provide a
sysctl, you can use heuristics: the number of vCPU threads for the bhyve
process, or scan all vCPUs and only count those that have a non-zero RIP.” [2]
- virDomainGetCPUStats
- virDomainGetTime
- virDomainInjectNMI
Call bhyvectl --inject-nmi
- virDomainReset
Reset a bhyve VM with ‘bhyvectl --force-reset’ and then clean things up
using bhyvectl --destroy; update bhyve monitor code to handle exit
code 0 from bhyve(8) that’s corresponding to reset (0 - reset
/ reboot, 1 - shutdown, 2 - halt) to trigger re-starting of the VM.
- virDomainReboot
Block-Device level calls:
These would implement access to the vdev block storage layer. The
plan is implement support for both file-backed and zvol-backed virtual
machines for the following API calls:
- virDomainGetBlockInfo
- virDomainBlockPeek
- virDomainBlockCopy
- virDomainBlockStats
- virDomainBlockStatsFlags
Going further, since zvols support snapshotting, I
plan to implement the following for zvol-backed storage:
- virDomainBlockCommit
- virDomainBlockPull
VirtFS layer
I would like to create patches to support
specifying filesystems when creating the domain as well as the following
calls to be merged at a later time when VirtFS-9p support for bhyve becomes
ready:
- virDomainFSFreeze
- virDomainFSThaw
Memory inspection
- virDomainMemoryPeek
A guest’s memory space is exposed in /dev/vmm, so this
call would have to read from that.
- virDomainMemoryStats
Virt-host-validate(1) bhyve support
Add bhyve support to virt-host-validate:
- Check support of CPU supports features required for bhyve
- Check if the vmm module is available
- Check if essential networking things are available
(if_bridge(4), if_tap(4)) + nmdm(4) for console
Networking support
Currently the bhyve’s libvirt driver (as well as libxl/FreeBSD driver)
only supports L2 interface bridging. There’s no support for upper level schemas
like NAT for example. This is a huge task that involves research of what
firefall is more applicable (ipfw or pf), designing of the firewall rules and
the actual implemtation.
PCI passthrough support
I.e. the the "bhyve ... -s 7:0,passthru,4/0/0" thing. Probably that will
involve the HAL nodedev driver modifications.
---
PS For historic purposes, I've stashed the original proposal:
https://people.freebsd.org/~novel/misc/FabianFreyer_GoogleSummerofCode201...
1: https://libvirt.org/hvsupport.html
2:
https://lists.freebsd.org/pipermail/freebsd-virtualization/2014-April/002...
Roman Bogorodskiy
8 years, 6 months
[libvirt] [PATCH] util: Fix virGetLastErrorMessage to return proper error when 'err' is NULL
by Erik Skultety
Both virGetLastError and virGetLastErrorMessage call virLastErrorObject method
that returns a thread-local error object. However, if a direct call to malloc
or pthread_setspecific (probably also due to malloc, since it sets ENOMEM)
fail, virLastErrorObject returns NULL which, although incorrectly interpreted
by virGetLastError as no error, still requires the caller to check for NULL
pointer. This isn't the case with virGetLastErrorMessage that also treated it
incorrectly as no error, but returned the literal "no error".
This patch tweaks the checks in the virGetLastErrorMessage function, so that
if virLastErrorObject failed, it returned "unknown error" which is equivalent
to the current approach with virGetLastError and if it returned NULL,
"unknown error" was set.
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
src/util/virerror.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/util/virerror.c b/src/util/virerror.c
index 5d875e3..1177570 100644
--- a/src/util/virerror.c
+++ b/src/util/virerror.c
@@ -281,9 +281,9 @@ const char *
virGetLastErrorMessage(void)
{
virErrorPtr err = virLastErrorObject();
- if (!err || err->code == VIR_ERR_OK)
+ if (err && err->code == VIR_ERR_OK)
return _("no error");
- if (err->message == NULL)
+ if (!err || !err->message)
return _("unknown error");
return err->message;
}
--
2.5.5
8 years, 6 months
[libvirt] [PATCH v3 0/2] Add IV Secret Object support (for RBD only)
by John Ferlan
v2 here:
http://www.redhat.com/archives/libvir-list/2016-May/msg00067.html
First 6 patches from v2 were pushed since they were ACK'd
I modified the 7th patch to add the ATTRIBUTE_UNUSED to the static
functions qemuDomainSecretHaveEncypt and qemuDomainSecretIVSetup and
merged in the HAVE_GNUTLS_CIPHER_ENCRYPT.
This should address Michal's point in patch 7 review.
Patch 2 thus becomes the "remainder" of the work necessary in order
to get IV Secrets available for RBD volumes. It's most of the former
patch 8 with removal if iSCSI oddities.
Patch 8 will then remove the ATTRIBUTE_UNUSED from the 2 static functions
now that qemuDomainSecretSetup exists to call it. The change here was
to add the check for protocol == VIR_STORAGE_NET_PROTOCOL_RBD before
"defaulting" to using the IV secret (e.g., the magic decision point).
Since the command code didn't need the secret setup for iSCSI, it's been
extracted to another safe place just in case it needs to be resurrected.
John Ferlan (2):
qemu: Introduce new Secret IV API's
qemu: Utilize qemu secret objects for RBD auth/secret
configure.ac | 1 +
src/qemu/qemu_alias.c | 23 +++
src/qemu/qemu_alias.h | 2 +
src/qemu/qemu_command.c | 130 +++++++++++++-
src/qemu/qemu_domain.c | 189 ++++++++++++++++++++-
...emuxml2argv-disk-drive-network-rbd-auth-IV.args | 31 ++++
...qemuxml2argv-disk-drive-network-rbd-auth-IV.xml | 42 +++++
tests/qemuxml2argvmock.c | 31 +++-
tests/qemuxml2argvtest.c | 11 ++
9 files changed, 451 insertions(+), 9 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-network-rbd-auth-IV.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-network-rbd-auth-IV.xml
--
2.5.5
8 years, 6 months
[libvirt] [PATCH] tests: qemu: mock master key generation
by Peter Krempa
The master key generation is using host state to get the random bytes.
Currently it's not used so it doesn't break any tests, but it may become
a problem in the future.
Fix it by mocking qemuDomainGenerateRandomKey. This is possible after
exporting it and switching to the dynamically linked qemu driver object
for tests.
---
This also makes the test not call any gnutls function which crashed certain
gnutls versions as we did not initialize it (gnutls_global_init()). It may be
also worth adding the call to virtTestMain so that tests don't run into that
problem, but I'm not totaly persuaded that it's a good idea.
src/qemu/qemu_domain.c | 2 +-
src/qemu/qemu_domain.h | 2 ++
tests/Makefile.am | 2 +-
tests/qemuxml2argvmock.c | 21 +++++++++++++++++++++
4 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 3da0079..d955ed4 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -640,7 +640,7 @@ qemuDomainMasterKeyReadFile(qemuDomainObjPrivatePtr priv)
*
* Returns pointer memory containing key on success, NULL on failure
*/
-static uint8_t *
+uint8_t *
qemuDomainGenerateRandomKey(size_t nbytes)
{
uint8_t *key;
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index c711188..b116949 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -669,4 +669,6 @@ int qemuDomainSecretPrepare(virConnectPtr conn, virDomainObjPtr vm)
int qemuDomainDefValidateDiskLunSource(const virStorageSource *src)
ATTRIBUTE_NONNULL(1);
+uint8_t *qemuDomainGenerateRandomKey(size_t nbytes);
+
#endif /* __QEMU_DOMAIN_H__ */
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 75efb90..ba14b8f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -561,7 +561,7 @@ libqemutestdriver_la_LIBADD = $(qemu_LDADDS)
qemuxml2argvtest_SOURCES = \
qemuxml2argvtest.c testutilsqemu.c testutilsqemu.h \
testutils.c testutils.h
-qemuxml2argvtest_LDADD = $(qemu_LDADDS) $(LDADDS) $(LIBXML_LIBS)
+qemuxml2argvtest_LDADD = libqemutestdriver.la $(LDADDS) $(LIBXML_LIBS)
qemuxml2argvmock_la_SOURCES = \
qemuxml2argvmock.c
diff --git a/tests/qemuxml2argvmock.c b/tests/qemuxml2argvmock.c
index 1616eed..1bad3ae 100644
--- a/tests/qemuxml2argvmock.c
+++ b/tests/qemuxml2argvmock.c
@@ -30,6 +30,10 @@
#include "virstring.h"
#include "virtpm.h"
#include "virutil.h"
+#include "viralloc.h"
+
+#include "qemu/qemu_domain.h"
+
#include <time.h>
#include <unistd.h>
@@ -145,3 +149,20 @@ virCommandPassFD(virCommandPtr cmd ATTRIBUTE_UNUSED,
{
/* nada */
}
+
+
+uint8_t *
+qemuDomainGenerateRandomKey(size_t nbytes)
+{
+ size_t i;
+ uint8_t seq = 0;
+ uint8_t *key;
+
+ if (VIR_ALLOC_N(key, nbytes) < 0)
+ return NULL;
+
+ for (i = 0; i < nbytes; i++)
+ key[i] = seq++;
+
+ return key;
+}
--
2.8.2
8 years, 6 months
[libvirt] [PATCH] spec: Fix broken indentation reported by syntax-check
by Erik Skultety
syntax-check complained about broken indentation in libvirt.spec.in which was
broken by commit 3694e038
Signed-off-by: Erik Skultety <eskultet(a)redhat.com>
---
Pushed under trivial rule.
Erik
libvirt.spec.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 886f5cf..d96917b 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -4,9 +4,9 @@
# or for RHEL 6 or newer. It may need some tweaks for other distros.
# If neither fedora nor rhel was defined, try to guess them from dist
%if (0%{?fedora} && 0%{?fedora} >= 20) || (0%{?rhel} && 0%{?rhel} >= 6)
-%define supported_platform 1
+ %define supported_platform 1
%else
-%define supported_platform 0
+ %define supported_platform 0
%endif
# Default to skipping autoreconf. Distros can change just this one line
--
2.5.5
8 years, 6 months
[libvirt] [PATCH REPOST 0/5] admin: Introduce APIs to get/set client processing
by Erik Skultety
This is just a rebased version of
https://www.redhat.com/archives/libvir-list/2016-April/msg00466.html.
Patches 1/7 and 2/7 of the original series were already pushed with another
series.
Erik Skultety (5):
virnetserver: Introduce client processing controls getters
admin: Introduce some public constants related to client processing
controls
admin: Introduce virAdmServerGetClientProcessingControls
admin: Introduce virAdmServerSetClientProcessingControls
virt-admin: Introduce commands srv-clients-info and srv-clients-set
daemon/admin.c | 86 +++++++++++++++++++
daemon/admin_server.c | 76 +++++++++++++++++
daemon/admin_server.h | 10 +++
include/libvirt/libvirt-admin.h | 52 ++++++++++++
src/admin/admin_protocol.x | 30 ++++++-
src/admin/admin_remote.c | 74 +++++++++++++++++
src/admin_protocol-structs | 20 +++++
src/libvirt-admin.c | 89 ++++++++++++++++++++
src/libvirt_admin_private.syms | 3 +
src/libvirt_admin_public.syms | 2 +
src/rpc/virnetserver.c | 83 +++++++++++++++++++
src/rpc/virnetserver.h | 9 ++
tools/virt-admin.c | 177 ++++++++++++++++++++++++++++++++++++++++
13 files changed, 710 insertions(+), 1 deletion(-)
--
2.5.5
8 years, 6 months