[libvirt] [PATCH 0/2] RFC: New libssh transport
by Pino Toscano
Hi,
this series introduces a new libssh transport in libvirt, based on the
libssh C library. This library supports what libssh2 does, and more:
- easier API for known_hosts handling (there's a ticket upstream to
request extensions for it, but what is implemented now works well)
- potential GSSAPI authentication (not enabled yet because of a libssh
bug [1]
- easier API for ssh-agent support
TODO:
- implement the keyboard-interactive authentication method
- more testing than my own
The implementation for the new transport is based on the libssh2 one,
hence it shares origin and style.
[1] https://red.libssh.org/issues/242
Thanks,
Pino Toscano (2):
virNetSocket: allow to not close FD
libssh_transport: add new libssh-based transport
config-post.h | 2 +
configure.ac | 3 +
include/libvirt/virterror.h | 2 +
m4/virt-libssh.m4 | 26 +
src/Makefile.am | 21 +-
src/libvirt_libssh.syms | 22 +
src/remote/remote_driver.c | 41 ++
src/rpc/virnetclient.c | 123 ++++
src/rpc/virnetclient.h | 13 +
src/rpc/virnetlibsshsession.c | 1267 +++++++++++++++++++++++++++++++++++++++++
src/rpc/virnetlibsshsession.h | 80 +++
src/rpc/virnetsocket.c | 184 +++++-
src/rpc/virnetsocket.h | 13 +
src/util/virerror.c | 9 +-
14 files changed, 1802 insertions(+), 4 deletions(-)
create mode 100644 m4/virt-libssh.m4
create mode 100644 src/libvirt_libssh.syms
create mode 100644 src/rpc/virnetlibsshsession.c
create mode 100644 src/rpc/virnetlibsshsession.h
--
2.7.4
8 years, 2 months
[libvirt] [PATCH 0/2] support qemu drive cache.* parameters
by Nikolay Shirokovskiy
Nikolay Shirokovskiy (2):
conf: add disk cache tuning parameters after qemu
qemu: support <cachetune> in domain disk xml
.gnulib | 2 +-
docs/schemas/domaincommon.rng | 22 ++++++
src/conf/domain_conf.c | 90 ++++++++++++++++++++++
src/conf/domain_conf.h | 7 ++
src/qemu/qemu_capabilities.c | 12 ++-
src/qemu/qemu_capabilities.h | 3 +
src/qemu/qemu_command.c | 30 ++++++++
tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 3 +
tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 3 +
tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 3 +
tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 3 +
tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 3 +
.../caps_2.6.0-gicv2.aarch64.xml | 3 +
.../caps_2.6.0-gicv3.aarch64.xml | 3 +
tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 3 +
tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 3 +
tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 3 +
17 files changed, 194 insertions(+), 2 deletions(-)
--
1.8.3.1
8 years, 2 months
[libvirt] [PATCH] util: Fix build on s390
by Jiri Denemark
GCC on s390 complains
util/virconf.c: In function 'virConfGetValueSizeT':
util/virconf.c:1220:9: error: format '%zu' expects argument of type
'size_t', but argument 9 has type 'unsigned int' [-Werror=format=]
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/util/virconf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/util/virconf.c b/src/util/virconf.c
index 3e49f41..1372389 100644
--- a/src/util/virconf.c
+++ b/src/util/virconf.c
@@ -1219,7 +1219,7 @@ int virConfGetValueSizeT(virConfPtr conf,
if (((unsigned long long)cval->l) > SIZE_MAX) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("%s: value for '%s' parameter must be in range 0:%zu"),
- conf->filename, setting, SIZE_MAX);
+ conf->filename, setting, (size_t) SIZE_MAX);
return -1;
}
#endif
--
2.10.1
8 years, 2 months
Re: [libvirt] [PATCH] util: Alter return value of virReadFCHost and fix mem leak
by Erik Skultety
On Wed, Oct 12, 2016 at 09:20:29AM -0400, John Ferlan wrote:
>
>
> On 10/12/2016 06:40 AM, Erik Skultety wrote:
> > On Tue, Oct 11, 2016 at 05:25:49PM -0400, John Ferlan wrote:
> >> https://bugzilla.redhat.com/show_bug.cgi?id=1357416
> >>
> >> Rather than return a 0 or -1 and the *result string, return just the result
> >> string to the caller. Alter all the callers to handle the different return.
> >>
> >> As a side effect or result of this, it's much clearer that we cannot just
> >> assign the returned string into the scsi_host wwnn, wwpn, and fabric_wwn
> >> fields - rather we should fetch a temporary string, then as long as our
> >> fetch was good, VIR_FREE what may have been there, and STEAL what we just got.
> >> This fixes a memory leak in the virNodeDeviceCreateXML code path through
> >> find_new_device and nodeDeviceLookupSCSIHostByWWN which will continually
> >> call nodeDeviceSysfsGetSCSIHostCaps until the expected wwnn/wwpn is found
> >> in the device object capabilities.
> >>
> >> Signed-off-by: John Ferlan <jferlan(a)redhat.com>
> >> ---
> >>
> >> I suppose I could have made two patches out of this, but it felt like
> >> overkill once I realized what the issue was. OK a third one line patch
> >> could have been added to change the virGetFCHostNameByWWN comment as well,
> >> but that'd really be overkill.
> >>
> >> src/node_device/node_device_linux_sysfs.c | 55 ++++++++++++-------------------
> >> src/util/virutil.c | 34 ++++++++-----------
> >> src/util/virutil.h | 9 +++--
> >> tests/fchosttest.c | 30 ++++++-----------
> >> 4 files changed, 49 insertions(+), 79 deletions(-)
> >>
> >> diff --git a/src/node_device/node_device_linux_sysfs.c b/src/node_device/node_device_linux_sysfs.c
> >> index 549d32c..be99c41 100644
> >> --- a/src/node_device/node_device_linux_sysfs.c
> >> +++ b/src/node_device/node_device_linux_sysfs.c
> >> @@ -44,8 +44,7 @@ VIR_LOG_INIT("node_device.node_device_linux_sysfs");
> >> int
> >> nodeDeviceSysfsGetSCSIHostCaps(virNodeDevCapDataPtr d)
> >> {
> >> - char *max_vports = NULL;
> >> - char *vports = NULL;
> >> + char *tmp = NULL;
> >> int ret = -1;
> >>
> >> if (virReadSCSIUniqueId(NULL, d->scsi_host.host,
> >> @@ -59,64 +58,53 @@ nodeDeviceSysfsGetSCSIHostCaps(virNodeDevCapDataPtr d)
> >> if (virIsCapableFCHost(NULL, d->scsi_host.host)) {
> >> d->scsi_host.flags |= VIR_NODE_DEV_CAP_FLAG_HBA_FC_HOST;
> >>
> >> - if (virReadFCHost(NULL,
> >> - d->scsi_host.host,
> >> - "port_name",
> >> - &d->scsi_host.wwpn) < 0) {
> >> + if (!(tmp = virReadFCHost(NULL, d->scsi_host.host, "port_name"))) {
> >> VIR_WARN("Failed to read WWPN for host%d", d->scsi_host.host);
> >> goto cleanup;
> >> }
> >> + VIR_FREE(d->scsi_host.wwpn);
> >> + VIR_STEAL_PTR(d->scsi_host.wwpn, tmp);
> >>
> >> - if (virReadFCHost(NULL,
> >> - d->scsi_host.host,
> >> - "node_name",
> >> - &d->scsi_host.wwnn) < 0) {
> >> + if (!(tmp = virReadFCHost(NULL, d->scsi_host.host, "node_name"))) {
> >> VIR_WARN("Failed to read WWNN for host%d", d->scsi_host.host);
> >> goto cleanup;
> >> }
> >> + VIR_FREE(d->scsi_host.wwnn);
> >> + VIR_STEAL_PTR(d->scsi_host.wwnn, tmp);
> >>
> >> - if (virReadFCHost(NULL,
> >> - d->scsi_host.host,
> >> - "fabric_name",
> >> - &d->scsi_host.fabric_wwn) < 0) {
> >> + if (!(tmp = virReadFCHost(NULL, d->scsi_host.host, "fabric_name"))) {
> >> VIR_WARN("Failed to read fabric WWN for host%d",
> >> d->scsi_host.host);
> >> goto cleanup;
> >> }
> >> + VIR_FREE(d->scsi_host.fabric_wwn);
> >> + VIR_STEAL_PTR(d->scsi_host.fabric_wwn, tmp);
> >> }
> >>
> >
> > So if I understand correctly, the problem is basically that we did not call
> > VIR_FREE on the data that had previously been filled to the virNodeDevCapData
> > structure during replacing it with new data. So, we could just keep the
> > signature of virReadFCHost as is and just add the VIR_FREE and VIR_STEAL_PTR
> > to the function, thus there won't be any need to use VIR_FREE+STEAL repeatedly
> > in here.
> >
>
> True - we're overwriting the &d->scsi_host.{wwnn|wwpn|fabric_wwn} fields
> and that's the primary issue (e.g. mem leak).
>
> While I understand your point, I'm not sure adding a VIR_FREE(*result)
> to virReadFCHost just prior to the "if VIR_STRDUP(*result, p) < 0)" is a
> proper solution since virReadFCHost does not "own" that memory. It
> doesn't state that if *result has something in it, the code will perform
> a VIR_FREE (although that's a nice convenience in this case). Sure it's
> simple enough to add that comment, but then I believe that the
I don't see a major problem here...
> VIR_FREE() would have to be done at the top of the function; otherwise,
> how does the caller distinguish which error occurred when -1 gets
> returned and whether it should VIR_FREE itself?
>
Well, I have to admin that this^^ is a fair argument because there are 3
different spots where the function can fail, not that the caller could not
check result for NULL but the fact that a function touched caller's argument
and then failed would be just weird. So, yeah, good point.
> Also, what if the caller didn't want the *result wiped out? What if it
> was using it to compare what it found "this" time vs. what was present
> in the data/file a previous time? That caller would then need to be
> adjusted to pass a temporary variable anyway.
Exactly, if a caller wanted to just compare 2 values - old and new one - they
would use a temporary variable, that would IMHO be expected correct behaviour.
Anyway, it's irrelevant now that I agree with your point above.
>
> I think for me most compelling reason to alter virReadFCHost is that it
> follows the mindset of not returning two values from a function when one
> is perfectly reasonable.
>
> John
>
> BTW: The OCD would still kick in and want to change the comment below to
> match the function name...
Yeah, since the patch is going to be relatively beefy, this change will blend
in fairly easily, so go ahead, ACK.
Erik
NOTE: I've recently switched to mutt and it's still quite new, so I forgot to
hit 'g' for group reply, therefore most of this conversation 'officially' never
happened, so CC'ng libvir-list at least for the last bit, I suppose the whole
'thread' is going to look odd, sigh....
>
> >> -/* virGetHostNameByWWN:
> >> +/* virGetFCHostNameByWWN:
> >
> > Normally, I'd say sure, you're absolutely right about not creating a separate
> > patch for this kind of change, but once you make the adjustment I mentioned
> > above none of the below changes will be necessary and thus this rename change
> > would look sort of unrelated imho.
> >
> > ACK with the adjustment.
> >
> > Erik
> >
> >> *
> >> * Iterate over the sysfs tree to get FC host name (e.g. host5)
> >> * by the provided "wwnn,wwpn" pair.
> >> @@ -2298,7 +2293,7 @@ virFindFCHostCapableVport(const char *sysfs_prefix)
> >> if (!virIsCapableVport(prefix, host))
> >> continue;
> >>
> >> - if (virReadFCHost(prefix, host, "port_state", &state) < 0) {
> >> + if (!(state = virReadFCHost(prefix, host, "port_state"))) {
> >> VIR_DEBUG("Failed to read port_state for host%d", host);
> >> continue;
> >> }
> >> @@ -2310,12 +2305,12 @@ virFindFCHostCapableVport(const char *sysfs_prefix)
> >> }
> >> VIR_FREE(state);
> >>
> >> - if (virReadFCHost(prefix, host, "max_npiv_vports", &max_vports) < 0) {
> >> + if (!(max_vports = virReadFCHost(prefix, host, "max_npiv_vports"))) {
> >> VIR_DEBUG("Failed to read max_npiv_vports for host%d", host);
> >> continue;
> >> }
> >>
> >> - if (virReadFCHost(prefix, host, "npiv_vports_inuse", &vports) < 0) {
> >> + if (!(vports = virReadFCHost(prefix, host, "npiv_vports_inuse"))) {
> >> VIR_DEBUG("Failed to read npiv_vports_inuse for host%d", host);
> >> VIR_FREE(max_vports);
> >> continue;
> >> @@ -2379,14 +2374,13 @@ virGetSCSIHostNameByParentaddr(unsigned int domain ATTRIBUTE_UNUSED,
> >> return NULL;
> >> }
> >>
> >> -int
> >> +char *
> >> virReadFCHost(const char *sysfs_prefix ATTRIBUTE_UNUSED,
> >> int host ATTRIBUTE_UNUSED,
> >> - const char *entry ATTRIBUTE_UNUSED,
> >> - char **result ATTRIBUTE_UNUSED)
> >> + const char *entry ATTRIBUTE_UNUSED)
> >> {
> >> virReportSystemError(ENOSYS, "%s", _("Not supported on this platform"));
> >> - return -1;
> >> + return NULL;
> >> }
> >>
> >> bool
> >> diff --git a/src/util/virutil.h b/src/util/virutil.h
> >> index 703ec53..8c0d83c 100644
> >> --- a/src/util/virutil.h
> >> +++ b/src/util/virutil.h
> >> @@ -182,11 +182,10 @@ virGetSCSIHostNameByParentaddr(unsigned int domain,
> >> unsigned int slot,
> >> unsigned int function,
> >> unsigned int unique_id);
> >> -int virReadFCHost(const char *sysfs_prefix,
> >> - int host,
> >> - const char *entry,
> >> - char **result)
> >> - ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);
> >> +char *virReadFCHost(const char *sysfs_prefix,
> >> + int host,
> >> + const char *entry)
> >> + ATTRIBUTE_NONNULL(3);
> >>
> >> bool virIsCapableFCHost(const char *sysfs_prefix, int host);
> >> bool virIsCapableVport(const char *sysfs_prefix, int host);
> >> diff --git a/tests/fchosttest.c b/tests/fchosttest.c
> >> index e9b89a7..a08a2e8 100644
> >> --- a/tests/fchosttest.c
> >> +++ b/tests/fchosttest.c
> >> @@ -68,35 +68,25 @@ test3(const void *data ATTRIBUTE_UNUSED)
> >> char *vports = NULL;
> >> int ret = -1;
> >>
> >> - if (virReadFCHost(TEST_FC_HOST_PREFIX,
> >> - TEST_FC_HOST_NUM,
> >> - "node_name",
> >> - &wwnn) < 0)
> >> + if (!(wwnn = virReadFCHost(TEST_FC_HOST_PREFIX, TEST_FC_HOST_NUM,
> >> + "node_name")))
> >> return -1;
> >>
> >> - if (virReadFCHost(TEST_FC_HOST_PREFIX,
> >> - TEST_FC_HOST_NUM,
> >> - "port_name",
> >> - &wwpn) < 0)
> >> + if (!(wwpn = virReadFCHost(TEST_FC_HOST_PREFIX, TEST_FC_HOST_NUM,
> >> + "port_name")))
> >> goto cleanup;
> >>
> >> - if (virReadFCHost(TEST_FC_HOST_PREFIX,
> >> - TEST_FC_HOST_NUM,
> >> - "fabric_name",
> >> - &fabric_wwn) < 0)
> >> + if (!(fabric_wwn = virReadFCHost(TEST_FC_HOST_PREFIX, TEST_FC_HOST_NUM,
> >> + "fabric_name")))
> >> goto cleanup;
> >>
> >> - if (virReadFCHost(TEST_FC_HOST_PREFIX,
> >> - TEST_FC_HOST_NUM,
> >> - "max_npiv_vports",
> >> - &max_vports) < 0)
> >> + if (!(max_vports = virReadFCHost(TEST_FC_HOST_PREFIX, TEST_FC_HOST_NUM,
> >> + "max_npiv_vports")))
> >> goto cleanup;
> >>
> >>
> >> - if (virReadFCHost(TEST_FC_HOST_PREFIX,
> >> - TEST_FC_HOST_NUM,
> >> - "npiv_vports_inuse",
> >> - &vports) < 0)
> >> + if (!(vports = virReadFCHost(TEST_FC_HOST_PREFIX, TEST_FC_HOST_NUM,
> >> + "npiv_vports_inuse")))
> >> goto cleanup;
> >>
> >> if (STRNEQ(expect_wwnn, wwnn) ||
> >> --
> >> 2.7.4
> >>
> >> --
> >> libvir-list mailing list
> >> libvir-list(a)redhat.com
> >> https://www.redhat.com/mailman/listinfo/libvir-list
8 years, 2 months
[libvirt] [PATCH v2 00/14] Couple of vhost-user fixes and cleanups
by Michal Privoznik
v2 of:
https://www.redhat.com/archives/libvir-list/2016-August/msg00806.html
The first patches are mostly code movement and cleanups.
diff to v1:
- Hopefully all John's review suggestions are worked in now
Michal Privoznik (14):
virDomainNetDefParseXML: Realign
virDomainNetGetActualType: Return type is virDomainNetType
qemuBuildInterfaceCommandLine: Move hostdev handling a bit further
qemuBuildInterfaceCommandLine: Move vhostuser handling a bit further
qemuBuildInterfaceCommandLine: Move from if-else forest to switch
qemuDomainAttachNetDevice: Move hostdev handling a bit further
qemuDomainAttachNetDevice: Explicitly list allowed types for hotplug
qemuBuildHostNetStr: Explicitly enumerate net types
qemuBuildChrChardevStr: Introduce @nowait argument
qemuBuildVhostuserCommandLine: Reuse qemuBuildChrChardevStr
qemuBuildInterfaceCommandLine: Pass proper args
qemuBuildVhostuserCommandLine: Unify -netdev creation
qemuBuildHostNetStr: Support VIR_DOMAIN_NET_TYPE_VHOSTUSER
qemu_hotplug: Support interface type of vhost-user hotplug
src/bhyve/bhyve_command.c | 2 +-
src/bhyve/bhyve_process.c | 2 +-
src/conf/domain_conf.c | 16 +-
src/conf/domain_conf.h | 2 +-
src/libxl/libxl_domain.c | 2 +-
src/libxl/libxl_driver.c | 2 +-
src/lxc/lxc_driver.c | 9 +-
src/qemu/qemu_command.c | 182 +++++++++++++--------
src/qemu/qemu_hotplug.c | 130 +++++++++++----
src/qemu/qemu_process.c | 13 +-
.../qemuxml2argv-net-hostdev-fail.xml | 39 +++++
.../qemuxml2argv-net-vhostuser-fail.xml | 36 ++++
.../qemuxml2argv-net-vhostuser-multiq.args | 6 +-
.../qemuxml2argv-net-vhostuser.args | 4 +-
tests/qemuxml2argvtest.c | 7 +
15 files changed, 334 insertions(+), 118 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-hostdev-fail.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-vhostuser-fail.xml
--
2.8.4
8 years, 2 months
[libvirt] [PATCH 0/4] vbox: address thread-safety issues.
by Dawid Zamirski
This patch series solves (at least in my testing) vbox driver
thread-safety issues that were also outlined on libvirt-users ML [1]
and I was affected with. Those patches try to follow the suggestions
made Matthias' [2] in that thread as close as possible. Here's where
my patch differs from that suggesions:
* vboxGlobalData - still needs to keep reference to ISession and
IVirutalBox session because it's apparently not possible to have
multiple instances created/destroyed safely with pfnComInitialize
and pfnComUninitalize calls on per-connection basis.
* as such vboxPrivate (the new struct introduced here) also has
references to ISession and IVirutalBox (which are just referenes to
the ones from the global) mainly to immitate ISession instance
per-connection. Apparently newer VBOX SDKs introduced
pfnClinetInitialize that can allegedly create multiple ISessions and
we might want to take advantage of that in the future hopefully
without making additional changes allover the driver code that this
patch did.
The gist of the change is in patch 3 and it also contains more
in-depth explanation on how the issue is being resolved. Also, please
note that patch 4 should be squashed into 3 as it was kept separate
only for code-review purposes and 3rd patch won't compile without 4
applied on top.
[1] https://www.redhat.com/archives/libvirt-users/2012-April/msg00122.html
[2] https://www.redhat.com/archives/libvirt-users/2012-April/msg00125.htmlgq
Dawid Zamirski (4):
vbox: add vboxPrivate struct.
vbox: replace vboxGlobalData with vboxPrivate.
vbox: change API (un)initialization logic.
vbox: update rest of the code to for prior changes.
src/vbox/vbox_common.c | 275 ++++++++++++---------------
src/vbox/vbox_common.h | 32 ++--
src/vbox/vbox_network.c | 51 +++--
src/vbox/vbox_storage.c | 20 +-
src/vbox/vbox_tmpl.c | 433 +++++++++++++++++++++---------------------
src/vbox/vbox_uniformed_api.h | 128 +++++++------
6 files changed, 460 insertions(+), 479 deletions(-)
--
2.7.4
8 years, 2 months
[libvirt] [PATCH] virLogDefineOutputs: Fix build without syslog.h
by Michal Privoznik
Not every system out there has syslog, that's why we check for it
in our configure script. However, in 640b58abdf while fixing
another issue, some variables and functions are called that are
defined only when syslog.h is present. But these function
calls/variables were not guarded by #ifdef-s.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Pushed under build breaker rule.
src/util/virlog.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/util/virlog.c b/src/util/virlog.c
index 52b0eea..8f831fc 100644
--- a/src/util/virlog.c
+++ b/src/util/virlog.c
@@ -1362,9 +1362,10 @@ virLogFindOutput(virLogOutputPtr *outputs, size_t noutputs,
int
virLogDefineOutputs(virLogOutputPtr *outputs, size_t noutputs)
{
- int ret = -1;
+#if HAVE_SYSLOG_H
int id;
char *tmp = NULL;
+#endif /* HAVE_SYSLOG_H */
if (virLogInitialize() < 0)
return -1;
@@ -1372,6 +1373,7 @@ virLogDefineOutputs(virLogOutputPtr *outputs, size_t noutputs)
virLogLock();
virLogResetOutputs();
+#if HAVE_SYSLOG_H
/* syslog needs to be special-cased, since it keeps the fd in private */
if ((id = virLogFindOutput(outputs, noutputs, VIR_LOG_TO_SYSLOG,
current_ident)) != -1) {
@@ -1379,20 +1381,21 @@ virLogDefineOutputs(virLogOutputPtr *outputs, size_t noutputs)
* holding the lock so it's safe to call openlog and change the message
* tag
*/
- if (VIR_STRDUP_QUIET(tmp, outputs[id]->name) < 0)
- goto cleanup;
+ if (VIR_STRDUP_QUIET(tmp, outputs[id]->name) < 0) {
+ virLogUnlock();
+ return -1;
+ }
VIR_FREE(current_ident);
current_ident = tmp;
openlog(current_ident, 0, 0);
}
+#endif /* HAVE_SYSLOG_H */
virLogOutputs = outputs;
virLogNbOutputs = noutputs;
- ret = 0;
- cleanup:
virLogUnlock();
- return ret;
+ return 0;
}
--
2.8.4
8 years, 2 months
[libvirt] [PATCH 0/4] qemu: escape smbios strings passed on commandline
by Peter Krempa
See patch 3 for the core change.
Peter Krempa (4):
qemu: command: Fix up coding style of smbios commandine formatters
qemu: command: Don't bother reporting errors in smbios formatters
qemu: command: escape smbios entry strings
schema: smbios: allow any strings
docs/schemas/domaincommon.rng | 4 +-
src/qemu/qemu_command.c | 129 ++++++++++++++++++++++++------------------
2 files changed, 76 insertions(+), 57 deletions(-)
--
2.10.0
8 years, 2 months
[libvirt] [PATCH 0/4] Couple of test driver fixes and improvements
by Michal Privoznik
BLURB
Michal Privoznik (4):
testOpenDefault: Rename loop variable
testNodeGetCellsFreeMemory: Fix off by one error
test driver: Store memory per NUMA node
test_driver: Implement virNodeAllocPages
src/test/test_driver.c | 198 ++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 164 insertions(+), 34 deletions(-)
--
2.8.4
8 years, 2 months
[libvirt] libvirt API / balloon last-update
by Marko Myllynen
Hi,
I see that recently the last-update field has been added to the balloon
statistics, this is how it looks like from Python:
[(<libvirt.virDomain object at 0x7fb45b7faa50>, {'balloon.rss': 960048L,
'balloon.swap_in': 0L, 'balloon.usable': 1676424L, 'balloon.unused':
1376188L, 'balloon.major_fault': 816L, 'balloon.swap_out': 0L,
'balloon.current': 2097152L, 'balloon.maximum': 2097152L,
'balloon.available': 2048364L, 'balloon.minor_fault': 460160L,
'balloon.last-update': 1476213030L})]
As you can see, there's an inconsistency as all the other members use
underscore (_), not dash (-). This actually matters with the PCP plugin
since PCP metric names can contain _ but not -.
Now that last-update is part of the API in 2.3 I guess it's too late to
change this but it would nice if in the future the member names could be
kept consistent and underscore used for new members, as it has been so far.
Thanks,
--
Marko Myllynen
8 years, 2 months