[libvirt] [PATCH] Fix a string format bug in qemu_cgroup.c
by tangchen
Signed-off-by: Tang Chen <tangchen(a)cn.fujitsu.com>
---
src/qemu/qemu_cgroup.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
index f8f375f..662d41d 100644
--- a/src/qemu/qemu_cgroup.c
+++ b/src/qemu/qemu_cgroup.c
@@ -473,8 +473,8 @@ cleanup:
rc = virCgroupSetCpuCfsPeriod(cgroup, old_period);
if (rc < 0)
virReportSystemError(-rc,
- _("%s"),
- "Unable to rollback cpu bandwidth period");
+ "%s",
+ _("Unable to rollback cpu bandwidth period"));
}
return -1;
--
1.7.3.1
--
Best Regards,
Tang chen
12 years, 4 months
[libvirt] [PATCHv2] docs: Improve patch submission guidelines
by Michal Privoznik
We should really advise (new) developers to send rebased patches
that apply cleanly and use git-send-email rather than all other
obscure ways.
---
HACKING | 22 +++++++++++++++++++++-
docs/hacking.html.in | 33 ++++++++++++++++++++++++++++-----
2 files changed, 49 insertions(+), 6 deletions(-)
diff --git a/HACKING b/HACKING
index 69ea96b..def94ee 100644
--- a/HACKING
+++ b/HACKING
@@ -21,9 +21,29 @@ or:
git diff > libvirt-myfeature.patch
+However, the usual workflow of libvirt developer is: git checkout master
+ git pull
+ git checkout -b workbranch
+ Hack, committing any changes along the way
+
+Then, when you want to post your patches: git checkout master
+ git pull
+ git checkout workbranch
+ git rebase master
+ (fix any conflicts)
+ git send-email --compose --to=libvir-list(a)redhat.com master
+
+Please follow this as close as you can, especially the rebase and git
+send-email part as it makes developer's, who is reviewing your patch set, life
+easier. One should avoid sending patches as attachment but rather send them in
+email body among with commit message.
+
(3) Split large changes into a series of smaller patches, self-contained if
possible, with an explanation of each patch and an explanation of how the
-sequence of patches fits together.
+sequence of patches fits together. Moreover, please keep in mind that it's
+required to be able to compile cleanly after each patch.
+
+
(4) Make sure your patches apply against libvirt GIT. Developers only follow GIT
and don't care much about released versions.
diff --git a/docs/hacking.html.in b/docs/hacking.html.in
index 89f9980..af852e0 100644
--- a/docs/hacking.html.in
+++ b/docs/hacking.html.in
@@ -11,19 +11,42 @@
<li><p>Post patches in unified diff format. A command similar to this
should work:</p>
-<pre>
+<del><pre>
diff -urp libvirt.orig/ libvirt.modified/ > libvirt-myfeature.patch
-</pre>
+</pre></del>
<p>
or:
</p>
<pre>
git diff > libvirt-myfeature.patch
</pre>
- </li>
- <li>Split large changes into a series of smaller patches, self-contained
+ However, the usual workflow of libvirt developer is:
+<pre>
+ git checkout master
+ git pull
+ git checkout -b workbranch
+ Hack, committing any changes along the way
+</pre>
+ Then, when you want to post your patches:
+<pre>
+ git checkout master
+ git pull
+ git checkout workbranch
+ git rebase master
+ (fix any conflicts)
+ git send-email --compose --no-chain-reply-to --to=libvir-list(a)redhat.com master
+</pre>
+ <p>Please follow this as close as you can, especially the rebase and git
+ send-email part as it makes developer's, who is reviewing your patch
+ set, life easier. One should avoid sending patches as attachment but
+ rather send them in email body among with commit message.</p></li>
+
+ <li><p>Split large changes into a series of smaller patches, self-contained
if possible, with an explanation of each patch and an explanation of how
- the sequence of patches fits together.</li>
+ the sequence of patches fits together. Moreover, please keep in mind that
+ it's required to be able to compile cleanly after each patch.</p>
+ </li>
+
<li>Make sure your patches apply against libvirt GIT. Developers
only follow GIT and don't care much about released versions.</li>
<li><p>Run the automated tests on your code before submitting any changes.
--
1.7.8.6
12 years, 4 months
[libvirt] [PATCH] build: detect all improper uses of _("%s")
by Eric Blake
The only useful translation of "%s" as a format string is "%s" (I
suppose you could claim "%$1s" is also valid, but why bother). So
it is not worth translating; fixing this exposes some instances
where we were failing to translate real error messages.
* cfg.mk (sc_prohibit_useless_translation): New rule.
* src/lxc/lxc_driver.c (lxcSetVcpuBWLive): Fix offender.
* src/openvz/openvz_conf.c (openvzReadFSConf): Likewise.
* src/qemu/qemu_cgroup.c (qemuSetupCgroupVcpuBW)
(qemuSetupCgroupForVcpu): Likewise.
* src/qemu/qemu_driver.c (qemuSetVcpusBWLive): Likewise.
* src/xenapi/xenapi_utils.c (xenapiSessionErrorHandle): Likewise.
---
This is a followup to:
https://www.redhat.com/archives/libvir-list/2012-July/msg00403.html
cfg.mk | 6 ++++++
src/lxc/lxc_driver.c | 5 ++---
src/openvz/openvz_conf.c | 5 ++---
src/qemu/qemu_cgroup.c | 12 +++++-------
src/qemu/qemu_driver.c | 5 ++---
src/xenapi/xenapi_utils.c | 8 +++++---
6 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/cfg.mk b/cfg.mk
index 7664d5d..6dfe799 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -622,6 +622,12 @@ sc_prohibit_newline_at_end_of_diagnostic:
&& { echo '$(ME): newline at end of message(s)' 1>&2; \
exit 1; } || :
+# The strings "" and "%s" should never be marked for translation.
+sc_prohibit_useless_translation:
+ @prohibit='_\("(%s)?"\)' \
+ halt='$(ME): found useless translation' \
+ $(_sc_search_regexp)
+
# Enforce recommended preprocessor indentation style.
sc_preprocessor_indentation:
@if cppi --version >/dev/null 2>&1; then \
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index b58aeae..ae024fe 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -2965,9 +2965,8 @@ cleanup:
if (period) {
rc = virCgroupSetCpuCfsPeriod(cgroup, old_period);
if (rc < 0)
- virReportSystemError(-rc,
- _("%s"),
- "Unable to rollback cpu bandwidth period");
+ virReportSystemError(-rc, "%s",
+ _("Unable to rollback cpu bandwidth period"));
}
return -1;
diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c
index ad27d37..7b66299 100644
--- a/src/openvz/openvz_conf.c
+++ b/src/openvz/openvz_conf.c
@@ -457,9 +457,8 @@ openvzReadFSConf(virDomainDefPtr def,
/* Ensure that we can multiply by 1024 without overflowing. */
if (barrier > ULLONG_MAX / 1024 ||
limit > ULLONG_MAX / 1024 ) {
- virReportSystemError(VIR_ERR_OVERFLOW,
- _("%s"),
- "Unable to parse quota");
+ virReportSystemError(VIR_ERR_OVERFLOW, "%s",
+ _("Unable to parse quota"));
goto error;
}
fs->space_soft_limit = barrier * 1024; /* unit is bytes */
diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
index f8f375f..e39f5e1 100644
--- a/src/qemu/qemu_cgroup.c
+++ b/src/qemu/qemu_cgroup.c
@@ -1,7 +1,7 @@
/*
* qemu_cgroup.c: QEMU cgroup management
*
- * Copyright (C) 2006-2011 Red Hat, Inc.
+ * Copyright (C) 2006-2012 Red Hat, Inc.
* Copyright (C) 2006 Daniel P. Berrange
*
* This library is free software; you can redistribute it and/or
@@ -472,9 +472,8 @@ cleanup:
if (period) {
rc = virCgroupSetCpuCfsPeriod(cgroup, old_period);
if (rc < 0)
- virReportSystemError(-rc,
- _("%s"),
- "Unable to rollback cpu bandwidth period");
+ virReportSystemError(-rc, "%s",
+ _("Unable to rollback cpu bandwidth period"));
}
return -1;
@@ -507,9 +506,8 @@ int qemuSetupCgroupForVcpu(struct qemud_driver *driver, virDomainObjPtr vm)
if (qemuCgroupControllerActive(driver, VIR_CGROUP_CONTROLLER_CPU)) {
/* Ensure that we can multiply by vcpus without overflowing. */
if (quota > LLONG_MAX / vm->def->vcpus) {
- virReportSystemError(EINVAL,
- _("%s"),
- "Unable to set cpu bandwidth quota");
+ virReportSystemError(EINVAL, "%s",
+ _("Unable to set cpu bandwidth quota"));
goto cleanup;
}
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 3410535..377be9f 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -7134,9 +7134,8 @@ qemuSetVcpusBWLive(virDomainObjPtr vm, virCgroupPtr cgroup,
/* Ensure that we can multiply by vcpus without overflowing. */
if (quota > LLONG_MAX / vm->def->vcpus) {
- virReportSystemError(EINVAL,
- _("%s"),
- "Unable to set cpu bandwidth quota");
+ virReportSystemError(EINVAL, "%s",
+ _("Unable to set cpu bandwidth quota"));
goto cleanup;
}
diff --git a/src/xenapi/xenapi_utils.c b/src/xenapi/xenapi_utils.c
index 3471b6a..e5a9cc5 100644
--- a/src/xenapi/xenapi_utils.c
+++ b/src/xenapi/xenapi_utils.c
@@ -1,6 +1,6 @@
/*
* xenapi_utils.c: Xen API driver -- utils parts.
- * Copyright (C) 2011 Red Hat, Inc.
+ * Copyright (C) 2011-2012 Red Hat, Inc.
* Copyright (C) 2009, 2010 Citrix Ltd.
*
* This library is free software; you can redistribute it and/or
@@ -372,11 +372,13 @@ xenapiSessionErrorHandle(virConnectPtr conn, virErrorNumber errNum,
if (buf == NULL && priv != NULL && priv->session != NULL) {
char *ret = returnErrorFromSession(priv->session);
- virReportErrorHelper(VIR_FROM_XENAPI, errNum, filename, func, lineno, _("%s"), ret);
+ virReportErrorHelper(VIR_FROM_XENAPI, errNum, filename, func, lineno,
+ "%s", ret);
xen_session_clear_error(priv->session);
VIR_FREE(ret);
} else {
- virReportErrorHelper(VIR_FROM_XENAPI, errNum, filename, func, lineno, _("%s"), buf);
+ virReportErrorHelper(VIR_FROM_XENAPI, errNum, filename, func, lineno,
+ "%s", buf);
}
}
--
1.7.10.4
12 years, 4 months
[libvirt] [PATCH] systemd: start libvirtd after network
by Jim Fehlig
Domains configured with autostart may fail to start if the host
network stack has not been started. E.g. when using bridged
networking autostarting a domain can fail with
libvirtd[1403]: 2012-06-20 13:23:49.833+0000: 1485: error :
qemuAutostartDomain:177 : Failed to autostart VM 'test': Cannot get
interface MTU on 'br0': No such device
---
daemon/libvirtd.service.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/daemon/libvirtd.service.in b/daemon/libvirtd.service.in
index 33724ee..b7afadf 100644
--- a/daemon/libvirtd.service.in
+++ b/daemon/libvirtd.service.in
@@ -6,6 +6,7 @@
[Unit]
Description=Virtualization daemon
Before=libvirt-guests.service
+After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/libvirtd
--
1.7.10.4
12 years, 4 months
[libvirt] [PATCH] util: Use current uid and gid if they are passed as -1 for virDirCreate
by Osier Yang
All the callers of virDirCreate are updated incidentally.
---
src/storage/storage_backend_fs.c | 23 ++++++-----------------
src/util/util.c | 6 ++++++
2 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index bde4528..233e001 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -789,17 +789,10 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
/* Now create the final dir in the path with the uid/gid/mode
* requested in the config. If the dir already exists, just set
* the perms. */
- uid_t uid;
- gid_t gid;
-
- uid = (pool->def->target.perms.uid == (uid_t) -1)
- ? getuid() : pool->def->target.perms.uid;
- gid = (pool->def->target.perms.gid == (gid_t) -1)
- ? getgid() : pool->def->target.perms.gid;
-
if ((err = virDirCreate(pool->def->target.path,
pool->def->target.perms.mode,
- uid, gid,
+ pool->def->target.perms.uid,
+ pool->def->target.perms.gid,
VIR_DIR_CREATE_FORCE_PERMS |
VIR_DIR_CREATE_ALLOW_EXIST |
(pool->def->type == VIR_STORAGE_POOL_NETFS
@@ -811,9 +804,9 @@ virStorageBackendFileSystemBuild(virConnectPtr conn ATTRIBUTE_UNUSED,
/* Reflect the actual uid and gid to the config. */
if (pool->def->target.perms.uid == (uid_t) -1)
- pool->def->target.perms.uid = uid;
+ pool->def->target.perms.uid = getuid();
if (pool->def->target.perms.gid == (gid_t) -1)
- pool->def->target.perms.gid = gid;
+ pool->def->target.perms.gid = getgid();
if (flags != 0) {
ret = virStorageBackendMakeFileSystem(pool, flags);
@@ -1053,13 +1046,9 @@ static int createFileDir(virConnectPtr conn ATTRIBUTE_UNUSED,
return -1;
}
- uid_t uid = (vol->target.perms.uid == -1)
- ? getuid() : vol->target.perms.uid;
- gid_t gid = (vol->target.perms.gid == -1)
- ? getgid() : vol->target.perms.gid;
-
if ((err = virDirCreate(vol->target.path, vol->target.perms.mode,
- uid, gid,
+ vol->target.perms.uid,
+ vol->target.perms.gid,
VIR_DIR_CREATE_FORCE_PERMS |
(pool->def->type == VIR_STORAGE_POOL_NETFS
? VIR_DIR_CREATE_AS_UID : 0))) < 0) {
diff --git a/src/util/util.c b/src/util/util.c
index ce98d20..aec5512 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -1123,6 +1123,12 @@ int virDirCreate(const char *path, mode_t mode,
int waitret;
int status, ret = 0;
+ /* allow using -1 to mean "current value" */
+ if (uid == (uid_t) -1)
+ uid = getuid();
+ if (gid == (gid_t) -1)
+ gid = getgid();
+
if ((!(flags & VIR_DIR_CREATE_AS_UID))
|| (getuid() != 0)
|| ((uid == 0) && (gid == 0))
--
1.7.7.3
12 years, 4 months
[libvirt] [PATCH] virsh: Ensure the parents of the readline history path exists
by Osier Yang
Instead of changing the existed virFileMakePath to accept mode
argument and modifying a pile of its uses, this patch introduces
virFileMakePathWithMode, and use it instead of mkdir() to create
the readline history dir.
---
src/libvirt_private.syms | 1 +
src/util/util.c | 15 +++++++++++----
src/util/util.h | 2 ++
tools/virsh.c | 3 ++-
4 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 6625fc6..b173590 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1146,6 +1146,7 @@ virFileIsDir;
virFileLinkPointsTo;
virFileLock;
virFileMakePath;
+virFileMakePathWithMode;
virFileMatchesNameSuffix;
virFileOpenAs;
virFileOpenTty;
diff --git a/src/util/util.c b/src/util/util.c
index f886ea7..47b1366 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -1248,7 +1248,7 @@ int virDirCreate(const char *path ATTRIBUTE_UNUSED,
}
#endif /* WIN32 */
-static int virFileMakePathHelper(char *path)
+static int virFileMakePathHelper(char *path, mode_t mode)
{
struct stat st;
char *p;
@@ -1272,13 +1272,13 @@ static int virFileMakePathHelper(char *path)
if (p != path) {
*p = '\0';
- if (virFileMakePathHelper(path) < 0)
+ if (virFileMakePathHelper(path, mode) < 0)
return -1;
*p = '/';
}
- if (mkdir(path, 0777) < 0 && errno != EEXIST)
+ if (mkdir(path, mode) < 0 && errno != EEXIST)
return -1;
return 0;
@@ -1292,13 +1292,20 @@ static int virFileMakePathHelper(char *path)
*/
int virFileMakePath(const char *path)
{
+ return virFileMakePathWithMode(path, 0777);
+}
+
+int
+virFileMakePathWithMode(const char *path,
+ mode_t mode)
+{
int ret = -1;
char *tmp;
if ((tmp = strdup(path)) == NULL)
goto cleanup;
- ret = virFileMakePathHelper(tmp);
+ ret = virFileMakePathHelper(tmp, mode);
cleanup:
VIR_FREE(tmp);
diff --git a/src/util/util.h b/src/util/util.h
index 0af7e6d..33226b2 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -115,6 +115,8 @@ enum {
int virDirCreate(const char *path, mode_t mode, uid_t uid, gid_t gid,
unsigned int flags) ATTRIBUTE_RETURN_CHECK;
int virFileMakePath(const char *path) ATTRIBUTE_RETURN_CHECK;
+int virFileMakePathWithMode(const char *path,
+ mode_t mode) ATTRIBUTE_RETURN_CHECK;
char *virFileBuildPath(const char *dir,
const char *name,
diff --git a/tools/virsh.c b/tools/virsh.c
index 9008837..01e7ce0 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -20627,7 +20627,8 @@ static void
vshReadlineDeinit (vshControl *ctl)
{
if (ctl->historyfile != NULL) {
- if (mkdir(ctl->historydir, 0755) < 0 && errno != EEXIST) {
+ if (virFileMakePathWithMode(ctl->historydir, 0755) < 0 &&
+ errno != EEXIST) {
char ebuf[1024];
vshError(ctl, _("Failed to create '%s': %s"),
ctl->historydir, virStrerror(errno, ebuf, sizeof(ebuf)));
--
1.7.7.3
12 years, 4 months
[libvirt] [PATCH] [libvirt-java] Fix typo in Domain.java.
by Claudio Bley
Hi.
Just a small typo fix:
---
diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java
index fe9f3b0..71c6397 100644
--- a/src/main/java/org/libvirt/Domain.java
+++ b/src/main/java/org/libvirt/Domain.java
@@ -678,7 +678,7 @@ public class Domain {
* @return 0 in case of success, and -1 in case of error
* @throws LibvirtException
*/
- public int managedSaveRemote() throws LibvirtException {
+ public int managedSaveRemove() throws LibvirtException {
int returnValue = libvirt.virDomainManagedSaveRemove(VDP, 0);
processError();
return returnValue;
---
Best regards,
Claudio.
--
AV-Test GmbH, Henricistraße 20, 04155 Leipzig, Germany
Phone: +49 341 265 310 19
Web:<http://www.av-test.org>
Eingetragen am / Registered at: Amtsgericht Stendal (HRB 114076)
Geschaeftsfuehrer (CEO): Andreas Marx, Guido Habicht, Maik Morgenstern
--
AV-Test GmbH, Henricistraße 20, 04155 Leipzig, Germany
Phone: +49 341 265 310 19
Web:<http://www.av-test.org>
Eingetragen am / Registered at: Amtsgericht Stendal (HRB 114076)
Geschaeftsfuehrer (CEO): Andreas Marx, Guido Habicht, Maik Morgenstern
12 years, 4 months
[libvirt] [PATCH] openvz: Handle domain obj hash map errors
by Guido Günther
This makes the driver fail with a clear error message in case of uuid
collisions (for example if somebody copied a container configuration
without updating the UUID).
OpenVZ itself doesn't complain about duplicate UUIDs since this
parameter is only used by libvirt.
---
src/openvz/openvz_conf.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c
index 503c8a0..0764c2c 100644
--- a/src/openvz/openvz_conf.c
+++ b/src/openvz/openvz_conf.c
@@ -684,8 +684,11 @@ int openvzLoadDomains(struct openvz_driver *driver) {
openvzReadMemConf(dom->def, veid);
virUUIDFormat(dom->def->uuid, uuidstr);
- if (virHashAddEntry(driver->domains.objs, uuidstr, dom) < 0)
+ if (virHashAddEntry(driver->domains.objs, uuidstr, dom) < 0) {
+ openvzError(VIR_ERR_INTERNAL_ERROR,
+ _("Could not add UUID for container %d"), veid);
goto cleanup;
+ }
virDomainObjUnlock(dom);
dom = NULL;
--
1.7.10.4
12 years, 4 months
[libvirt] [PATCH 00/13] Support hypervisor-threads-pin in vcpupin.
by tangchen
Hi~
Users can use vcpupin command to bind a vcpu thread to a specific physical cpu.
But besides vcpu threads, there are alse some other threads created by qemu
(known as hypervisor threads) that could not be explicitly bound to physical cpus.
The first 3 patches are from Wen Congyang, which implement Cgroup for differrent
hypervisors.
The other 10 patches implemented hypervisor threads binding, in two ways:
1) Use sched_setaffinity() function;
2) In cpuset cgroup.
A new xml element is introduced, and vcpupin command is improved, see below.
1. Introduce new xml elements:
<cputune>
......
<hypervisorpin cpuset='1'/>
</cputune>
2. Improve vcpupin command to support hypervisor threads binding.
For example, vm1 has the following configuration:
<cputune>
<vcpupin vcpu='1' cpuset='1'/>
<vcpupin vcpu='0' cpuset='0'/>
<hypervisorpin cpuset='1'/>
</cputune>
1) query all threads pining
# vcpupin vm1
VCPU: CPU Affinity
----------------------------------
0: 0
1: 1
Hypervisor: CPU Affinity
----------------------------------
*: 1
2) query hypervisor threads pining only
# vcpupin vm1 --hypervisor
Hypervisor: CPU Affinity
----------------------------------
*: 1
3) change hypervisor threads pining
# vcpupin vm1 --hypervisor 0-1
# vcpupin vm1 --hypervisor
Hypervisor: CPU Affinity
----------------------------------
*: 0-1
# taskset -p 397
pid 397's current affinity mask: 3
Note: If users want to pin a vcpu thread to pcpu, --vcpu option could no longer be omitted.
Tang Chen (10):
Enable cpuset cgroup and synchronous vcpupin info to cgroup.
Support hypervisorpin xml parse.
Introduce qemuSetupCgroupHypervisorPin and synchronize hypervisorpin
info to cgroup.
Add qemuProcessSetHypervisorAffinites and set hypervisor threads
affinities
Introduce virDomainHypervisorPinAdd and virDomainHypervisorPinDel
functions
Introduce qemudDomainPinHypervisorFlags and
qemudDomainGetHypervisorPinInfo in qemu driver.
Introduce remoteDomainPinHypervisorFlags and
remoteDomainGetHypervisorPinInfo functions in remote driver.
Introduce remoteDispatchDomainPinHypervisorFlags and
remoteDispatchDomainGetHypervisorPinInfo functions.
Introduce virDomainPinHypervisorFlags and
virDomainGetHypervisorPinInfo functions.
Improve vcpupin to support hypervisorpin dynically.
Wen Congyang (3):
Introduce the function virCgroupForHypervisor
introduce the function virCgroupMoveTask()
create a new cgroup and move all hypervisor threads to the new cgroup
daemon/remote.c | 103 +++++++++
docs/schemas/domaincommon.rng | 7 +
include/libvirt/libvirt.h.in | 9 +
src/conf/domain_conf.c | 173 +++++++++++++++-
src/conf/domain_conf.h | 7 +
src/driver.h | 13 +-
src/libvirt.c | 147 +++++++++++++
src/libvirt_private.syms | 6 +
src/libvirt_public.syms | 6 +
src/qemu/qemu_cgroup.c | 149 +++++++++++++-
src/qemu/qemu_cgroup.h | 5 +
src/qemu/qemu_driver.c | 266 ++++++++++++++++++++++-
src/qemu/qemu_process.c | 58 +++++
src/remote/remote_driver.c | 102 +++++++++
src/remote/remote_protocol.x | 24 ++-
src/remote_protocol-structs | 24 ++
src/util/cgroup.c | 132 +++++++++++-
src/util/cgroup.h | 9 +
tests/qemuxml2argvdata/qemuxml2argv-cputune.xml | 1 +
tests/vcpupin | 6 +-
tools/virsh.c | 145 ++++++++----
tools/virsh.pod | 16 +-
22 files changed, 1335 insertions(+), 73 deletions(-)
--
1.7.3.1
12 years, 4 months
[libvirt] [PATCH] ESX: interface driver routines
by Ata Bohra
Hi All,
Attached patch adds missing routines to esx interface driver, one of the missing routine is esxInterfaceDefineXML. I am currently working on it and will update patch soon. Also, patch addresses some of the changes needed in esx_vi_generator.py and esx_vi_types.c to deserialize "String List" types.
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: src/esx/esx_interface_driver.c
# modified: src/esx/esx_vi.c
# modified: src/esx/esx_vi.h
# modified: src/esx/esx_vi_generator.input
# modified: src/esx/esx_vi_generator.py
# modified: src/esx/esx_vi_types.c
Thanks!
Ata
Attachment:
1. esxInterface.diff
12 years, 4 months