[libvirt] [PATCH] Add ability to set rlimits at container boot
by Ryan Cleere
---
docs/formatdomain.html.in | 49 +++++++++++++++++++++++
docs/schemas/domaincommon.rng | 89 +++++++++++++++++++++++++++++++++++++++++
src/conf/domain_conf.c | 92 +++++++++++++++++++++++++++++++++++++++++++
src/conf/domain_conf.h | 33 ++++++++++++++++
src/libvirt_private.syms | 1 +
src/lxc/lxc_controller.c | 32 +++++++++++++++
src/util/virprocess.c | 4 +-
src/util/virprocess.h | 2 +
8 files changed, 300 insertions(+), 2 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index f8d5f89..5aec51c 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -348,6 +348,55 @@
</pre>
+ <p>
+ If you want to set an rlimit of the containter init process instead of
+ inheriting from the host init, set the <code>rlimits</code> element. You
+ are able to set any of the rlimits that setrlimits is able to set using
+ any of the following sub-elements:
+ </p>
+
+ <dl>
+ <dt><code>as</code></dt>
+ <dd>Used to set RLIMIT_AS.</dd>
+ <dt><code>core</code></dt>
+ <dd>Used to set RLIMIT_CORE.</dd>
+ <dt><code>cpu</code></dt>
+ <dd>Used to set RLIMIT_CPU.</dd>
+ <dt><code>data</code></dt>
+ <dd>Used to set RLIMIT_DATA.</dd>
+ <dt><code>fsize</code></dt>
+ <dd>Used to set RLIMIT_FSIZE.</dd>
+ <dt><code>locks</code></dt>
+ <dd>Used to set RLIMIT_LOCKS.</dd>
+ <dt><code>memlock</code></dt>
+ <dd>Used to set RLIMIT_MEMLOCK.</dd>
+ <dt><code>msgqueue</code></dt>
+ <dd>Used to set RLIMIT_MSGQUEUE.</dd>
+ <dt><code>nice</code></dt>
+ <dd>Used to set RLIMIT_NICE.</dd>
+ <dt><code>nofile</code></dt>
+ <dd>Used to set RLIMIT_NOFILE.</dd>
+ <dt><code>nproc</code></dt>
+ <dd>Used to set RLIMIT_NPROC.</dd>
+ <dt><code>rss</code></dt>
+ <dd>Used to set RLIMIT_RSS.</dd>
+ <dt><code>rtprio</code></dt>
+ <dd>Used to set RLIMIT_RTPRIO.</dd>
+ <dt><code>rttime</code></dt>
+ <dd>Used to set RLIMIT_RTTIME.</dd>
+ <dt><code>sigpending</code></dt>
+ <dd>Used to set RLIMIT_SIGPENDING.</dd>
+ <dt><code>stack</code></dt>
+ <dd>Used to set RLIMIT_STACK.</dd>
+ </dl>
+
+ <pre>
+ <rlimits>
+ <nofile>10240</nofile>
+ </rlimits>
+ </pre>
+
+
<h3><a name="elementsSysinfo">SMBIOS System Information</a></h3>
<p>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index d467dce..b98f8d5 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -59,6 +59,9 @@
<ref name="idmap"/>
</optional>
<optional>
+ <ref name="rlimits"/>
+ </optional>
+ <optional>
<ref name="devices"/>
</optional>
<zeroOrMore>
@@ -570,6 +573,92 @@
</interleave>
</element>
</define>
+ <define name="rlimits">
+ <element name="rlimits">
+ <interleave>
+ <optional>
+ <element name="cpu">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="fsize">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="data">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="stack">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="core">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rss">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="nproc">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="nofile">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="memlock">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="as">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="locks">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="sigpending">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="msgqueue">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="nice">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rtprio">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ <optional>
+ <element name="rttime">
+ <ref name='scaledInteger'/>
+ </element>
+ </optional>
+ </interleave>
+ </element>
+ </define>
<!--
Resources usage defines the amount of memory (maximum and possibly
current usage) and number of virtual CPUs used by that domain.
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index d562e1a..399976e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -772,6 +772,24 @@ VIR_ENUM_IMPL(virDomainLoader,
"rom",
"pflash")
+VIR_ENUM_IMPL(virDomainRLimit, VIR_DOMAIN_RLIMIT_LAST,
+ "cpu",
+ "fsize",
+ "data",
+ "stack",
+ "core",
+ "rss",
+ "nproc",
+ "nofile",
+ "memlock",
+ "as",
+ "locks",
+ "sigpending",
+ "msgqueue",
+ "nice",
+ "rtprio",
+ "rttime")
+
/* Internal mapping: subset of block job types that can be present in
* <mirror> XML (remaining types are not two-phase). */
VIR_ENUM_DECL(virDomainBlockJob)
@@ -979,7 +997,40 @@ virDomainBlkioDeviceParseXML(xmlNodePtr root,
return -1;
}
+static virDomainRLimitsPtr
+virDomainRLimitParseXML(xmlNodePtr node)
+{
+ char *c = NULL;
+ long long val;
+ virDomainRLimitsPtr def;
+
+ if (VIR_ALLOC(def) < 0)
+ return NULL;
+ if (node->type == XML_ELEMENT_NODE) {
+ c = (char *)xmlNodeGetContent(node);
+ if (virStrToLong_ll(c, NULL, 10, &val) < 0) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("could not parse rlimit value of %s"),
+ c);
+ goto error;
+ }
+ VIR_FREE(c);
+
+ def->limit = val;
+ if ((def->resource = virDomainRLimitTypeFromString((const char *)node->name)) < 0) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("could not determine resource type of '%s'"),
+ node->name);
+ goto error;
+ }
+ }
+ return def;
+ error:
+ VIR_FREE(c);
+ VIR_FREE(def);
+ return NULL;
+}
static void
virDomainObjListDataFree(void *payload, const void *name ATTRIBUTE_UNUSED)
@@ -14423,6 +14474,34 @@ virDomainDefParseXML(xmlDocPtr xml,
virHashFree(bootHash);
+ if ((node = virXPathNode("./rlimits[1]", ctxt)) != NULL && (n = virXMLChildElementCount(node)) > 0) {
+ xmlNodePtr cur = node->children;
+ if (n && VIR_ALLOC_N(def->rlimits, n) < 0)
+ goto error;
+
+ for (i = 0; i < n; i++) {
+ if (!(def->rlimits[i] = virDomainRLimitParseXML(cur))) {
+ for (j = 0; j < i; j++)
+ VIR_FREE(def->rlimits[j]);
+ VIR_FREE(def->rlimits);
+ goto error;
+ }
+ def->nrlimits++;
+ for (j = 0; j < i; j++) {
+ if (def->rlimits[j]->resource == def->rlimits[i]->resource) {
+ virReportError(VIR_ERR_XML_ERROR,
+ _("duplicate rlimit resources '%s'"),
+ virDomainRLimitTypeToString(def->rlimits[j]->resource));
+ for (int k = 0; k < i; k++)
+ VIR_FREE(def->rlimits[k]);
+ VIR_FREE(def->rlimits);
+ goto error;
+ }
+ }
+ cur = cur->next;
+ }
+ }
+
return def;
error:
@@ -20048,6 +20127,19 @@ virDomainDefFormatInternal(virDomainDefPtr def,
goto error;
}
+ if (def->nrlimits > 0) {
+ virBufferAddLit(buf, "<rlimits>\n");
+ virBufferAdjustIndent(buf, 2);
+ for (n = 0; n < def->nrlimits; n++) {
+ virBufferAsprintf(buf, "<%s>%lld</%s>\n",
+ virDomainRLimitTypeToString(def->rlimits[n]->resource),
+ def->rlimits[n]->limit,
+ virDomainRLimitTypeToString(def->rlimits[n]->resource));
+ }
+ virBufferAdjustIndent(buf, -2);
+ virBufferAddLit(buf, "</rlimits>\n");
+ }
+
virBufferAdjustIndent(buf, -2);
virBufferAddLit(buf, "</domain>\n");
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 93f2314..b032202 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1851,6 +1851,27 @@ typedef enum {
VIR_DOMAIN_CLOCK_BASIS_LAST
} virDomainClockBasis;
+typedef enum {
+ VIR_DOMAIN_RLIMIT_CPU,
+ VIR_DOMAIN_RLIMIT_FSIZE,
+ VIR_DOMAIN_RLIMIT_DATA,
+ VIR_DOMAIN_RLIMIT_STACK,
+ VIR_DOMAIN_RLIMIT_CORE,
+ VIR_DOMAIN_RLIMIT_RSS,
+ VIR_DOMAIN_RLIMIT_NPROC,
+ VIR_DOMAIN_RLIMIT_NOFILE,
+ VIR_DOMAIN_RLIMIT_MEMLOCK,
+ VIR_DOMAIN_RLIMIT_AS,
+ VIR_DOMAIN_RLIMIT_LOCKS,
+ VIR_DOMAIN_RLIMIT_SIGPENDING,
+ VIR_DOMAIN_RLIMIT_MSGQUEUE,
+ VIR_DOMAIN_RLIMIT_NICE,
+ VIR_DOMAIN_RLIMIT_RTPRIO,
+ VIR_DOMAIN_RLIMIT_RTTIME,
+
+ VIR_DOMAIN_RLIMIT_LAST
+} virDomainRLimit;
+
typedef struct _virDomainClockDef virDomainClockDef;
typedef virDomainClockDef *virDomainClockDefPtr;
struct _virDomainClockDef {
@@ -2039,6 +2060,14 @@ struct _virDomainPowerManagement {
int s4;
};
+typedef struct _virDomainRLimits virDomainRLimits;
+typedef virDomainRLimits *virDomainRLimitsPtr;
+
+struct _virDomainRLimits {
+ int resource;
+ long long limit;
+};
+
/*
* Guest VM main configuration
*
@@ -2156,6 +2185,9 @@ struct _virDomainDef {
size_t nshmems;
virDomainShmemDefPtr *shmems;
+ size_t nrlimits;
+ virDomainRLimitsPtr *rlimits;
+
/* Only 1 */
virDomainWatchdogDefPtr watchdog;
virDomainMemballoonDefPtr memballoon;
@@ -2844,6 +2876,7 @@ VIR_ENUM_DECL(virDomainRNGModel)
VIR_ENUM_DECL(virDomainRNGBackend)
VIR_ENUM_DECL(virDomainTPMModel)
VIR_ENUM_DECL(virDomainTPMBackend)
+VIR_ENUM_DECL(virDomainRLimit)
/* from libvirt.h */
VIR_ENUM_DECL(virDomainState)
VIR_ENUM_DECL(virDomainNostateReason)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index bd7870f..7b71ff1 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1896,6 +1896,7 @@ virProcessGetNamespaces;
virProcessGetStartTime;
virProcessKill;
virProcessKillPainfully;
+virProcessPrLimit;
virProcessRunInMountNamespace;
virProcessSetAffinity;
virProcessSetMaxFiles;
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index 8a7c7e8..5c63a1b 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -798,6 +798,35 @@ static int virLXCControllerSetupCgroupLimits(virLXCControllerPtr ctrl)
return ret;
}
+static int virLXCControllerSetupRLimits(virLXCControllerPtr ctrl)
+{
+ int i, ret = -1;
+ struct rlimit rlim;
+
+ VIR_DEBUG("Setting up rlimits");
+
+ VIR_DEBUG("nrlimits = %d", (int)ctrl->def->nrlimits);
+ VIR_DEBUG("setting limits on process %d", ctrl->initpid);
+ if (ctrl->def->nrlimits > 0) {
+ for (i = 0; i < ctrl->def->nrlimits; i++) {
+ rlim.rlim_max = rlim.rlim_cur = ctrl->def->rlimits[i]->limit;
+ VIR_DEBUG("Setting rlimit %s(%d) on pid %d to %lld",
+ virDomainRLimitTypeToString(ctrl->def->rlimits[i]->resource),
+ ctrl->def->rlimits[i]->resource,
+ ctrl->initpid,
+ ctrl->def->rlimits[i]->limit);
+ if (virProcessPrLimit(ctrl->initpid, ctrl->def->rlimits[i]->resource, &rlim) < 0) {
+ virReportSystemError(errno, "%s",
+ _("Unable to set rlimit"));
+ goto cleanup;
+ }
+ }
+ }
+ ret = 0;
+ cleanup:
+ return ret;
+}
+
static void virLXCControllerClientCloseHook(virNetServerClientPtr client)
{
@@ -2318,6 +2347,9 @@ virLXCControllerRun(virLXCControllerPtr ctrl)
if (virLXCControllerSetupCgroupLimits(ctrl) < 0)
goto cleanup;
+ if (virLXCControllerSetupRLimits(ctrl) < 0)
+ goto cleanup;
+
if (virLXCControllerSetupUserns(ctrl) < 0)
goto cleanup;
diff --git a/src/util/virprocess.c b/src/util/virprocess.c
index d0a1500..d83ae28 100644
--- a/src/util/virprocess.c
+++ b/src/util/virprocess.c
@@ -676,13 +676,13 @@ int virProcessSetNamespaces(size_t nfdlist,
}
#if HAVE_PRLIMIT
-static int
+int
virProcessPrLimit(pid_t pid, int resource, struct rlimit *rlim)
{
return prlimit(pid, resource, rlim, NULL);
}
#elif HAVE_SETRLIMIT
-static int
+int
virProcessPrLimit(pid_t pid ATTRIBUTE_UNUSED,
int resource ATTRIBUTE_UNUSED,
struct rlimit *rlim ATTRIBUTE_UNUSED)
diff --git a/src/util/virprocess.h b/src/util/virprocess.h
index bcaede5..c40b41a 100644
--- a/src/util/virprocess.h
+++ b/src/util/virprocess.h
@@ -22,6 +22,7 @@
#ifndef __VIR_PROCESS_H__
# define __VIR_PROCESS_H__
+# include <sys/resource.h>
# include <sys/types.h>
# include "internal.h"
@@ -73,4 +74,5 @@ typedef int (*virProcessNamespaceCallback)(pid_t pid, void *opaque);
int virProcessRunInMountNamespace(pid_t pid,
virProcessNamespaceCallback cb,
void *opaque);
+int virProcessPrLimit(pid_t pid, int resource, struct rlimit *rlim);
#endif /* __VIR_PROCESS_H__ */
--
1.9.3 (Apple Git-50)
9 years, 8 months
[libvirt] [PATCH] virsh.pod: Add information regarding LXC for setmem, memtune, and dominfo
by John Ferlan
https://bugzilla.redhat.com/show_bug.cgi?id=1070695
Modify the virsh man page to more accurately describe which values are
set by the virsh setmem and displayed by the virsh memtune or dominfo
based on the setmem command results.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
tools/virsh.pod | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 343f26f..e435d01 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -1925,6 +1925,13 @@ For example, vSphere/ESX rounds the parameter up to mebibytes (1024 kibibytes).
For Xen, you can only adjust the memory of a running domain if the domain is
paravirtualized or running the PV balloon driver.
+For LXC, the value being set is the cgroups value for limit_in_bytes or the
+maximum amount of user memory (including file cache). When viewing memory
+inside the container, this is the /proc/meminfo "MemTotal" value. When viewing
+the value from the host, use the B<virsh memtune> command. In order to view
+the current memory in use and the maximum value allowed to set memory, use
+the B<virsh dominfo> command.
+
=item B<setmaxmem> I<domain> B<size> [[I<--config>] [I<--live>] |
[I<--current>]]
@@ -1973,6 +1980,9 @@ Thus, when counting them, one needs to add up guest RAM, guest video RAM, and
some memory overhead of QEMU itself. The last piece is hard to determine so
one needs guess and try.
+For LXC, the displayed hard_limit value is the current memory setting
+from the XML or the results from a B<virsh setmem> command.
+
=over 4
=item I<--hard-limit>
--
2.1.0
9 years, 8 months
[libvirt] [PATCH] disk: Provide a default storage source format type.
by John Ferlan
https://bugzilla.redhat.com/show_bug.cgi?id=1181062
According to the formatstorage.html description for <source> element
and "format" attribute: "All drivers are required to have a default
value for this, so it is optional."
As it turns out the disk backend did not choose a default value, so I
added a default of "msdos" if the source type is "unknown" as well as
updating the storage.html backend disk volume driver documentation to
indicate the default format is dos.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
docs/storage.html.in | 1 +
src/storage/storage_backend_disk.c | 13 ++++++++++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/docs/storage.html.in b/docs/storage.html.in
index f920dae..b9b503d 100644
--- a/docs/storage.html.in
+++ b/docs/storage.html.in
@@ -346,6 +346,7 @@
on the size and placement of volumes. The 'free extents'
information will detail the regions which are available for creating
new volumes. A volume cannot span across 2 different free extents.
+ It will default to using <code>msdos</code> as the pool source format.
</p>
<h3>Example pool input</h3>
diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backend_disk.c
index 39082cc..9a79325 100644
--- a/src/storage/storage_backend_disk.c
+++ b/src/storage/storage_backend_disk.c
@@ -468,13 +468,20 @@ virStorageBackendDiskBuildPool(virConnectPtr conn ATTRIBUTE_UNUSED,
}
if (ok_to_mklabel) {
- /* eg parted /dev/sda mklabel msdos */
+ /* eg parted /dev/sda mklabel --script msdos */
+ int format = pool->def->source.format;
+ const char *fmt;
+ if (format == VIR_STORAGE_POOL_DISK_UNKNOWN ||
+ format == VIR_STORAGE_POOL_DISK_DOS)
+ fmt = "msdos";
+ else
+ fmt = virStoragePoolFormatDiskTypeToString(format);
+
cmd = virCommandNewArgList(PARTED,
pool->def->source.devices[0].path,
"mklabel",
"--script",
- ((pool->def->source.format == VIR_STORAGE_POOL_DISK_DOS) ? "msdos" :
- virStoragePoolFormatDiskTypeToString(pool->def->source.format)),
+ fmt,
NULL);
ret = virCommandRun(cmd, NULL);
}
--
2.1.0
9 years, 8 months
[libvirt] [PATCH] docs: add a note that attr 'managed' is only used by PCI devices
by Erik Skultety
Our documentation isn't 100% clear about hostdev 'managed' attribute usage,
because it only makes sense to use it with PCI devices, yet we format
this attribute to all hostdev devices. By adding a note into the docs,
we can possibly avoid confusion from customer's side and also avoid a solution
using ternary logic.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1155887
---
docs/formatdomain.html.in | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index fb0a0d1..6276a61 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -3110,6 +3110,12 @@
then this setting not required.
</dd>
</dl>
+ <p>
+ Note: The <code>managed</code> attribute is only used with PCI devices
+ and is ignored by all the other device types, thus setting
+ <code>managed</code> explicitly with other than PCI device has the same
+ effect as omitting it.
+ </p>
</dd>
<dt><code>source</code></dt>
<dd>The source element describes the device as seen from the host using
--
1.9.3
9 years, 8 months
[libvirt] [PATCH] storage: sheepdog: Avoid skipping variable initialization
by Peter Krempa
Commit 155ca616eb231181f6978efc9e3a1eb0eb60af8a added a error message
that skips initialization of the 'cmd' variable. Fortunately it was not
released.
---
Pushed under the trivial && build-breaker rule.
src/storage/storage_backend_sheepdog.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/storage/storage_backend_sheepdog.c b/src/storage/storage_backend_sheepdog.c
index f389d9b..af15c3b 100644
--- a/src/storage/storage_backend_sheepdog.c
+++ b/src/storage/storage_backend_sheepdog.c
@@ -263,6 +263,7 @@ virStorageBackendSheepdogBuildVol(virConnectPtr conn,
unsigned int flags)
{
int ret = -1;
+ virCommandPtr cmd = NULL;
virCheckFlags(0, -1);
@@ -272,7 +273,7 @@ virStorageBackendSheepdogBuildVol(virConnectPtr conn,
goto cleanup;
}
- virCommandPtr cmd = virCommandNewArgList(COLLIE, "vdi", "create", vol->name, NULL);
+ cmd = virCommandNewArgList(COLLIE, "vdi", "create", vol->name, NULL);
virCommandAddArgFormat(cmd, "%llu", vol->target.capacity);
virStorageBackendSheepdogAddHostArg(cmd, pool);
if (virCommandRun(cmd, NULL) < 0)
--
2.2.2
9 years, 8 months
[libvirt] [libvirt-test-API][PATCH 0/2] Add freepages test cases
by Jincheng Miao
Add freepages test cases.
Jincheng Miao (2):
Add freepage test
Add freepage test case to test_connection.conf
cases/test_connection.conf | 6 +++
repos/virconn/free_pages.py | 97 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 103 insertions(+), 0 deletions(-)
create mode 100644 repos/virconn/free_pages.py
9 years, 8 months
[libvirt] Release of libvirt-1.2.13
by Daniel Veillard
As planned I just made the release for libvirt-1.2.13, it's tagged in
git, and signed tarballs and rpms are available at the usual place:
ftp://libvirt.org/libvirt/
I also pushed a 1.2.13 for libvirt-python but it's really for
completeness as it's virtuallyequivalent to 1.2.12.
February is short, that release packs 'only' 220 commits, mostly
bug fixes and a fair set of improvment, with the NUMA handling area
getting a fairly large update:
Features:
- a lot of NUMA updates and improvments (Peter Krempa)
Documentation:
- Add mist.io as libvirt-based application (Michal Privoznik)
- Fix typos in messages (Yuri Chornoivan)
- Clarify behavior or virDomainDetachDevice (Ján Tomko)
- virsh: Add missing parenthesis into man page (Martin Kletzander)
- man: moved virsh command cpu-models (Daniel Hansel)
- clarify nat range behavior (Ján Tomko)
- add page about virtlockd setup (Daniel P. Berrange)
- split out sanlock setup docs (Daniel P. Berrange)
- Fix version reference in vcpu/iothread scheduling (Martin Kletzander)
- S390: Documentation for ccw address type (Stefan Zimmermann)
- conf: fix a minor typo (Erik Skultety)
- virsh: man: Document behavior of some blkdeviotune's flags when querying (Peter Krempa)
Portability:
- virprocess: fix MinGW build and RHEL-5 build (Pavel Hrdina)
- virutil: fix MinGW build (Pavel Hrdina)
- Make tests independant of system page size (Daniel P. Berrange)
Bug Fixes:
- Really fix XML formatting flags in SaveImageUpdateDef (Ján Tomko)
- Ignore listen attribute of <graphics> for type network listens (Ján Tomko)
- util: storage: Fix error type in virStorageSourceParseBackingURI (Peter Krempa)
- util: storagefile: Don't crash on gluster URIs without path (Peter Krempa)
- conf: error out on invalid host id (Luyao Huang)
- qemu: fix ifindex array reported to systemd (Laine Stump)
- util: check for null ifname inside virNetDevBandwidthSet() (Laine Stump)
- network: only clear bandwidth if it has been set (Laine Stump)
- Fix error messages in virStorageFileGetMetadataFromFD (Ján Tomko)
- Assign default SCSI controller model before checking attribute validity (Ján Tomko)
- qemu: Use correct flags for ABI stability check in SaveImageUpdateDef (Michal Privoznik)
- qemu: fix memory leak while starting a guest (Pavel Hrdina)
- network_conf: Forbid commas in DNS TXT (Michal Privoznik)
- qemuMigrationDriveMirror: Listen to events (Michal Privoznik)
- qemu: Exit job on error path of qemuDomainSetVcpusFlags() (Peter Krempa)
- daemon: Fix segfault by reloading daemon right after start (Pavel Hrdina)
- qemu_cgroup: initialize mem_mask to NULL (Pavel Hrdina)
- PowerPC : Forbid NULL CPU model with 'host-model' mode. (Prerna Saxena)
- qemu: fix vm deadlock when try to use numatune in session mode (Luyao Huang)
- virsh: fix IP address in vncdisplay for listen type='network' (Luyao Huang)
- libxl: Resolve Coverity CHECKED_RETURN (John Ferlan)
- security: Resolve Coverity RESOURCE_LEAK (John Ferlan)
- lxc: Fix container cleanup for LXCProcessStart (Luyao Huang)
- lxc: Move console checks in LXCProcessStart (Luyao Huang)
- security: Refactor virSecurityManagerGenLabel (Erik Skultety)
- security: introduce virSecurityManagerCheckAllLabel function (Erik Skultety)
- Fix a syntax error in the description text of libvirtd.conf (Zhang Bo)
- Allow shrinking of file based volumes (Daniel P. Berrange)
- qemu: do upfront check for vcpupids being null when querying pinning (Daniel P. Berrange)
- qemu: fix setting of VM CPU affinity with TCG (Daniel P. Berrange)
- libxl: disable VNC and SDL until explicitly enabled (Marek Marczykowski-Górecki)
- libxl: pass ipaddr to libxl toolstack (Marek Marczykowski-Górecki)
- domain: avoid potential memory leak in virDomainGraphicsListenSet*() (Laine Stump)
- domain: backfill listen address to parent <graphics> listen attribute (Laine Stump)
- virsh: fix IP address in domdisplay for listen type='network' (Luyao Huang)
- bhyvexml2argvmock: change int to size_t for tapfdSize (Pavel Hrdina)
- qemu: fix crash when migrateuri has no scheme (Luyao Huang)
- conf: Fix libvirtd crash and memory leak caused by virDomainVcpuPinDel() (Zhang Bo)
- conf: forbid seclabel duplicates for domain devices (Erik Skultety)
- Fix qemu job handling in SetSchedulerParameters (Ján Tomko)
- conf: disallow invalid values for video attributes (Martin Kletzander)
- Clear dynamic seclabels on LXCProcessStart failure (Cédric Bosdonnat)
- network: don't allow multiple portgroups with the same name in a network (Laine Stump)
- Error out when custom tap device path makes no sense (Ján Tomko)
- Only parse custom vhost path for virtio interfaces (Ján Tomko)
- Trivially support DomainHasManagedSaveImage (Ján Tomko)
- libxl: update dom->id in libxlDomainCreateWithFlags (Marek Marczykowski-Górecki)
- qemu: Properly report error on uuid mismatch in the migration cookie (Luyao Huang)
- lxc: fix double close handshakefds[1] (Luyao Huang)
- util: storage: Fix parsing of nbd:// URI without path (Peter Krempa)
- conf: Properly report error of unsupported input bus type (Luyao Huang)
- conf: Properly report error when an unsupported chr device name is passed (Luyao Huang)
- virnetdev: fix some issues found by coverity and mingw builds (Pavel Hrdina)
- storage: Need to clear pool prior to refreshPool during Autostart (John Ferlan)
- qemu: command: Don't combine old and modern NUMA node creation (Peter Krempa)
- xend: Don't crash in virDomainXMLDevID (Michal Privoznik)
- conf: Don't mangle vcpu placement randomly (Michal Privoznik)
- qemu: Don't unconditionally delete file in qemuOpenFileAs (John Ferlan)
- virfile: Need to check for ENOTCONN from recvfd failure (John Ferlan)
- Remove flag checking in MacVLanCreate helper stub (Ján Tomko)
- storage: Check the partition name against provided name (John Ferlan)
- storage: Fix check for partition type for disk backing volumes (John Ferlan)
- qemu: fix cannot set graphic passwd via qemuDomainSaveImageDefineXML (Luyao Huang)
- hotplug: only add a chardev to vmdef after monitor call (Ján Tomko)
- systemd: don't report an error if the guest is already terminated (Daniel P. Berrange)
Improvements:
- conf: error out on missing dhcp host attributes (Ján Tomko)
- schema: Allow interleaving the /domain/os/type element (Peter Krempa)
- schema: Add virtio-mmio address type into RNG (Martin Kletzander)
- cpu: Format <cpu/> properly (Michal Privoznik)
- virCPUDefFormatBufFull: Use our general error handling pattern (Michal Privoznik)
- util: Introduce virBufferAddBuffer (Michal Privoznik)
- Rework s390 architecture checking (Stefan Zimmermann)
- Prevent default creation of usb controller on s390 and s390x (Stefan Zimmermann)
- po: Add config file for zanata (Daniel P. Berrange)
- libvirt-guests: Allow time sync on guests resume (Michal Privoznik)
- qemu: Fix AAVMF/OVMF #define names (Cole Robinson)
- libxl: support backend domain setting for disk and net devices (Marek Marczykowski)
- conf: support backend domain name in disk and network devices (Marek Marczykowski)
- network: allow <pf> together with <interface>/<address> in network status (Laine Stump)
- qemu: caps: Add capability bit for the "pc-dimm" device (Peter Krempa)
- conf: Hoist validation of memory size into the post parse callback (Peter Krempa)
- conf: numa: Check ABI stability of NUMA configuration (Peter Krempa)
- conf: ABI: Hugepage backing definition is not guest ABI (Peter Krempa)
- conf: Move all NUMA configuration to virDomainNuma (Peter Krempa)
- conf: numa: Add setter/getter for NUMA node memory size (Peter Krempa)
- conf: numa: Add accessor to NUMA node's memory access mode (Peter Krempa)
- conf: numa: Add accessor for the NUMA node cpu mask (Peter Krempa)
- conf: numa: Add helper to get guest NUMA node count and refactor users (Peter Krempa)
- qemu: command: Unify retrieval of NUMA cell count in qemuBuildNumaArgStr (Peter Krempa)
- conf: numa: Don't pass double pointer to virDomainNumatuneParseXML (Peter Krempa)
- numa: conf: Tweak parameters of virDomainNumatuneSet (Peter Krempa)
- conf: numa: Always allocate the NUMA config (Peter Krempa)
- conf: Allocate domain definition with the new helper (Peter Krempa)
- conf: Separate helper for creating domain objects (Peter Krempa)
- conf: numa: Format <numatune> XML only if necessary (Peter Krempa)
- conf: numa: Refactor logic in virDomainNumatuneParseXML (Peter Krempa)
- conf: numa: Reformat virDomainNumatuneParseXML (Peter Krempa)
- conf: numa: Improve error message in case a numa node doesn't have cpus (Peter Krempa)
- conf: numa: Recalculate rather than remember total NUMA cpu count (Peter Krempa)
- conf: Move enum virMemAccess to the NUMA code and rename it (Peter Krempa)
- conf: numa: Rename virDomainNumatune to virDomainNuma (Peter Krempa)
- conf: Move NUMA cell formatter to numa_conf (Peter Krempa)
- conf: numa: Don't duplicate NUMA cell cpumask (Peter Krempa)
- conf: Refactor virDomainNumaDefCPUParseXML (Peter Krempa)
- conf: Move NUMA cell parsing code from cpu conf to numa conf (Peter Krempa)
- conf: Move numatune_conf to numa_conf (Peter Krempa)
- virsh: fix vcpupin info (Pavel Hrdina)
- virQEMUCapsCacheLookupCopy: Filter qemuCaps based on machineType (Michal Privoznik)
- virQEMUCapsCacheLookupCopy: Pass machine type (Michal Privoznik)
- virsh-edit: Make force editing usable (Martin Kletzander)
- parallels: Set the first HDD from XML as bootable (Mikhail Feoktistov)
- parallels: Use IS_CT() macro instead of STREQ("exe") (Mikhail Feoktistov)
- parallels: code aligment (Mikhail Feoktistov)
- Search for schemas and cpu_map.xml in source tree (Jiri Denemark)
- qemuProcessHandleBlockJob: Take status into account (Michal Privoznik)
- qemuProcessHandleBlockJob: Set disk->mirrorState more often (Michal Privoznik)
- PowerPC : Make 'qemu-system-ppc64' the default emulator on ppc64[le]. (Prerna Saxena)
- qemuBuildMemoryBackendStr: Report backend requirement more appropriately (Michal Privoznik)
- qemuxml2argvtest: Fake response from numad (Michal Privoznik)
- numatune_conf: Expose virDomainNumatuneNodeSpecified (Michal Privoznik)
- lxc: Modify/add some debug messages (John Ferlan)
- Wire up mrg_rxbuf option for qemu (Ján Tomko)
- Add mrg_rxbuf option to virtio interfaces (Ján Tomko)
- virsh attach-interface: Allow macvtap hotplug (Michal Privoznik)
- virsh attach-interface: Use virDomainNetType{From,To}String() (Michal Privoznik)
- virsh attach-interface: Use enum instead of arbitrary integers (Michal Privoznik)
- libvirt_private.syms: Expose virDomainNetTypeFromString (Michal Privoznik)
- qemu: Add support for setting vCPU and I/O thread scheduler setting (Martin Kletzander)
- docs, schema, conf: Add support for setting scheduler parameters of guest threads (Martin Kletzander)
- util: Add virProcessSetScheduler() function for scheduler settings (Martin Kletzander)
- domain: include portgroup in interface status xml (Laine Stump)
- qemu: qemuOpenFileAs - set flag VIR_FILE_OPEN_FORCE_MODE (John Ferlan)
- virfile: Adjust error path for virFileOpenForked (John Ferlan)
- schema: allow multiple seclabel for devices in domaincommon.rng (Erik Skultety)
- qemu: Implement random number generator hotunplug (Luyao Huang)
- qemu: Implement random number generator hotplug (Luyao Huang)
- qemu: Implement random number generator cold (un)plug (Peter Krempa)
- conf: Add helpers to insert/remove/find RNG devices in domain def (Luyao Huang)
- audit: export virDomainAuditRNG (Luyao Huang)
- qemu: command: Refactor creation of RNG device commandline (Peter Krempa)
- qemu: command: Break some very long lines in qemuBuildRNGDevStr() (Peter Krempa)
- qemu: command: Shuffle around formatting of alias for RNG device backend (Peter Krempa)
- qemu: command: Make RNG backend device IDs unique (Luyao Huang)
- qemu: refactor qemuBuildRNGDeviceArgs to allow reuse in RNG hotplug (Luyao Huang)
- qemu: Add helper to assign RNG device aliases (Luyao Huang)
- conf: Introduce helper to find duplicate device address (Peter Krempa)
- S390: ccw support for virsh attach-disk address parameter (Stefan Zimmermann)
- maint: improve usage of autogen's --no-git (Stefan Zimmermann)
- qemu: include libvirt & QEMU versions in QEMU log files (Daniel P. Berrange)
- nodedev: check/add for scsi_host caps for NumOfCaps and ListCaps (John Ferlan)
- nodedev: check/add for scsi_host caps for ListDevices (Shivaprasad G Bhat)
- cpu: add Freescale ppc64 CPU models (Olivia Yin)
- tests: virstoragetest: Switch backing chain test to use automatic numbering (Peter Krempa)
- virsh-volume: add support for --reflink (Chen Hanxiao)
- util: make virNetDev(Get|Set)IFFlags() static (Laine Stump)
- qemu: command: Refactor NUMA backend object formatting to use JSON objs (Peter Krempa)
- qemu: command: Switch to bytes when formatting size for memory backends (Peter Krempa)
- qemu: command: Unify values for boolean values when formating memory backends (Peter Krempa)
- qemu: command: Shuffle around formating of alias for memory backend objs (Peter Krempa)
- qemu: Extract code to setup memory backing objects (Peter Krempa)
- qemu: command: Add helper to format -object strings from JSON representation (Peter Krempa)
- util: json: add helper to iterate JSON object key=value pairs (Peter Krempa)
- util: json: Add functions to convert JSON arrays from/to virBitmaps (Peter Krempa)
- util: bitmap: Add option to allocate bitmap without reporting error (Peter Krempa)
- util: json: make value object creator universal by supporting adding (Peter Krempa)
- test: utils: Add helpers for automatic numbering of test cases (Peter Krempa)
- conf: numatune: Extract code for requesting memory nodeset from formatting (Peter Krempa)
- qemu: change macvtap device options in response to NIC_RX_FILTER_CHANGED (Tony Krowiak)
- util: Functions for getting/setting device options (Tony Krowiak)
- qemu: Adjust EndAsyncJob for qemuDomainSaveInternal error path (John Ferlan)
- schemas: Allow all generic elements and attributes for all interfaces (Michal Privoznik)
- qemu: Add AAVMF to the list of known UEFIs (Michal Privoznik)
- qemu: Allow UEFI paths to be specified at compile time (Michal Privoznik)
- Fix syntax-check (Ján Tomko)
- util: bitmap: Tolerate NULL bitmaps in virBitmapEqual (Peter Krempa)
- storage: When delete extended partition, need to refresh pool (John Ferlan)
- storage: Adjust how to refresh extended partition disk data (John Ferlan)
- storage: Attempt error recovery in virStorageBackendDiskCreateVol (John Ferlan)
- storage: Move virStorageBackendDiskDeleteVol (John Ferlan)
- libvirt.spec: remove vbox storage and network .so files (Pavel Hrdina)
- Split qemuDomainChrInsert into two parts (Ján Tomko)
- lxc: report veth device indexes to systemd (Daniel P. Berrange)
- lxc: more logging during startup paths (Daniel P. Berrange)
- lxc: delay setup of cgroup until we have the init pid (Daniel P. Berrange)
- lxc: only write XML once for lxc controller (Daniel P. Berrange)
- lxc: re-arrange startup synchronization sequence with controller (Daniel P. Berrange)
- lxc: don't build pidfile string multiple times (Daniel P. Berrange)
- qemu: report TAP device indexes to systemd (Daniel P. Berrange)
- Fix shadowed variable warning (Ján Tomko)
- storage: add a flag to clone files on btrfs (Chen Hanxiao)
- storage: introduce btrfsCloneFile() for COW copy (Chen Hanxiao)
- Removing probing of secondary drivers (Daniel P. Berrange)
- don't disable state driver when libvirtd is not built (Daniel P. Berrange)
- Remove all secondary driver private data fields (Daniel P. Berrange)
- Remove use of interfacePrivateData from udev driver (Daniel P. Berrange)
- Remove use of nodeDevicePrivateData from nodeDev driver (Daniel P. Berrange)
- Remove use of storagePrivateData/networkPrivateData from vbox (Daniel P. Berrange)
- Remove use of nwfilterPrivateData from nwfilter driver (Daniel P. Berrange)
- Remove use of secretPrivateData from secret driver (Daniel P. Berrange)
- qemu: Fix job handling in qemuDomainSetMetadata (Peter Krempa)
- qemu: Fix job type in qemuDomainGetBlockIoTune (Peter Krempa)
- qemu: Fix job handling in qemuDomainSetSchedulerParametersFlags (Peter Krempa)
- qemu: Fix job handling in qemuDomainSetMemoryParameters (Peter Krempa)
- qemu: Fix job handling in qemuDomainSetAutostart (Peter Krempa)
- qemu: Fix job handling in qemuDomainPinEmulator (Peter Krempa)
- qemu: Fix job handling in qemuDomainPinVcpuFlags (Peter Krempa)
So thanks everyone for the help with this release, be it with reports,
patches, reviews or documentation !
Daniel
--
Daniel Veillard | Open Source and Standards, Red Hat
veillard(a)redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | virtualization library http://libvirt.org/
9 years, 8 months
[libvirt] [PATCH] docs: Add mist.io as libvirt-based application
by Michal Privoznik
As reported on the libvirt-users list [1], there's new web
application called mist.io which uses libvirt as one of its
backends. Lets add it into our list of libivrt based
applications.
1: https://www.redhat.com/archives/libvirt-users/2015-February/msg00096.html
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
docs/apps.html.in | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/docs/apps.html.in b/docs/apps.html.in
index 4403ce6..79ee73a 100644
--- a/docs/apps.html.in
+++ b/docs/apps.html.in
@@ -404,6 +404,14 @@
functions, such as live migration that allows for load
balancing between cluster nodes, monitoring CPU, memory.
</dd>
+ <dt><a href="http://mist.io/">mist.io</a></dt>
+ <dd>
+ Mist.io is an open source project and a service that can assist you in
+ managing your virtual machines on a unified way, providing a simple
+ interface for all of your infrastructure (multiple public cloud
+ providers, OpenStack based public/private clouds, Docker servers, bare
+ metal servers and now KVM hypervisors).
+ </dd>
</dl>
<h2><a name="mobile">Mobile applications</a></h2>
--
2.0.5
9 years, 8 months