[libvirt] Re: [virt-tools-list] Questions about virt-manager running on Arch of Itanium 64
by Cole Robinson
cc-ing libvirt-list
On 11/19/2009 10:35 PM, Dustin Xiong wrote:
>
>
>>> Hi everyone!
>>> I am a newer to the virt-manager and maillist. I sent the mail just want
>>> to ask some questions about virt-manager running on Arch of Itanium 64.
>>> My itanium 64 cpu actualy support the VT. I compiled the kvm85
>>> successful. Then I can use the binary /usr/local/bin/qemu-system-ia64 to
>>> create a vm and running. But in my /proc/cpuinfo , there doesn't have
>>> flags such as vmx or svm. So when I use the virt-manager to install a
>>> vm, the virt-manager will tell me my cpu doesn't support fully
>>> virtualization, then I can't install vm. In fact I can't get understand
>>> how the virt-manager find my cpu support the fully virtualization or
>>> not.In src, which file implements this.
>>>
>>
>> Just because qemu-kvm works doesn't mean virt is working on your box, since it
>> can fall back to full emulation mode. If you are trying to use kvm, is the kvm
>> module actually loaded? lsmod | grep kvm
>
> My kvm mod actually loaded.
>
> [root@kvm bin]# lsmod | grep kvm
>
> kvm_intel 306104 4294967281
>
> kvm 327544 1 kvm_intel
>
>
>
> [root@kvm bin]# modinfo kvm
>
> filename: /lib/modules/2.6.28.9hzp/extra/kvm.ko
>
> license: GPL
>
> author: Qumranet
>
> version: kvm-85
>
> srcversion: C399DD2D9B40BAAC05CD509
>
> depends:
>
> vermagic: 2.6.28.9hzp SMP mod_unload modversions ia64gcc-4.1
>
>> If so, libvirt may need to be fixed. What's the output of 'virsh --connect
>> qemu:///system capabilities'
>
> [root@kvm bin]# virsh --connect qemu:///system capabilities
> <capabilities>
>
> <host>
> <cpu>
> <arch>ia64</arch>
> </cpu>
> <topology>
> <cells num='1'>
> <cell id='0'>
> <cpus num='16'>
> <cpu id='0'/>
> <cpu id='1'/>
> <cpu id='2'/>
> <cpu id='3'/>
> <cpu id='4'/>
> <cpu id='5'/>
> <cpu id='6'/>
> <cpu id='7'/>
> <cpu id='8'/>
> <cpu id='9'/>
> <cpu id='10'/>
> <cpu id='11'/>
> <cpu id='12'/>
> <cpu id='13'/>
> <cpu id='14'/>
> <cpu id='15'/>
> </cpus>
> </cell>
> </cells>
> </topology>
> </host>
>
>
>>> My cpu is itanium 64, the OS is RHEL.The libvirt is 0.6.3, virt-manager
>>> is 0.6.1.
Ah, are you using the version of libvirt that comes with RHEL 5.4? That
version has been patched to only look for the qemu-kvm binary in one
spot: /usr/libexec/qemu-kvm IIRC. You could try to work with that, but
since you are already building upstream KVM, virt-manager, and virtinst,
might not be a bad idea to pull upstream libvirt as well.
>>> Once i tried to compile the virt-manager-0.8.0, but when i make check,
>>> it returns:
>>>
>>> PYTHONPATH=./..:../graphWidgets/.libs python addhardware.py && touch
>>> .tstamp.addhardware.py
>>> Traceback (mos! t recent call last):
>>> File "addhardware.py", line 32, in ?
>>> from virtinst import VirtualCharDevice, VirtualDevice,
>>> VirtualVideoDevice
>>>
>>> when i rpm -ivh virt-manager-0.6.1-8.el5.ia64.rpm, it could work.
>>>
>>> I don't know why this error occur. Can anyone be kind to tell me how?
>>> thanks a lot.
>>>
>>
>> You will also need to install the latest version of virtinst, found at:
>>
>> http://virt-manager.org/download.html
>
> I downloaded and compiled the latest version of virtinst: virtinst-0.500.0.tar.gz.
> then compile the virt-manager-0.8.0, error changed as below:
>
> [root@kvm virt-manager-0.8.0]# make check
> Making check in src
> make[1]: Entering directory `/home/dustin/virt-manager/virt-manager-0.8.0/src'
> Making check in virtManager
> make[2]: Entering directory `/home/dustin/virt-manager/virt-manager-0.8.0/src/virtManager'
> make check-local
> make[3]: Entering directory `/home/dustin/virt-manager/virt-manager-0.8.0/src/virtManager'
> PYTHONPATH=./..:../graphWidgets/.libs python about.py && touch .tstamp.about.py
> PYTHONPATH=./..:../graphWidgets/.libs python addhardware.py && touch .tstamp.addhardware.py
> Traceback (most recent call last):
> File "addhardware.py", line 35, in ?
> from virtManager.asyncjob import vmmAsyncJob
> File "/home/dustin/virt-manager/virt-manager-0.8.0/src/virtManager/asyncjob.py", line 30, in ?
> class vmmAsyncJob(gobject.GObject):
> File "/home/dustin/virt-manager/virt-manager-0.8.0/src/virtManager/asyncjob.py", line 40, in vmmAsyncJob
> def __init__(self, config, callback, args=None,
> NameError: name '_' is not defined
>
> Thanks for help.If you need any further infos please dont't hesitate to tell me.
>
Ah, didn't notice the make check in the first mail. 'make check' doesn't
work in the virt-manager code base, never taken the time to fix it. You
should just be able to 'make && make install', or 'make' and python
src/virt-manager.py to run from the source dir. If running virt-manager
then throws an error, report here and Ill try to help.
- Cole
14 years, 8 months
[libvirt] [PATCH 1/2] add --crash support to "virsh dump"
by Paolo Bonzini
This patch adds the --crash option (already present in "xm dump-core")
to "virsh dump". virDomainCoreDump already has a flags argument, so
the API/ABI is untouched.
* include/libvirt/libvirt.h.in (virDomainCoreDumpFlags): New.
* src/test/test_driver.c (testDomainCoreDump): Do not crash
after dump unless VIR_DUMP_CRASH is given.
* src/qemu/qemu_driver.c (qemudDomainCoreDump): Shutdown the domain
instead of restarting it if --crash is passed.
* src/xen/xend_internal.c (xenDaemonDomainCoreDump): Support --crash.
* tools/virsh.c (opts_dump): Add --crash.
(cmdDump): Map it to flags for virDomainCoreDump and pass them.
---
include/libvirt/libvirt.h.in | 5 +++++
src/qemu/qemu_driver.c | 17 ++++++++++++++++-
src/test/test_driver.c | 19 ++++++++++---------
src/xen/xend_internal.c | 6 ++++--
tools/virsh.c | 7 ++++++-
5 files changed, 41 insertions(+), 13 deletions(-)
diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
index 5bc7694..c04b552 100644
--- a/include/libvirt/libvirt.h.in
+++ b/include/libvirt/libvirt.h.in
@@ -334,6 +334,11 @@ struct _virDomainInterfaceStats {
typedef virDomainInterfaceStatsStruct *virDomainInterfaceStatsPtr;
+/* Domain core dump flags. */
+typedef enum {
+ VIR_DUMP_CRASH = (1 << 0), /* crash after dump */
+} virDomainCoreDumpFlags;
+
/* Domain migration flags. */
typedef enum {
VIR_MIGRATE_LIVE = (1 << 0), /* live migration */
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 92d4629..8e80144 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -3543,6 +3543,7 @@ static int qemudDomainCoreDump(virDomainPtr dom,
virDomainObjPtr vm;
int resume = 0, paused = 0;
int ret = -1, fd = -1;
+ virDomainEventPtr event = NULL;
const char *args[] = {
"cat",
NULL,
@@ -3633,10 +3634,17 @@ static int qemudDomainCoreDump(virDomainPtr dom,
goto endjob;
endjob:
+ if ((ret == 0) && (flags & VIR_DUMP_CRASH)) {
+ qemudShutdownVMDaemon(dom->conn, driver, vm);
+ event = virDomainEventNewFromObj(vm,
+ VIR_DOMAIN_EVENT_STOPPED,
+ VIR_DOMAIN_EVENT_STOPPED_CRASHED);
+ }
+
/* Since the monitor is always attached to a pty for libvirt, it
will support synchronous operations so we always get here after
the migration is complete. */
- if (resume && paused) {
+ else if (resume && paused) {
qemuDomainObjEnterMonitor(vm);
if (qemuMonitorStartCPUs(priv->mon, dom->conn) < 0) {
if (virGetLastError() == NULL)
@@ -3647,12 +3655,19 @@ endjob:
}
qemuDomainObjEndJob(vm);
+ if ((ret == 0) && (flags & VIR_DUMP_CRASH) && !vm->persistent) {
+ virDomainRemoveInactive(&driver->domains,
+ vm);
+ vm = NULL;
+ }
cleanup:
if (ret != 0)
unlink(path);
if (vm)
virDomainObjUnlock(vm);
+ if (event)
+ qemuDomainEventQueue(driver, event);
return ret;
}
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index 35f7571..7db9a4c 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -1911,15 +1911,16 @@ static int testDomainCoreDump(virDomainPtr domain,
goto cleanup;
}
- testDomainShutdownState(domain, privdom);
- event = virDomainEventNewFromObj(privdom,
- VIR_DOMAIN_EVENT_STOPPED,
- VIR_DOMAIN_EVENT_STOPPED_CRASHED);
-
- if (!privdom->persistent) {
- virDomainRemoveInactive(&privconn->domains,
- privdom);
- privdom = NULL;
+ if (flags & VIR_DUMP_CRASH) {
+ testDomainShutdownState(domain, privdom);
+ event = virDomainEventNewFromObj(privdom,
+ VIR_DOMAIN_EVENT_STOPPED,
+ VIR_DOMAIN_EVENT_STOPPED_CRASHED);
+ if (!privdom->persistent) {
+ virDomainRemoveInactive(&privconn->domains,
+ privdom);
+ privdom = NULL;
+ }
}
ret = 0;
diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
index 66d2e7f..360390d 100644
--- a/src/xen/xend_internal.c
+++ b/src/xen/xend_internal.c
@@ -3243,8 +3243,10 @@ xenDaemonDomainCoreDump(virDomainPtr domain, const char *filename,
return(-1);
}
- return xend_op(domain->conn, domain->name, "op", "dump", "file", filename,
- "live", "0", "crash", "0", NULL);
+ return xend_op(domain->conn, domain->name,
+ "op", "dump", "file", filename, "live", "0",
+ "crash", (flags & VIR_DUMP_CRASH ? "1" : "0"),
+ NULL);
}
/**
diff --git a/tools/virsh.c b/tools/virsh.c
index 9faac35..65eaa3b 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -1431,6 +1431,7 @@ static const vshCmdInfo info_dump[] = {
};
static const vshCmdOptDef opts_dump[] = {
+ {"crash", VSH_OT_BOOL, 0, gettext_noop("crash the domain after core dump")},
{"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")},
{"file", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("where to dump the core")},
{NULL, 0, 0, NULL}
@@ -1443,6 +1444,7 @@ cmdDump(vshControl *ctl, const vshCmd *cmd)
char *name;
char *to;
int ret = TRUE;
+ int flags = 0;
if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
return FALSE;
@@ -1453,7 +1455,10 @@ cmdDump(vshControl *ctl, const vshCmd *cmd)
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
return FALSE;
- if (virDomainCoreDump(dom, to, 0) == 0) {
+ if (vshCommandOptBool (cmd, "crash"))
+ flags |= VIR_DUMP_CRASH;
+
+ if (virDomainCoreDump(dom, to, flags) == 0) {
vshPrint(ctl, _("Domain %s dumped to %s\n"), name, to);
} else {
vshError(ctl, _("Failed to core dump domain %s to %s"), name, to);
--
1.6.5.2
14 years, 9 months
[libvirt] [PATCH] fix various breakages in qemu "virsh dump"
by Paolo Bonzini
1) qemuMigrateToCommand uses ">>" so we have to truncate the file
before starting the migration;
2) the command wasn't updated to chown the driver and set/restore
the security lavels;
3) the VM does not have to be resumed if migration fails;
4) the file is not removed when migration fails.
* src/qemu/qemu_driver.c (qemuDomainCoreDump): Truncate file before
dumping, set/restore ownership and security labels for the file.
---
src/qemu/qemu_driver.c | 48 +++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c9b5ac2..92d4629 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -3542,7 +3542,7 @@ static int qemudDomainCoreDump(virDomainPtr dom,
struct qemud_driver *driver = dom->conn->privateData;
virDomainObjPtr vm;
int resume = 0, paused = 0;
- int ret = -1;
+ int ret = -1, fd = -1;
const char *args[] = {
"cat",
NULL,
@@ -3569,6 +3569,33 @@ static int qemudDomainCoreDump(virDomainPtr dom,
goto endjob;
}
+ /* Create an empty file with appropriate ownership. */
+ if ((fd = open(path, O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR)) < 0) {
+ qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
+ _("failed to create '%s'"), path);
+ goto endjob;
+ }
+
+ if (close(fd) < 0) {
+ virReportSystemError(dom->conn, errno,
+ _("unable to save file %s"),
+ path);
+ goto endjob;
+ }
+
+ if (driver->privileged &&
+ chown(path, driver->user, driver->group) < 0) {
+ virReportSystemError(NULL, errno,
+ _("unable to set ownership of '%s' to user %d:%d"),
+ path, driver->user, driver->group);
+ goto endjob;
+ }
+
+ if (driver->securityDriver &&
+ driver->securityDriver->domainSetSavedStateLabel &&
+ driver->securityDriver->domainSetSavedStateLabel(dom->conn, vm, path) == -1)
+ goto endjob;
+
/* Migrate will always stop the VM, so once we support live dumping
the resume condition will stay the same, independent of whether
the stop command is issued. */
@@ -3590,8 +3617,22 @@ static int qemudDomainCoreDump(virDomainPtr dom,
qemuDomainObjEnterMonitor(vm);
ret = qemuMonitorMigrateToCommand(priv->mon, 0, args, path);
qemuDomainObjExitMonitor(vm);
- paused = 1;
+ paused |= (ret == 0);
+
+ if (driver->privileged &&
+ chown(path, 0, 0) < 0) {
+ virReportSystemError(NULL, errno,
+ _("unable to set ownership of '%s' to user %d:%d"),
+ path, 0, 0);
+ goto endjob;
+ }
+ if (driver->securityDriver &&
+ driver->securityDriver->domainRestoreSavedStateLabel &&
+ driver->securityDriver->domainRestoreSavedStateLabel(dom->conn, path) == -1)
+ goto endjob;
+
+endjob:
/* Since the monitor is always attached to a pty for libvirt, it
will support synchronous operations so we always get here after
the migration is complete. */
@@ -3605,10 +3646,11 @@ static int qemudDomainCoreDump(virDomainPtr dom,
qemuDomainObjExitMonitor(vm);
}
-endjob:
qemuDomainObjEndJob(vm);
cleanup:
+ if (ret != 0)
+ unlink(path);
if (vm)
virDomainObjUnlock(vm);
return ret;
--
1.6.5.2
14 years, 9 months
[libvirt] Improve the reliability of pty path parsing
by Matthew Booth
The following are improve the reliability of libvirt's mapping of character
devices to pty paths.
When qemu starts up it will output one or more lines of the form:
char device redirected to /dev/pts/5
Note that the character device this refers to is not indicated, so the only way
to match this up is by knowing the order they're written in. This is not a
well-defined interface, and is therefore voodoo-magic.
The current code works against current versions of QEMU. However, when using the
-chardev syntax of newer QEMU, the output order changes (putting chardev first).
The first patch works by making all character devices use -chardev if it's
available. As well as being a better syntax, this makes the output of the
redirection lines again match the order they're specified on the command line.
The second patch uses this ordering to parse the ptys for channel devices from
the log output.
The third patch (almost) obsoletes the log output parsing method. If QEMU's
monitor supports 'info chardev', this gives structured information about
character devices, including pty mappings. The log output parsing method is
still required because QEMU may not support info chardev, and because the
monitor itself can be on a pty. The danger of the third patch is that it will
fix errors in the log output parsing code, which may then bitrot.
Matt
14 years, 9 months
[libvirt] [PATCH] Suppress cgroup error message on sucess in qemudStartVMDaemon
by Ryota Ozaki
Even if qemudStartVMDaemon suceeds, an error is logged such as
'qemuRemoveCgroup:1778 : internal error Unable to find cgroup for'.
This is because qemudStartVMDaemon calls qemuRemoveCgroup to
ensure that old cgroup does not remain. This workaround makes
sense but leaving an error message may confuse users.
This patch simply adds an option to suppress the error
log if not needed.
---
src/qemu/qemu_driver.c | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index a4a87ac..84ee942 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1763,7 +1763,8 @@ cleanup:
static int qemuRemoveCgroup(virConnectPtr conn,
struct qemud_driver *driver,
- virDomainObjPtr vm)
+ virDomainObjPtr vm,
+ int quiet)
{
virCgroupPtr cgroup;
int rc;
@@ -1773,9 +1774,10 @@ static int qemuRemoveCgroup(virConnectPtr conn,
rc = virCgroupForDomain(driver->cgroup, vm->def->name, &cgroup, 0);
if (rc != 0) {
- qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
- _("Unable to find cgroup for %s\n"),
- vm->def->name);
+ if (!quiet)
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
+ _("Unable to find cgroup for %s\n"),
+ vm->def->name);
return rc;
}
@@ -2142,7 +2144,7 @@ static int qemudStartVMDaemon(virConnectPtr conn,
return -1;
/* Ensure no historical cgroup for this VM is lieing around bogus settings */
- qemuRemoveCgroup(conn, driver, vm);
+ qemuRemoveCgroup(conn, driver, vm, 1);
if ((vm->def->ngraphics == 1) &&
vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
@@ -2327,7 +2329,7 @@ cleanup:
VIR_FREE(vm->def->seclabel.label);
VIR_FREE(vm->def->seclabel.imagelabel);
}
- qemuRemoveCgroup(conn, driver, vm);
+ qemuRemoveCgroup(conn, driver, vm, 0);
if ((vm->def->ngraphics == 1) &&
vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC &&
vm->def->graphics[0]->data.vnc.autoport)
@@ -2416,7 +2418,7 @@ static void qemudShutdownVMDaemon(virConnectPtr conn,
qemuDomainReAttachHostDevices(conn, driver, vm->def);
retry:
- if ((ret = qemuRemoveCgroup(conn, driver, vm)) < 0) {
+ if ((ret = qemuRemoveCgroup(conn, driver, vm, 0)) < 0) {
if (ret == -EBUSY && (retries++ < 5)) {
usleep(200*1000);
goto retry;
--
1.6.5.2
14 years, 9 months
[libvirt] [PATCH] Add virBufferFreeAndReset() and replace free()
by Matthias Bolte
Replace free(virBufferContentAndReset()) with virBufferFreeAndReset().
Update documentation and replace all remaining calls to free() with
calls to VIR_FREE(). Also add missing calls to virBufferFreeAndReset()
and virReportOOMError() in OOM error cases.
---
HACKING | 5 ++-
daemon/libvirtd.c | 6 ++--
docs/hacking.html.in | 7 ++--
src/conf/capabilities.c | 4 ++-
src/conf/domain_conf.c | 11 +++---
src/conf/interface_conf.c | 5 +--
src/conf/network_conf.c | 4 +--
src/conf/node_device_conf.c | 4 +--
src/conf/secret_conf.c | 4 +--
src/conf/storage_conf.c | 8 ++---
src/esx/esx_driver.c | 3 ++
src/esx/esx_vi.c | 10 ++---
src/esx/esx_vi_methods.c | 68 +++++++++---------------------------
src/esx/esx_vmx.c | 11 +-----
src/libvirt_private.syms | 1 +
src/node_device/node_device_udev.c | 1 +
src/opennebula/one_conf.c | 3 +-
src/openvz/openvz_conf.c | 8 +++--
src/openvz/openvz_driver.c | 3 +-
src/phyp/phyp_driver.c | 5 +--
src/qemu/qemu_conf.c | 39 ++++++++++++++-------
src/qemu/qemu_driver.c | 5 ++-
src/security/virt-aa-helper.c | 9 +++--
src/storage/storage_backend.c | 3 +-
src/uml/uml_conf.c | 4 +--
src/util/buf.c | 13 +++++++
src/util/buf.h | 1 +
src/util/conf.c | 5 ++-
src/util/logging.c | 8 +++-
src/util/qparams.c | 1 +
src/xen/xend_internal.c | 14 +++++---
src/xen/xm_internal.c | 19 +++++-----
tools/virsh.c | 4 +-
33 files changed, 146 insertions(+), 150 deletions(-)
diff --git a/HACKING b/HACKING
index 548e2a0..3fb1113 100644
--- a/HACKING
+++ b/HACKING
@@ -293,10 +293,11 @@ eg typical usage is as follows:
...
virBufferAddLit(&buf, "</domain>\n");
- ....
+ ...
if (virBufferError(&buf)) {
- __virRaiseError(...);
+ virBufferFreeAndReset(&buf);
+ virReportOOMError(...);
return NULL;
}
diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
index 1caa4ce..806970c 100644
--- a/daemon/libvirtd.c
+++ b/daemon/libvirtd.c
@@ -582,7 +582,7 @@ static int qemudListenUnix(struct qemud_server *server,
cleanup:
if (sock->fd)
close(sock->fd);
- free(sock);
+ VIR_FREE(sock);
return -1;
}
@@ -803,8 +803,8 @@ static int qemudInitPaths(struct qemud_server *server,
_("Resulting path too long for buffer in qemudInitPaths()"));
cleanup:
- free (dir_prefix);
- free (sock_dir_prefix);
+ VIR_FREE(dir_prefix);
+ VIR_FREE(sock_dir_prefix);
return ret;
}
diff --git a/docs/hacking.html.in b/docs/hacking.html.in
index 94b7238..af63411 100644
--- a/docs/hacking.html.in
+++ b/docs/hacking.html.in
@@ -306,14 +306,15 @@
...
virBufferAddLit(&buf, "<domain>\n");
- virBufferVSprint(&buf, " <memory>%d</memory>\n", memory);
+ virBufferVSprint(&buf, " <memory>%d</memory>\n", memory);
...
virBufferAddLit(&buf, "</domain>\n");
- ....
+ ...
if (virBufferError(&buf)) {
- __virRaiseError(...);
+ virBufferFreeAndReset(&buf);
+ virReportOOMError(...);
return NULL;
}
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index 6ebddf5..476bba6 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -769,8 +769,10 @@ virCapabilitiesFormatXML(virCapsPtr caps)
virBufferAddLit(&xml, "</capabilities>\n");
- if (virBufferError(&xml))
+ if (virBufferError(&xml)) {
+ virBufferFreeAndReset(&xml);
return NULL;
+ }
return virBufferContentAndReset(&xml);
}
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 0a7eef7..355004b 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -3775,6 +3775,7 @@ virDomainCpuSetFormat(virConnectPtr conn, char *cpuset, int maxcpu)
}
if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
virReportOOMError(conn);
return NULL;
}
@@ -4570,7 +4571,7 @@ char *virDomainDefFormat(virConnectPtr conn,
virBuffer buf = VIR_BUFFER_INITIALIZER;
unsigned char *uuid;
char uuidstr[VIR_UUID_STRING_BUFLEN];
- const char *type = NULL, *tmp;
+ const char *type = NULL;
int n, allones = 1;
if (!(type = virDomainVirtTypeToString(def->virtType))) {
@@ -4826,8 +4827,7 @@ char *virDomainDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
- tmp = virBufferContentAndReset(&buf);
- VIR_FREE(tmp);
+ virBufferFreeAndReset(&buf);
return NULL;
}
@@ -4835,7 +4835,7 @@ char *virDomainObjFormat(virConnectPtr conn,
virDomainObjPtr obj,
int flags)
{
- char *config_xml = NULL, *xml = NULL;
+ char *config_xml = NULL;
virBuffer buf = VIR_BUFFER_INITIALIZER;
const char *monitorpath;
@@ -4887,8 +4887,7 @@ char *virDomainObjFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
error:
- xml = virBufferContentAndReset(&buf);
- VIR_FREE(xml);
+ virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c
index 31abf12..3c99027 100644
--- a/src/conf/interface_conf.c
+++ b/src/conf/interface_conf.c
@@ -1208,7 +1208,7 @@ char *virInterfaceDefFormat(virConnectPtr conn,
const virInterfaceDefPtr def)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
- const char *type = NULL, *tmp;
+ const char *type = NULL;
if ((def == NULL) ||
((def->name == NULL) && (def->type != VIR_INTERFACE_TYPE_VLAN))) {
@@ -1271,8 +1271,7 @@ char *virInterfaceDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
- tmp = virBufferContentAndReset(&buf);
- VIR_FREE(tmp);
+ virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index 62b3007..ab76f21 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -642,7 +642,6 @@ char *virNetworkDefFormat(virConnectPtr conn,
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
unsigned char *uuid;
- char *tmp;
char uuidstr[VIR_UUID_STRING_BUFLEN];
virBufferAddLit(&buf, "<network>\n");
@@ -731,8 +730,7 @@ char *virNetworkDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
- tmp = virBufferContentAndReset(&buf);
- VIR_FREE(tmp);
+ virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
index 6003ab1..4bf71da 100644
--- a/src/conf/node_device_conf.c
+++ b/src/conf/node_device_conf.c
@@ -246,7 +246,6 @@ char *virNodeDeviceDefFormat(virConnectPtr conn,
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
virNodeDevCapsDefPtr caps;
- char *tmp;
virBufferAddLit(&buf, "<device>\n");
virBufferEscapeString(&buf, " <name>%s</name>\n", def->name);
@@ -464,8 +463,7 @@ char *virNodeDeviceDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
- tmp = virBufferContentAndReset(&buf);
- VIR_FREE(tmp);
+ virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/conf/secret_conf.c b/src/conf/secret_conf.c
index 21215b2..538fa91 100644
--- a/src/conf/secret_conf.c
+++ b/src/conf/secret_conf.c
@@ -303,7 +303,6 @@ virSecretDefFormat(virConnectPtr conn, const virSecretDefPtr def)
virBuffer buf = VIR_BUFFER_INITIALIZER;
unsigned char *uuid;
char uuidstr[VIR_UUID_STRING_BUFLEN];
- char *tmp;
virBufferVSprintf(&buf, "<secret ephemeral='%s' private='%s'>\n",
def->ephemeral ? "yes" : "no",
@@ -328,7 +327,6 @@ virSecretDefFormat(virConnectPtr conn, const virSecretDefPtr def)
no_memory:
virReportOOMError(conn);
error:
- tmp = virBufferContentAndReset(&buf);
- VIR_FREE(tmp);
+ virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 065cd04..0aefa06 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -954,7 +954,7 @@ virStoragePoolDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
- free(virBufferContentAndReset(&buf));
+ virBufferFreeAndReset(&buf);
return NULL;
}
@@ -1292,7 +1292,6 @@ virStorageVolDefFormat(virConnectPtr conn,
virStorageVolDefPtr def) {
virStorageVolOptionsPtr options;
virBuffer buf = VIR_BUFFER_INITIALIZER;
- char *tmp;
options = virStorageVolOptionsForPoolType(pool->type);
if (options == NULL)
@@ -1351,8 +1350,7 @@ virStorageVolDefFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
- tmp = virBufferContentAndReset(&buf);
- VIR_FREE(tmp);
+ virBufferFreeAndReset(&buf);
return NULL;
}
@@ -1742,7 +1740,7 @@ char *virStoragePoolSourceListFormat(virConnectPtr conn,
no_memory:
virReportOOMError(conn);
cleanup:
- free(virBufferContentAndReset(&buf));
+ virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
index 5737fe9..ea464a3 100644
--- a/src/esx/esx_driver.c
+++ b/src/esx/esx_driver.c
@@ -2293,6 +2293,7 @@ esxDomainDumpXML(virDomainPtr domain, int flags)
return xml;
failure:
+ virBufferFreeAndReset(&buffer);
VIR_FREE(xml);
goto cleanup;
@@ -2723,6 +2724,8 @@ esxDomainDefineXML(virConnectPtr conn, const char *xml ATTRIBUTE_UNUSED)
return domain;
failure:
+ virBufferFreeAndReset(&buffer);
+
domain = NULL;
goto cleanup;
diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c
index 04860e2..5725b2f 100644
--- a/src/esx/esx_vi.c
+++ b/src/esx/esx_vi.c
@@ -532,7 +532,7 @@ esxVI_Context_DownloadFile(virConnectPtr conn, esxVI_Context *ctx,
return 0;
failure:
- free(virBufferContentAndReset(&buffer));
+ virBufferFreeAndReset(&buffer);
return -1;
}
@@ -708,7 +708,7 @@ esxVI_Context_Execute(virConnectPtr conn, esxVI_Context *ctx,
return 0;
failure:
- free(virBufferContentAndReset(&buffer));
+ virBufferFreeAndReset(&buffer);
esxVI_Response_Free(response);
esxVI_Fault_Free(&fault);
@@ -2065,7 +2065,7 @@ esxVI_StartSimpleVirtualMachineTask
return result;
failure:
- free(virBufferContentAndReset(&buffer));
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -2124,9 +2124,7 @@ esxVI_SimpleVirtualMachineMethod(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
diff --git a/src/esx/esx_vi_methods.c b/src/esx/esx_vi_methods.c
index a80d1bf..06b5fd4 100644
--- a/src/esx/esx_vi_methods.c
+++ b/src/esx/esx_vi_methods.c
@@ -158,9 +158,7 @@ esxVI_Login(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -214,9 +212,7 @@ esxVI_Logout(virConnectPtr conn, esxVI_Context *ctx)
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -283,9 +279,7 @@ esxVI_SessionIsActive(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -352,9 +346,7 @@ esxVI_RetrieveProperties(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -451,9 +443,7 @@ esxVI_MigrateVM_Task(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -509,9 +499,7 @@ esxVI_ReconfigVM_Task(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -579,9 +567,7 @@ esxVI_RegisterVM_Task(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -630,9 +616,7 @@ esxVI_UnregisterVM(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -702,9 +686,7 @@ esxVI_CreateFilter(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -758,9 +740,7 @@ esxVI_DestroyPropertyFilter(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -824,9 +804,7 @@ esxVI_WaitForUpdates(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -928,9 +906,7 @@ esxVI_ValidateMigration(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -1003,9 +979,7 @@ esxVI_FindByIp(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -1089,9 +1063,7 @@ esxVI_FindByUuid(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -1165,9 +1137,7 @@ esxVI_QueryAvailablePerfMetric(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -1232,9 +1202,7 @@ esxVI_QueryPerfCounter(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
@@ -1299,9 +1267,7 @@ esxVI_QueryPerf(virConnectPtr conn, esxVI_Context *ctx,
return result;
failure:
- if (request == NULL) {
- request = virBufferContentAndReset(&buffer);
- }
+ virBufferFreeAndReset(&buffer);
result = -1;
diff --git a/src/esx/esx_vmx.c b/src/esx/esx_vmx.c
index 9a9fe0a..ff08fdb 100644
--- a/src/esx/esx_vmx.c
+++ b/src/esx/esx_vmx.c
@@ -2150,7 +2150,6 @@ esxVMX_FormatConfig(virConnectPtr conn, esxVI_Context *ctx,
int sched_cpu_affinity_length;
unsigned char zero[VIR_UUID_BUFLEN];
virBuffer buffer = VIR_BUFFER_INITIALIZER;
- char *vmx = NULL;
memset(zero, 0, VIR_UUID_BUFLEN);
@@ -2373,16 +2372,10 @@ esxVMX_FormatConfig(virConnectPtr conn, esxVI_Context *ctx,
goto failure;
}
- vmx = virBufferContentAndReset(&buffer);
-
- return vmx;
+ return virBufferContentAndReset(&buffer);
failure:
- if (vmx == NULL) {
- vmx = virBufferContentAndReset(&buffer);
- }
-
- VIR_FREE(vmx);
+ virBufferFreeAndReset(&buffer);
return NULL;
}
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index c473d49..f182630 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -11,6 +11,7 @@ virBufferAddChar;
virBufferContentAndReset;
virBufferError;
virBufferURIEncodeString;
+virBufferFreeAndReset;
# caps.h
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index 9b48052..10b4416 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -323,6 +323,7 @@ static int udevGenerateDeviceName(struct udev_device *device,
}
if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
VIR_ERROR("Buffer error when generating device name for device "
"with sysname '%s'\n", udev_device_get_sysname(device));
ret = -1;
diff --git a/src/opennebula/one_conf.c b/src/opennebula/one_conf.c
index 415f832..a4768b1 100644
--- a/src/opennebula/one_conf.c
+++ b/src/opennebula/one_conf.c
@@ -278,7 +278,6 @@ char* xmlOneTemplate(virConnectPtr conn,virDomainDefPtr def)
no_memory:
virReportOOMError(conn);
- char* tmp = virBufferContentAndReset(&buf);
- VIR_FREE(tmp);
+ virBufferFreeAndReset(&buf);
return NULL;
};
diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c
index 33c2fd3..930f841 100644
--- a/src/openvz/openvz_conf.c
+++ b/src/openvz/openvz_conf.c
@@ -345,10 +345,12 @@ openvz_replace(const char* str,
str_start = offset + from_len;
}
- virBufferAdd(&buf, str_start, strlen(str_start));
+ virBufferAdd(&buf, str_start, strlen(str_start));
- if(virBufferError(&buf))
- return NULL;
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
+ return NULL;
+ }
return virBufferContentAndReset(&buf);
}
diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
index aac2eb8..1c0fccc 100644
--- a/src/openvz/openvz_driver.c
+++ b/src/openvz/openvz_driver.c
@@ -792,8 +792,7 @@ openvzDomainSetNetworkConfig(virConnectPtr conn,
return 0;
exit:
- param = virBufferContentAndReset(&buf);
- VIR_FREE(param);
+ virBufferFreeAndReset(&buf);
return -1;
}
diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index ea9555a..c21d99d 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -486,13 +486,12 @@ phypExec(LIBSSH2_SESSION * session, char *cmd, int *exit_status,
err:
(*exit_status) = SSH_CMD_ERR;
- char *cleanup_buf = virBufferContentAndReset(&tex_ret);
-
- VIR_FREE(cleanup_buf);
+ virBufferFreeAndReset(&tex_ret);
return NULL;
exit:
if (virBufferError(&tex_ret)) {
+ virBufferFreeAndReset(&tex_ret);
virReportOOMError(conn);
return NULL;
}
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index f26e94d..09a298b 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -1376,6 +1376,7 @@ qemuBuildHostNetStr(virConnectPtr conn,
type_sep = ','; /* dead-store, but leave it, in case... */
}
if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
virReportOOMError(conn);
return -1;
}
@@ -1859,8 +1860,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
virBuffer buf = VIR_BUFFER_INITIALIZER;
qemudBuildCommandLineChrDevStr(monitor_chr, &buf);
- if (virBufferError(&buf))
- goto error;
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
+ goto no_memory;
+ }
ADD_ARG_LIT("-monitor");
ADD_ARG(virBufferContentAndReset(&buf));
@@ -2024,8 +2027,8 @@ int qemudBuildCommandLine(virConnectPtr conn,
}
if (virBufferError(&opt)) {
- virReportOOMError(conn);
- goto error;
+ virBufferFreeAndReset(&opt);
+ goto no_memory;
}
optstr = virBufferContentAndReset(&opt);
@@ -2147,8 +2150,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
virDomainChrDefPtr serial = def->serials[i];
qemudBuildCommandLineChrDevStr(serial, &buf);
- if (virBufferError(&buf))
- goto error;
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
+ goto no_memory;
+ }
ADD_ARG_LIT("-serial");
ADD_ARG(virBufferContentAndReset(&buf));
@@ -2164,8 +2169,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
virDomainChrDefPtr parallel = def->parallels[i];
qemudBuildCommandLineChrDevStr(parallel, &buf);
- if (virBufferError(&buf))
- goto error;
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
+ goto no_memory;
+ }
ADD_ARG_LIT("-parallel");
ADD_ARG(virBufferContentAndReset(&buf));
@@ -2190,8 +2197,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
}
qemudBuildCommandLineChrDevChardevStr(channel, id, &buf);
- if (virBufferError(&buf))
- goto error;
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
+ goto no_memory;
+ }
ADD_ARG_LIT("-chardev");
ADD_ARG(virBufferContentAndReset(&buf));
@@ -2204,8 +2213,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
VIR_FREE(addr);
- if (virBufferError(&buf))
- goto error;
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
+ goto no_memory;
+ }
ADD_ARG_LIT("-net");
ADD_ARG(virBufferContentAndReset(&buf));
@@ -2263,8 +2274,10 @@ int qemudBuildCommandLine(virConnectPtr conn,
virBufferVSprintf(&opt, "%d",
def->graphics[0]->data.vnc.port - 5900);
}
- if (virBufferError(&opt))
+ if (virBufferError(&opt)) {
+ virBufferFreeAndReset(&opt);
goto no_memory;
+ }
optstr = virBufferContentAndReset(&opt);
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index a4a87ac..d449669 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4308,8 +4308,11 @@ static char *qemuDomainXMLToNative(virConnectPtr conn,
tmp++;
}
- if (virBufferError(&buf))
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
+ virReportOOMError(conn);
goto cleanup;
+ }
ret = virBufferContentAndReset(&buf);
diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index 62f0977..e1e141b 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
@@ -883,8 +883,9 @@ get_files(vahControl * ctl)
goto clean;
if (virBufferError(&buf)) {
- vah_error(NULL, 0, "failed to allocate file buffer");
- goto clean;
+ virBufferFreeAndReset(&buf);
+ vah_error(NULL, 0, "failed to allocate file buffer");
+ goto clean;
}
rc = 0;
@@ -1048,8 +1049,10 @@ main(int argc, char **argv)
if (ctl->files)
virBufferVSprintf(&buf, "%s", ctl->files);
- if (virBufferError(&buf))
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
vah_error(ctl, 1, "failed to allocate buffer");
+ }
included_files = virBufferContentAndReset(&buf);
diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index bb926cd..dd977f4 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -445,8 +445,7 @@ cleanup:
conn->secretDriver->undefine(secret);
virSecretFree(secret);
}
- xml = virBufferContentAndReset(&buf);
- VIR_FREE(xml);
+ virBufferFreeAndReset(&buf);
virSecretDefFree(def);
VIR_FREE(enc_secret);
return ret;
diff --git a/src/uml/uml_conf.c b/src/uml/uml_conf.c
index 0ace58f..895a94d 100644
--- a/src/uml/uml_conf.c
+++ b/src/uml/uml_conf.c
@@ -163,7 +163,6 @@ umlBuildCommandLineNet(virConnectPtr conn,
virDomainNetDefPtr def,
int idx)
{
- char *ret;
virBuffer buf = VIR_BUFFER_INITIALIZER;
/* General format: ethNN=type,options */
@@ -265,8 +264,7 @@ umlBuildCommandLineNet(virConnectPtr conn,
return virBufferContentAndReset(&buf);
error:
- ret = virBufferContentAndReset(&buf);
- VIR_FREE(ret);
+ virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/util/buf.c b/src/util/buf.c
index 9681635..e683928 100644
--- a/src/util/buf.c
+++ b/src/util/buf.c
@@ -167,6 +167,19 @@ virBufferContentAndReset(const virBufferPtr buf)
}
/**
+ * virBufferFreeAndReset:
+ * @buf: the buffer to free and reset
+ *
+ * Frees the buffer content and resets the buffer structure.
+ */
+void virBufferFreeAndReset(const virBufferPtr buf)
+{
+ char *str = virBufferContentAndReset(buf);
+
+ VIR_FREE(str);
+}
+
+/**
* virBufferError:
* @buf: the buffer
*
diff --git a/src/util/buf.h b/src/util/buf.h
index 94ee8a3..d9a1708 100644
--- a/src/util/buf.h
+++ b/src/util/buf.h
@@ -35,6 +35,7 @@ struct _virBuffer {
#endif
char *virBufferContentAndReset(const virBufferPtr buf);
+void virBufferFreeAndReset(const virBufferPtr buf);
int virBufferError(const virBufferPtr buf);
unsigned int virBufferUse(const virBufferPtr buf);
void virBufferAdd(const virBufferPtr buf, const char *str, int len);
diff --git a/src/util/conf.c b/src/util/conf.c
index 8126f69..0c7e556 100644
--- a/src/util/conf.c
+++ b/src/util/conf.c
@@ -927,15 +927,15 @@ virConfWriteFile(const char *filename, virConfPtr conf)
}
if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
virReportOOMError(NULL);
return -1;
}
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR );
if (fd < 0) {
- char *tmp = virBufferContentAndReset(&buf);
+ virBufferFreeAndReset(&buf);
virConfError(NULL, VIR_ERR_WRITE_FAILED, _("failed to open file"));
- VIR_FREE(tmp);
return -1;
}
@@ -983,6 +983,7 @@ virConfWriteMem(char *memory, int *len, virConfPtr conf)
}
if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
virReportOOMError(NULL);
return -1;
}
diff --git a/src/util/logging.c b/src/util/logging.c
index 757f78c..6bd8469 100644
--- a/src/util/logging.c
+++ b/src/util/logging.c
@@ -867,8 +867,10 @@ char *virLogGetFilters(void) {
}
virLogUnlock();
- if (virBufferError(&filterbuf))
+ if (virBufferError(&filterbuf)) {
+ virBufferFreeAndReset(&filterbuf);
return NULL;
+ }
return virBufferContentAndReset(&filterbuf);
}
@@ -905,8 +907,10 @@ char *virLogGetOutputs(void) {
}
virLogUnlock();
- if (virBufferError(&outputbuf))
+ if (virBufferError(&outputbuf)) {
+ virBufferFreeAndReset(&outputbuf);
return NULL;
+ }
return virBufferContentAndReset(&outputbuf);
}
diff --git a/src/util/qparams.c b/src/util/qparams.c
index d0a84b3..9b96c2a 100644
--- a/src/util/qparams.c
+++ b/src/util/qparams.c
@@ -154,6 +154,7 @@ qparam_get_query (const struct qparam_set *ps)
}
if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
virReportOOMError(NULL);
return NULL;
}
diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
index d61e9e6..db21940 100644
--- a/src/xen/xend_internal.c
+++ b/src/xen/xend_internal.c
@@ -525,6 +525,7 @@ xend_op_ext(virConnectPtr xend, const char *path, char *error,
}
if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
virReportOOMError(NULL);
return -1;
}
@@ -5279,8 +5280,10 @@ xenDaemonFormatSxprChr(virConnectPtr conn,
break;
}
- if (virBufferError(buf))
+ if (virBufferError(buf)) {
+ virReportOOMError(conn);
return -1;
+ }
return 0;
}
@@ -5605,8 +5608,10 @@ xenDaemonFormatSxprSound(virConnectPtr conn,
virBufferVSprintf(buf, "%s%s", i ? "," : "", str);
}
- if (virBufferError(buf))
+ if (virBufferError(buf)) {
+ virReportOOMError(conn);
return -1;
+ }
return 0;
}
@@ -5878,14 +5883,13 @@ xenDaemonFormatSxpr(virConnectPtr conn,
if (virBufferError(&buf)) {
virReportOOMError(conn);
- return NULL;
+ goto error;
}
return virBufferContentAndReset(&buf);
error:
- tmp = virBufferContentAndReset(&buf);
- VIR_FREE(tmp);
+ virBufferFreeAndReset(&buf);
return NULL;
}
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index 2ee321f..7f43784 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -1735,6 +1735,7 @@ int xenXMDomainPinVcpu(virDomainPtr domain,
}
if (virBufferError(&mapbuf)) {
+ virBufferFreeAndReset(&mapbuf);
virReportOOMError(domain->conn);
goto cleanup;
}
@@ -1965,7 +1966,6 @@ static int xenXMDomainConfigFormatDisk(virConnectPtr conn,
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
virConfValuePtr val, tmp;
- char *str;
if(disk->src) {
if (disk->driverName) {
@@ -1996,7 +1996,7 @@ static int xenXMDomainConfigFormatDisk(virConnectPtr conn,
if (virBufferError(&buf)) {
virReportOOMError(conn);
- return -1;
+ goto cleanup;
}
if (VIR_ALLOC(val) < 0) {
@@ -2017,8 +2017,7 @@ static int xenXMDomainConfigFormatDisk(virConnectPtr conn,
return 0;
cleanup:
- str = virBufferContentAndReset(&buf);
- VIR_FREE(str);
+ virBufferFreeAndReset(&buf);
return -1;
}
@@ -2029,7 +2028,6 @@ static int xenXMDomainConfigFormatNet(virConnectPtr conn,
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
virConfValuePtr val, tmp;
- char *str;
xenUnifiedPrivatePtr priv = (xenUnifiedPrivatePtr) conn->privateData;
virBufferVSprintf(&buf, "mac=%02x:%02x:%02x:%02x:%02x:%02x",
@@ -2093,8 +2091,10 @@ static int xenXMDomainConfigFormatNet(virConnectPtr conn,
virBufferVSprintf(&buf, ",vifname=%s",
net->ifname);
- if (virBufferError(&buf))
+ if (virBufferError(&buf)) {
+ virReportOOMError(conn);
goto cleanup;
+ }
if (VIR_ALLOC(val) < 0) {
virReportOOMError(conn);
@@ -2114,8 +2114,7 @@ static int xenXMDomainConfigFormatNet(virConnectPtr conn,
return 0;
cleanup:
- str = virBufferContentAndReset(&buf);
- VIR_FREE(str);
+ virBufferFreeAndReset(&buf);
return -1;
}
@@ -2444,8 +2443,10 @@ virConfPtr xenXMDomainConfigFormat(virConnectPtr conn,
virBufferVSprintf(&buf, ",keymap=%s",
def->graphics[0]->data.vnc.keymap);
}
- if (virBufferError(&buf))
+ if (virBufferError(&buf)) {
+ virBufferFreeAndReset(&buf);
goto no_memory;
+ }
vfbstr = virBufferContentAndReset(&buf);
diff --git a/tools/virsh.c b/tools/virsh.c
index 9faac35..94a99e9 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -3800,7 +3800,7 @@ static int buildPoolXML(const vshCmd *cmd, char **retname, char **xml) {
return TRUE;
cleanup:
- free(virBufferContentAndReset(&buf));
+ virBufferFreeAndReset(&buf);
return FALSE;
}
@@ -4663,7 +4663,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
}
cleanup:
- free(virBufferContentAndReset(&buf));
+ virBufferFreeAndReset(&buf);
virStoragePoolFree(pool);
return FALSE;
}
--
1.6.0.4
14 years, 9 months
[libvirt] [PATCH] Make 'Miloslav Trmac' and 'Guido Guenther' display correctly
by Matthias Bolte
---
docs/news.html.in | 132 ++++++++++++++++++++++++++--------------------------
1 files changed, 66 insertions(+), 66 deletions(-)
diff --git a/docs/news.html.in b/docs/news.html.in
index 83f0461..47d7f42 100644
--- a/docs/news.html.in
+++ b/docs/news.html.in
@@ -36,7 +36,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
qemu-kvm needs -enable-kvm flag for VT optimization (Steve Yarmie)
fix deprecated iptables command syntax (Steve Yarmie)
Ensure driver lock is released when entering QEMU monitor (Daniel P. Berrange)
- only remove masquerade roles for VIR_NETWORK_FORWARD_NAT (Guido Günther)
+ only remove masquerade roles for VIR_NETWORK_FORWARD_NAT (Guido Günther)
esx: Fix CPU clock Hz to MHz conversion (Matthias Bolte)
esx: Fix memory leak in esxVI_HostCpuIdInfo_Free() (Matthias Bolte)
esx: Fix MAC address formatting (Matthias Bolte)
@@ -442,8 +442,8 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<h3>0.7.1: Sep 15 2009</h3>
<ul>
<li>New features:
- Add support for encrypted (qcow) volume creation. (Miloslav Trmač),
- Secret manipulation public API (Miloslav Trmač),
+ Add support for encrypted (qcow) volume creation. (Miloslav Trmač),
+ Secret manipulation public API (Miloslav Trmač),
Multipath storage support module (Dave Allan),
VBox add Storage Volume support (Pritesh Kothari),
Support configuration of huge pages in guests (Daniel P. Berrange),
@@ -525,12 +525,12 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
Fix UUID handling in secrets/storage encryption APIs (Daniel P. Berrange),
Save vcpuinfo in status file (Daniel P. Berrange),
Restart libvirtd upon RPM upgrade (Daniel P. Berrange),
- Add support for qcow encrypted volumes to qemu. (Miloslav Trmač),
- Provide missing passphrase when creating a volume. (Miloslav Trmač),
- Add virsh commands for secrets APIs (Miloslav Trmač),
- Local file implementation of secret driver API (Miloslav Trmač),
- Mask out flags used internally for virSecretGetValue (Miloslav Trmač),
- Add <usage> to <secret> docs (Miloslav Trmač),
+ Add support for qcow encrypted volumes to qemu. (Miloslav Trmač),
+ Provide missing passphrase when creating a volume. (Miloslav Trmač),
+ Add virsh commands for secrets APIs (Miloslav Trmač),
+ Local file implementation of secret driver API (Miloslav Trmač),
+ Mask out flags used internally for virSecretGetValue (Miloslav Trmač),
+ Add <usage> to <secret> docs (Miloslav Trmač),
also allow use of XZ for Qemu image compression (Jim Meyering),
Support relabelling of USB and PCI devices (Daniel P. Berrange),
Add helper APIs for iterating over PCI device resource files (Daniel P. Berrange),
@@ -557,16 +557,16 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
Generic parsing support for video acceleration (Pritesh Kothari),
VMware ESX: Allow ethernet address type 'vpx' (Matthias Bolte),
Support for getting/setting number of cpus in VBox (Pritesh Kothari),
- Make handling of monitor prompts more general. (Miloslav Trmač),
- Attach encryption information to virDomainDiskDef. (Miloslav Trmač),
- Recognize encryption format of qcow volumes. (Miloslav Trmač),
- Attach encryption information to virStorageVolDef. (Miloslav Trmač),
- Add volume encryption information handling. (Miloslav Trmač),
- Secret manipulation API docs refresh and wire up python generator (Miloslav Trmač),
- Secret manipulation remote client (Miloslav Trmač),
- Secret manipulation libvirtd wire protocol and remote dispatcher (Miloslav Trmač),
- Secret manipulation public API implementation (Miloslav Trmač),
- Secret manipulation internal API (Miloslav Trmač),
+ Make handling of monitor prompts more general. (Miloslav Trmač),
+ Attach encryption information to virDomainDiskDef. (Miloslav Trmač),
+ Recognize encryption format of qcow volumes. (Miloslav Trmač),
+ Attach encryption information to virStorageVolDef. (Miloslav Trmač),
+ Add volume encryption information handling. (Miloslav Trmač),
+ Secret manipulation API docs refresh and wire up python generator (Miloslav Trmač),
+ Secret manipulation remote client (Miloslav Trmač),
+ Secret manipulation libvirtd wire protocol and remote dispatcher (Miloslav Trmač),
+ Secret manipulation public API implementation (Miloslav Trmač),
+ Secret manipulation internal API (Miloslav Trmač),
Add test for recently fixed crash with latest XenD (Daniel P. Berrange),
Don't expose 'vnet%d' to the user (Mark McLoughlin),
Maintain a list of active PCI hostdevs and use it in pciResetDevice() (Mark McLoughlin),
@@ -585,7 +585,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
Remove accidentally added UUID re-definition in storage schema (Daniel P. Berrange),
ESX cleanup of CPU model strings (Matthias Bolte),
Fix use of dlopen modules (Daniel P. Berrange),
- Consolidate "cont" into qemudMonitorSendCont() (Miloslav Trmač),
+ Consolidate "cont" into qemudMonitorSendCont() (Miloslav Trmač),
Cleanup sec driver error reporting to use virReportSystemError (Daniel P. Berrange),
Port QEMU driver to use USB/PCI device helpers (Daniel P. Berrange),
Simplify and fix qemudCanonicalizeMachine() (Mark McLoughlin),
@@ -600,8 +600,8 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
openvz_conf.c: remove dead store to "p"; use strchrnul (Jim Meyering),
Remove some tabs used for indent (Daniel Veillard),
Updated a number of localizations and regenerated (Daniel Veillard),
- Add a missing comment (Miloslav Trmač),
- Fix a pasto in storage_encryption_conf.c (Miloslav Trmač),
+ Add a missing comment (Miloslav Trmač),
+ Fix a pasto in storage_encryption_conf.c (Miloslav Trmač),
xm_internal.c: remove four useless comparisons after strchr (Jim Meyering),
xm_internal.c: remove dead increment of "data" (Jim Meyering),
network_driver.c: remove dead store to "err" (Jim Meyering),
@@ -642,7 +642,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
Misc fixes to secrets API code (Daniel P. Berrange),
Only add glusterfs dep for Fedora >= 11 (Daniel P. Berrange),
Remove redundant base64 include file (Daniel P. Berrange),
- Don't assume buffered output echoes the command. (Miloslav Trmač),
+ Don't assume buffered output echoes the command. (Miloslav Trmač),
Update chinese, polish and spanish localizations (Daniel Veillard),
OpenVZ: accept NULL as type for GetMaxVCPUs. (Chris Lalancette),
Remove use of strncpy in qemudExtractMonitorPath. (Chris Lalancette),
@@ -688,7 +688,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
Matthias Bolte to AUTHORS list (Daniel Veillard), doc: clone+build
instructions (Jim Meyering), docs: say that the old repository
is deprecated... (Jim Meyering), document tcp listen and raw
- wire option (Guido Günther), Fix docs and code disagreements
+ wire option (Guido Günther), Fix docs and code disagreements
for character devices. (Cole Robinson), Fix documentation of
virStoragePoolUndefine return (Thomas Treutner), Fix gitweb link on
download page. (Cole Robinson), update download informations after
@@ -998,10 +998,10 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
docs for XML conversion APIs (Daniel Berrange), inconsistencies
in storage volume docs and schemas (Ryota Ozaki)</li>
<li>Bug fixes: fix hostdev managed handling (Mark McLoughlin),
- lxc_controller should not cash without args (Guido Gunther),
- bug fixes in I/O routines (Guido Gunther), fix migrationsave/restore
+ lxc_controller should not cash without args (Guido Günther),
+ bug fixes in I/O routines (Guido Günther), fix migrationsave/restore
for QEmu 0.10.0 (Daniel Berrange), avoid crash on VBox init
- (Guido Gunther), fix dev and cgroup init in LXC (Ryota Ozaki),
+ (Guido Günther), fix dev and cgroup init in LXC (Ryota Ozaki),
QEmu startup fix (Cole Robinson), block node reboots from LXCs (Ryota
Ozaki), QEmu argv detection fix for recent kvm (Daniel Berrange),
fix watch/timer event deletion (Daniel Berrange), fix XML escaping
@@ -1061,7 +1061,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<li>Improvements: add SCSI storage rescan (David Allan), rootless
LXC containers support improvements (Serge Hallyn), getHostname
support for LXC (Dan Smith), cleanup and logging output of some
- domain functions (Guido Günther), drop pool lock when allocating
+ domain functions (Guido Günther), drop pool lock when allocating
volumes (Cole Robinson), LXC handle kernel without CLONE_NEWUSER
support (Serge Hallyn), cpu pinning on defined Xen domains (Takahashi
Tomohiro), dynamic bridge names support (Soren Hansen), LXC use
@@ -1069,7 +1069,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
virNodeDeviceCreateXML and virNodeDeviceDestroy entry points
(Dave Allan)</li>
<li>Cleanups: don't hardcode getgrnam_r buffer to 1024 bytes (Guido
- Günther), qemudBuildCommandLine API cleanup (Daniel Berrange),
+ Günther), qemudBuildCommandLine API cleanup (Daniel Berrange),
</li>
</ul>
<h3>0.6.2: Apr 3 2009</h3>
@@ -1138,15 +1138,15 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
to avoid crashes (Daniel Berrange), mark defined network descriptions
as persistent (Cole Robinson), qemu+tls handshake negotiation hang
(Chris Lalancette)</li>
- <li>Improvements: don't hardcode ssh port (Guido Günther), new test
+ <li>Improvements: don't hardcode ssh port (Guido Günther), new test
cases and testing infrastructure (Jim Meyering), improve the
SExpr parser (John Levon), proper error reporting on xend
shutdown command (John Levon), proper handling of errors when
- saving QEmu domains state (Guido Günther), revamp of the internal
+ saving QEmu domains state (Guido Günther), revamp of the internal
error memory APIs (John Levon), better virsh error reporting (John
Levon), more daemon options to allow running multiple daemons (Jim
- Meyering), error handling when creating a QEmu domain (Guido Günther),
- fix timeouts in QEmu log reading (Guido Günther), migration with
+ Meyering), error handling when creating a QEmu domain (Guido Günther),
+ fix timeouts in QEmu log reading (Guido Günther), migration with
xend 3.3 fixes (John Levon), virsh XML dump flags cleanup (Cole
Robinson), fix build with loadable drivers (Maximilian Wilhelm),
internal XML APIs to read long long and hexa values (Mark
@@ -1160,7 +1160,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
(Jim Meyering), many error handling cleanups (Jim Meyering), XML
module cleanups (Mark McLoughlin), compiler warning (Maximilian
Wilhelm), daemon TCP listen cleanup (Cole Robinson), size_t type
- cleanup (Guido Günther), parallel make fix (Michael Marineau),
+ cleanup (Guido Günther), parallel make fix (Michael Marineau),
storage error diagnostic fix (Ryota Ozaki), remove redundant monitor
watch variable (Cole Robinson), qemu AttachDevice error report
improvement (Cole Robinson), virsh output cleanup (Jim Meyering),
@@ -1172,7 +1172,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<ul>
<li>New features: thread safety of the API and event handling (Daniel
Berrange), allow QEmu domains to survive daemon restart (Guido
- Günther), extended logging capabilities, support copy-on-write
+ Günther), extended logging capabilities, support copy-on-write
storage volumes (Daniel Berrange), support of storage cache
control options for QEmu/KVM (Daniel Berrange)</li>
<li>Portability: fix old DBus API problem, Debian portability fix
@@ -1184,14 +1184,14 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
solaris Xen fixes (John Levon), RPC portability to Solaris (Daniel
Berrange)</li>
<li>Documentation: typo fixes (Richard Jones), logging support,
- vnc keymap attributes (Guido Günther), HACKING file updates
+ vnc keymap attributes (Guido Günther), HACKING file updates
(Jim Meyering), new PCI passthrough format, libvirt-qpid and
UML driver documentation (Daniel Berrange), provide RNG schemas
for all XML formats used in libvirt APIs (Daniel Berrange), </li>
<li>Bug fixes: segfault on virtual network without bridge name (Cole
Robinson), various locking fixes (Cole Robinson), fix serial
- and parallel devices on tcp/unix/telnet (Guido Günther), leak
- in daemon (Jim Meyering), storage driver segfault (Miloslav TrmaC),
+ and parallel devices on tcp/unix/telnet (Guido Günther), leak
+ in daemon (Jim Meyering), storage driver segfault (Miloslav Trmač),
missing check in read-only connections (Daniel Berrange),
OpenVZ crash and mutex fixes (Anton Protopopov), couple of
daemon bug fixes (John Levon), OpenVZ MAC addresses generation
@@ -1206,15 +1206,15 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<li>Improvements: driver infrastructure and locking (Daniel Berrange),
Test driver infrastructure (Daniel Berrange), parallelism in the
daemon and associated config (Daniel Berrange), virsh help cleanups
- (Jim Meyering), logrotate daemon logs (Guido Günther), more
+ (Jim Meyering), logrotate daemon logs (Guido Günther), more
regression tests (Jim Meyering), QEmu SDL graphics (Itamar Heim),
add --version flag to daemon (Dave Allan), memory consumption
cleanup (Dave Allan), QEmu pid file and XML states for daemon
- restart (Guido Günther), gnulib updates (Jim Meyering and
+ restart (Guido Günther), gnulib updates (Jim Meyering and
Dan Berrange), PCI passthrough for KVM (Jason Krieg), generic
internal thread API (Daniel Berrange), RHEL-5 specific Xen
configure option and code (Markus Armbruster), save domain
- state as string in status file (Guido Günther), add locking
+ state as string in status file (Guido Günther), add locking
to all API entry points (Daniel Berrange), new ref counting APIs
(Daniel Berrange), IP address for Xen bridges (John Levon),
driver format for disk file types (Daniel Berrange), improve
@@ -1227,15 +1227,15 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
(Jim Meyering), gethostby* cleanup and test (Jim Meyering), some
code fixes (Dave Allan), various code cleanup (Jim Meyering),
virsh argument handling cleanup (Jim Meyering), virAsprintf
- cleanup replacement (Guido Günther), QEmu monitor reads (Cole
- Robinson), Makefile cleanups (Guido Günther), Xen code cleanups
+ cleanup replacement (Guido Günther), QEmu monitor reads (Cole
+ Robinson), Makefile cleanups (Guido Günther), Xen code cleanups
(John Levon), revamp of ELF export scripts (John Levon), domain
event callback args (John Levon), enforce use of pid_t (John Levon),
virsh pool-*-as XML code merge (Cole Robinson), xgettext warnings
- (Jim Meyering), add virKillProcess (Guido Günther), add
+ (Jim Meyering), add virKillProcess (Guido Günther), add
virGetHostname (David Lutterkort), add flags argument to the full
- XML parsing stack (Guido Günther), various daemon code cleanups
- (Guido Günther), handling of daemon missing config file (Jim
+ XML parsing stack (Guido Günther), various daemon code cleanups
+ (Guido Günther), handling of daemon missing config file (Jim
Meyering), rpcgen invocation cleanup (Richard Jones), devhelp
builkd makefile cleanups (John Levon), update error handling for
threading (Daniel Berrange), remove all non-rentrant POSIX calls
@@ -1255,7 +1255,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<li>Bug fixes: add a delay in storage backend for disks to show up
(Chris Lalancette), fix parsing for CDRom device with no source
(Daniel Berrange), use xenstore to list domains to avoid some
- bugs (Guido Günther), remove a leak in xen inotify code (Daniel
+ bugs (Guido Günther), remove a leak in xen inotify code (Daniel
Berrange), UML driver freeing of uninitialialized variable (Ron
Yorston), fix UML inotify code (Daniel Berrange), crash when
adding storage without a format (Cole Robinson)</li>
@@ -1263,8 +1263,8 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
max memory (Jim Fehlig), allow remote://hostname/ URI for automatic
probe of hypervisors (Daniel Berrange), fix daemon configuration
regression testing (Jim Meyering ), check /usr/bin/kvm for QEmu
- driver init (Guido Günther), proper active vs. inactive
- differentiation (Guido Günther), improve MTU setting on tap
+ driver init (Guido Günther), proper active vs. inactive
+ differentiation (Guido Günther), improve MTU setting on tap
interfaces (Eduardo Habkost), increase timeout for initial QEmu
monitor poll (Cole Robinson)</li>
<li>Cleanups:fix improper initialisations (Jim Meyering)</li>
@@ -1272,11 +1272,11 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<h3>0.5.0: Nov 25 2008</h3>
<ul>
<li>New features: CPU and scheduler support for LXC (Dan Smith), SDL display configuration (Daniel Berrange), domain lifecycle event support for QEmu and Xen with python bindings (Ben Guthro and Daniel Berrange), KVM/QEmu migration support (Rich Jones and Chris Lalancette), User Mode Linux driver (Daniel Berrange), API for node device enumeration using HAL and DeviceKit with python bindings (David Lively), </li>
- <li>Portability: RHEL build fixes, VPATH build (Guido Gunther), many MinGW related cleanups and fixes (Richard Jones), compilation without libvirtd (Richard Jones), Add a Windows icon (Richard Jones), sys/poll.h portability fixes (Daniel Berrange), gnulib and mingw cleanups (Jim Meyering), </li>
+ <li>Portability: RHEL build fixes, VPATH build (Guido Günther), many MinGW related cleanups and fixes (Richard Jones), compilation without libvirtd (Richard Jones), Add a Windows icon (Richard Jones), sys/poll.h portability fixes (Daniel Berrange), gnulib and mingw cleanups (Jim Meyering), </li>
<li>Documentation: virsh man page cleanups (Mark McLoughlin), doc for NIC model selection (Richard Jones), monitoring section, link to AMQP bindings, inew APIs, UML driver docs (Daniel Berrange), </li>
- <li>Bug fixes: Xen interfaces ordering (Jim Fehlig), startup timeout with multiple pty (Cole Robinson), segfault if QEmu without active virtual network (Cole Robinson), qemu small leak (Eduardo Habkost), index creation for more than 26 disks (Sanjay Rao and Chris Wright), virRealloc handling of 0 (Daniel Berrange), missing pointer initialization (Chris Lalancette), bus device index bug (Guido Günther), avoid crash in some error patch (Chris Lalancette), fix a problem in storage back-end (Chris Lalancette), minimum domain memory size check for Xen (Shigeki Sakamoto), switch off QEmu cache if device is shared (Charles Duffy), logical volume definition before scan bug (Chris Lalancette), a couple of memory leaks on QEmu vnc (Jim Meyering), lvs parsing fixes (Cole Robinson),</li>
- <li>Improvements: LXC resources control and internal cgroup API (Dan Smith), virDomainCreateLinux renamed virDomainDefineXML, network driver modularization (Daniel Berrange), change the way domain and net are reported in errors (Jim Meyering), partition table scan on iSCSI (Chris Lalancette), qemudDiskDeviceName to handle normal disks (Guido Günther), qemudDomainBlockStats improvement (Guido Günther), scsi/virtio hotplug support for KVM (Guido Günther), USB hot addition in QEmu (Guido Günther), logical pool and storage backend XML dump improvement (Chris Lalancette), MAC addresses prefix per driver (Daniel Berrange), OpenVZ getVersion support (Daniel Berrange), hot removal of scsi/virtio disks for KVM (Guido Günther), test storage driver (Cole Robinson), iSCSI and disk storage driver improvement on path handling (Chris Lalancette), UUID and ID support for Xenner (Daniel Berrange), better logging when when executing commands (Cole Robinson), bridged network for OpenVZ (Daniel Berrange), OpenVZ config file params (Evgeniy Sokolov), allow to build drivers as libtool convenience libs (Daniel Berrange), fully versioned linker script for exported ABI (Daniel Berrange), Push URI probing down into drivers open (Daniel Berrange), move all stateful drivers into the daemon binary (Daniel Berrange), improve domain event with a detail field (Daniel Berrange), domain events for QEMU driver (Daniel Berrange), event unregister callback crash (David Lively), plug a few leaks (Daniel Berrange), internal APIs for handling node device XML config (David Lively), tweaks to node device implementation (Daniel Berrange), OpenVZ vCPUs values init (Evgeniy Sokolov)</li>
- <li>Cleanups: C99 initializers (Guido Gunther), test output (Cole Robinson), debug macro centralization (Cole Robinson), various error handling (Guido Günther), safewrite use cleanup (Jim Meyering), centralize error reporting logic (Cole Robinson), avoid printf warnings (Daniel Berrange), use arrays instead of list for internal APIs (Daniel Berrange), remove many format string warnings Jim Meyering), avoid syntax check warnings (Chris Lalancette), improve po-check and list generation (Jim Meyering), .gitignore generation and handling (Jim Meyering), use ARRAY_CARDINALITY (Jim Meyering), gnulib updates and switch to use netdb.h (Jim Meyering), drop usage of socket_errno (Jim Meyering), remove socketcompat.h (Jim Meyering), more tests (Jim Meyering), drop virStringList (Daniel Berrange), reformatting and isolation of the error APIs (Daniel Berrange), cleanup internal.h and move internal APIs in specific headers (Daniel Berrange), move domain events helpers into domain_events.c (Daniel Berrange), cleanup the way optional modules are compiled (Daniel Berrange), add new logging module, optional dlopen of drivers (Daniel Berrange), various new tests (Jim Meyering), cleanups when Xen is not configured in (Daniel Berrange), add some missing functions comments (Jim Meyering),</li>
+ <li>Bug fixes: Xen interfaces ordering (Jim Fehlig), startup timeout with multiple pty (Cole Robinson), segfault if QEmu without active virtual network (Cole Robinson), qemu small leak (Eduardo Habkost), index creation for more than 26 disks (Sanjay Rao and Chris Wright), virRealloc handling of 0 (Daniel Berrange), missing pointer initialization (Chris Lalancette), bus device index bug (Guido Günther), avoid crash in some error patch (Chris Lalancette), fix a problem in storage back-end (Chris Lalancette), minimum domain memory size check for Xen (Shigeki Sakamoto), switch off QEmu cache if device is shared (Charles Duffy), logical volume definition before scan bug (Chris Lalancette), a couple of memory leaks on QEmu vnc (Jim Meyering), lvs parsing fixes (Cole Robinson),</li>
+ <li>Improvements: LXC resources control and internal cgroup API (Dan Smith), virDomainCreateLinux renamed virDomainDefineXML, network driver modularization (Daniel Berrange), change the way domain and net are reported in errors (Jim Meyering), partition table scan on iSCSI (Chris Lalancette), qemudDiskDeviceName to handle normal disks (Guido Günther), qemudDomainBlockStats improvement (Guido Günther), scsi/virtio hotplug support for KVM (Guido Günther), USB hot addition in QEmu (Guido Günther), logical pool and storage backend XML dump improvement (Chris Lalancette), MAC addresses prefix per driver (Daniel Berrange), OpenVZ getVersion support (Daniel Berrange), hot removal of scsi/virtio disks for KVM (Guido Günther), test storage driver (Cole Robinson), iSCSI and disk storage driver improvement on path handling (Chris Lalancette), UUID and ID support for Xenner (Daniel Berrange), better logging when when executing commands (Cole Robinson), bridged network for OpenVZ (Daniel Berrange), OpenVZ config file params (Evgeniy Sokolov), allow to build drivers as libtool convenience libs (Daniel Berrange), fully versioned linker script for exported ABI (Daniel Berrange), Push URI probing down into drivers open (Daniel Berrange), move all stateful drivers into the daemon binary (Daniel Berrange), improve domain event with a detail field (Daniel Berrange), domain events for QEMU driver (Daniel Berrange), event unregister callback crash (David Lively), plug a few leaks (Daniel Berrange), internal APIs for handling node device XML config (David Lively), tweaks to node device implementation (Daniel Berrange), OpenVZ vCPUs values init (Evgeniy Sokolov)</li>
+ <li>Cleanups: C99 initializers (Guido Günther), test output (Cole Robinson), debug macro centralization (Cole Robinson), various error handling (Guido Günther), safewrite use cleanup (Jim Meyering), centralize error reporting logic (Cole Robinson), avoid printf warnings (Daniel Berrange), use arrays instead of list for internal APIs (Daniel Berrange), remove many format string warnings Jim Meyering), avoid syntax check warnings (Chris Lalancette), improve po-check and list generation (Jim Meyering), .gitignore generation and handling (Jim Meyering), use ARRAY_CARDINALITY (Jim Meyering), gnulib updates and switch to use netdb.h (Jim Meyering), drop usage of socket_errno (Jim Meyering), remove socketcompat.h (Jim Meyering), more tests (Jim Meyering), drop virStringList (Daniel Berrange), reformatting and isolation of the error APIs (Daniel Berrange), cleanup internal.h and move internal APIs in specific headers (Daniel Berrange), move domain events helpers into domain_events.c (Daniel Berrange), cleanup the way optional modules are compiled (Daniel Berrange), add new logging module, optional dlopen of drivers (Daniel Berrange), various new tests (Jim Meyering), cleanups when Xen is not configured in (Daniel Berrange), add some missing functions comments (Jim Meyering),</li>
</ul>
<h3>0.4.6: Sep 23 2008</h3>
<ul>
@@ -1288,7 +1288,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
OpenVZ (Evgeniy Sokolov), fix parsing of pool without a source
(Chris Lalancette and Daniel Berrange)</li>
<li>Improvements: add storage disk volume delete (Cole Robinson),
- KVM dynamic max CPU detection (Guido Günther), spec file improvement
+ KVM dynamic max CPU detection (Guido Günther), spec file improvement
for minimal builds (Ben Guthro), improved error message in XM
configuration module (Richard Jones), network config in OpenVZ
support (Evgeniy Sokolov), enable stopping a pool in logical
@@ -1303,7 +1303,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
unified XML domain and network parsing for all drivers (Daniel
Berrange), OpenVZ features improvements (Evgeniy Sokolov),
OpenVZ and Linux containers support now default, USB device
- passthrough for QEmu/KVM (Guido Günther), storage pool source
+ passthrough for QEmu/KVM (Guido Günther), storage pool source
discovery (David Lively)</li>
<li>Portability: fixes for MinGW (Atsushi SAKAI and Daniel Berrange),
detection of xen lib improvement (David Lively),
@@ -1315,7 +1315,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<li>Documentation: various typo fixes (Anton Protopopov, Toth
István, Atsushi SAKAI, Nguyen Anh Quynh),
Java bindings docs, remove Xen centric
- comments (Guido Günther), various typo in comments (Chris
+ comments (Guido Günther), various typo in comments (Chris
Lalancette), docs and API comments fixes (Charles Duffy),
how to contribute to open source link (Richard Jones),
memory unit fixups (matthew chan)</li>
@@ -1325,14 +1325,14 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
in QEmu/KVM (Daniel Berrange), fix OpenVZ probe function (Evgeniy
Sokolov), ID related lookup fixes in OpenVZ (Evgeniy Sokolov),
pool cration for netfs (Cole Robinson), check for migrate support
- with QEmu (Guido Günther), check against double create with QEmu
- (Guido Günther), broken open failure detection in QEmu (Guido
- Günther), UUID string conversions in QEmu (Guido Günther),
+ with QEmu (Guido Günther), check against double create with QEmu
+ (Guido Günther), broken open failure detection in QEmu (Guido
+ Günther), UUID string conversions in QEmu (Guido Günther),
various small cleanup and bug fixes (Daniel Berrange), ID
related fixes in the test driver (Daniel Berrange), better error
reporting on XML parsing (Daniel Berrange), empty CD-ROM source
device section (Chris Lalancette), avoid crashes for interface
- without a name in QEmu (Guido Günther), provide the real
+ without a name in QEmu (Guido Günther), provide the real
vncport (Charles Duffy), fix forward delay (Daniel Berrange),
new VM state is initialized to be SHUTOFF (Daniel Berrange),
virsh attach-disk bug fixes (Chris Lalancette), veth clash
@@ -1364,7 +1364,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
(Daniel Berrange), virsh "edit" command (Richard Jones), save
UUID of OpenVZ domains (Evgeniy Sokolov), improve xen blocks
statistics (Chris Lalancette), gnulib updates (Jim Meyering),
- allow to add disk as USB devices (Guido Günther), LXC container
+ allow to add disk as USB devices (Guido Günther), LXC container
process should survive libvirtd restarts (Daniel Berrange), allow
to define static host domain configs, number of CPU used by
OpenVZ domains (Evgeniy Sokolov), private root fs for LXC (Daniel
@@ -1496,9 +1496,9 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
driver (Cole Robinson), xen and hvm added to test driver capabilities
(Cole Robinson)</li>
<li>Code cleanup: remove unused getopt header (Jim Meyering), mark more
- strings as translatable (Guido Günther and Jim Meyering), convert
+ strings as translatable (Guido Günther and Jim Meyering), convert
error strings to something meaningful and translatable (Jim Meyering),
- Linux Containers code cleanup, last error initializer (Guido Günther)</li>
+ Linux Containers code cleanup, last error initializer (Guido Günther)</li>
</ul>
<h3>0.4.1: Mar 3 2008</h3>
<ul>
@@ -1514,7 +1514,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
preserve vif order from config files (Hiroyuki Kaguchi), invalid
pointer access (Jim Meyering), virDomainGetXMLDesc flag handling,
device name conversion on stats (Daniel Berrange), double mutex lock
- (Daniel Berrange), config file reading crashes (Guido Guenther),
+ (Daniel Berrange), config file reading crashes (Guido Günther),
xenUnifiedDomainSuspend bug (Marcus Meissner), do not crash if
/sys/hypervisor/capabilities is missing (Mark McLoughlin),
virHashRemoveSet bug (Hiroyuki Kaguchi), close-on-exec flag for
@@ -1523,7 +1523,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
MAC addresses checks (Shigeki Sakamoto and Richard Jones),
allow to read non-seekable files (Jim Meyering)</li>
<li>Improvements: Windows build (Richard Jones), KVM/QEmu shutdown
- (Guido Guenther), catch virExec output on debug (Mark McLoughlin),
+ (Guido Günther), catch virExec output on debug (Mark McLoughlin),
integration of iptables and lokkit (Mark McLoughlin), keymap
parameter for VNC servers (Daniel Hokka Zakrisson), enable debug
by default using VIR_DEBUG (Daniel Berrange), xen 3.2 fixes
@@ -1545,7 +1545,7 @@ and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
for RHEL4 (Daniel Berrange), CR/LF cleanups (Richard Jones),
various automatic code check and associated cleanups (Jim Meyering),
various memory leaks (Jim Meyering), fix compilation when building
- without Xen (Guido Guenther), mark translatables strings (Jim Meyering),
+ without Xen (Guido Günther), mark translatables strings (Jim Meyering),
use virBufferAddLit for constant strings (Jim Meyering), fix
make distcheck (Jim Meyering), return values for python bindings (Cole
Robinson), trailing blanks fixes (Jim Meyering), gcc-4.3.0 fixes
--
1.6.0.4
14 years, 9 months
[libvirt] [PATCH] Add missing commas to the 0.7.4 news section
by Matthias Bolte
---
docs/news.html.in | 428 ++++++++++++++++++++++++++--------------------------
1 files changed, 214 insertions(+), 214 deletions(-)
diff --git a/docs/news.html.in b/docs/news.html.in
index 47d7f42..3586071 100644
--- a/docs/news.html.in
+++ b/docs/news.html.in
@@ -3,240 +3,240 @@
<body>
<h1 >Releases</h1>
<p>Here is the list of official releases, however since it is early on in the
-development of libvirt, it is preferable when possible to just use the <a href="downloads.html">CVS version or snapshot</a>, contact the mailing list
+development of libvirt, it is preferable when possible to just use the <a href="downloads.html">GIT version or snapshot</a>, contact the mailing list
and check the <a href="ChangeLog.html">ChangeLog</a> to gauge progress.</p>
<h3>0.7.4: Nov 20 2009</h3>
<ul>
<li>Features:
- Implement a node device backend using libudev (David Allan)
- New APIs for checking some object properties (Daniel P. Berrange)
- Fully asynchronous monitor I/O processing (Daniel P. Berrange)
- add MAC address based port filtering to qemu (Gerhard Stenzel)
+ Implement a node device backend using libudev (David Allan),
+ New APIs for checking some object properties (Daniel P. Berrange),
+ Fully asynchronous monitor I/O processing (Daniel P. Berrange),
+ add MAC address based port filtering to qemu (Gerhard Stenzel),
Support for IPv6 / multiple addresses per interfaces (Laine Stump)
</li>
<li>Documentation:
- Document overriding domain interface target (Cole Robinson)
- 514532 Fix man page, most operation are synchronous (Daniel Veillard)
- Fix typo in error message (Matthew Booth)
- esx: Add documentation to the website (Matthias Bolte)
- AppArmor updates of examples (Jamie Strandboge)
- Add documentation for <channel> domain element (Matthew Booth)
- Separate character device doc guest and host parts (Matthew Booth)
- Add a Python example that lists active ESX domains (Matthias Bolte)
- LXC fix wrong or out-of-date function descriptions (Ryota Ozaki)
- docs: <clock> property is 'offset', not 'sync' (Cole Robinson)
- Update the documentation for virDomainMigrateToURI (Chris Lalancette)
+ Document overriding domain interface target (Cole Robinson),
+ 514532 Fix man page, most operation are synchronous (Daniel Veillard),
+ Fix typo in error message (Matthew Booth),
+ esx: Add documentation to the website (Matthias Bolte),
+ AppArmor updates of examples (Jamie Strandboge),
+ Add documentation for <channel> domain element (Matthew Booth),
+ Separate character device doc guest and host parts (Matthew Booth),
+ Add a Python example that lists active ESX domains (Matthias Bolte),
+ LXC fix wrong or out-of-date function descriptions (Ryota Ozaki),
+ docs: <clock> property is 'offset', not 'sync' (Cole Robinson),
+ Update the documentation for virDomainMigrateToURI (Chris Lalancette),
fix virDomainMigrateToURI doc (Dan Kenigsberg)
</li>
<li>Bug fixes:
- 504262 Check for duplicated UUID in XM Xen defines (Daniel Veillard)
- 512069 fix domain XML schemas for backward compatibility (Daniel Veillard)
- qemu-kvm needs -enable-kvm flag for VT optimization (Steve Yarmie)
- fix deprecated iptables command syntax (Steve Yarmie)
- Ensure driver lock is released when entering QEMU monitor (Daniel P. Berrange)
- only remove masquerade roles for VIR_NETWORK_FORWARD_NAT (Guido Günther)
- esx: Fix CPU clock Hz to MHz conversion (Matthias Bolte)
- esx: Fix memory leak in esxVI_HostCpuIdInfo_Free() (Matthias Bolte)
- esx: Fix MAC address formatting (Matthias Bolte)
- Fix compilation of libvirt against xen-unstable (Jim Fehlig)
- Fix probing for libpciaccess (Daniel P. Berrange)
- Fix incorrect reference counting logic in qemu monitor open (Daniel P. Berrange)
- Don't return fatal error in HAL driver init if HAL isn't running (Daniel P. Berrange)
- Fix cleanup when state driver init fails (Daniel P. Berrange)
- AppArmor handling of accesses to readonly files (Jamie Strandboge)
- AppArmor require absolute paths (Jamie Strandboge)
- Check that domain is running when starting console (Daniel P. Berrange)
- Fix incorrect variable passed to LXC event callback (Daniel P. Berrange)
- Fix race condition in HAL driver startup (Daniel P. Berrange)
- Remove capng_lock() call when spawning LXC container init process (Daniel P. Berrange)
- Fix initscript to check daemon pidfile (Daniel P. Berrange)
- Filter out stale domains from xenstore listing (Daniel P. Berrange)
- Fix logic in xenUnifiedNumOfDomains to match xenUnifiedListDomains (Jonas Eriksson)
- Disable IPv6 socket auto-binding to IPv4 socket (Daniel P. Berrange)
- Fix save and restore with non-privileged guests and SELinux (Daniel P. Berrange)
- Prevent initializing ebtables if disabled in qemu.conf (Ryota Ozaki)
- phyp: too much timeout when polling socket (Eduardo Otubo)
- phyp: ssh authentication with public key fixed (Eduardo Otubo)
- opennebula: Fix potential memory/mutex leak in state driver startup (Matthias Bolte)
- phyp: Break potential infinite loops (Matthias Bolte)
- phyp: Fix memory/session leaks and potential invalid frees (Matthias Bolte)
- storage: conf: Fix memory leak in encryption parsing (Cole Robinson)
- Fix improper error return in virInterfaceDefParseProtoIPvX (Laine Stump)
- Fix virInterfaceIpDefPtr leak during virInterfaceIpDefFree (Laine Stump)
- give up python interpreter lock before calling cb (Dan Kenigsberg)
- ESX: Fix memory leak in list handling functions. (Matthias Bolte)
- Fix --with-init-script configure option (Matthew Booth)
- Don't let parent of daemon exit until basic initialization is done (Daniel P. Berrange)
- Fix configure detection of device mapper (Pritesh Kothari)
- Remote code caught EINTR making it ininterruptable (Daniel Veillard)
- virterror: Add a missing 'break' for VIR_ERR_INVALID_SECRET (Cole Robinson)
- Fix p2p migration without a passed uri. (Cole Robinson)
- Fix problems in the Xen inotify driver. (Matthias Bolte)
- Remove a completely bogus reference increment in the Xen driver. (Chris Lalancette)
- 528575 avoid libvirtd crash on LCX domain autostart (Daniel Veillard)
- Fix SELinux linking issues (Jim Fehlig)
- node device: Fix locking issue in virNodeDeviceDestroy (Cole Robinson)
- LXC fix virCgroupGetValueStr problem with \n (Ryota Ozaki)
- Avoid crash in virBufferEscapeString (Laine Stump)
+ 504262 Check for duplicated UUID in XM Xen defines (Daniel Veillard),
+ 512069 fix domain XML schemas for backward compatibility (Daniel Veillard),
+ qemu-kvm needs -enable-kvm flag for VT optimization (Steve Yarmie),
+ fix deprecated iptables command syntax (Steve Yarmie),
+ Ensure driver lock is released when entering QEMU monitor (Daniel P. Berrange),
+ only remove masquerade roles for VIR_NETWORK_FORWARD_NAT (Guido Günther),
+ esx: Fix CPU clock Hz to MHz conversion (Matthias Bolte),
+ esx: Fix memory leak in esxVI_HostCpuIdInfo_Free() (Matthias Bolte),
+ esx: Fix MAC address formatting (Matthias Bolte),
+ Fix compilation of libvirt against xen-unstable (Jim Fehlig),
+ Fix probing for libpciaccess (Daniel P. Berrange),
+ Fix incorrect reference counting logic in qemu monitor open (Daniel P. Berrange),
+ Don't return fatal error in HAL driver init if HAL isn't running (Daniel P. Berrange),
+ Fix cleanup when state driver init fails (Daniel P. Berrange),
+ AppArmor handling of accesses to readonly files (Jamie Strandboge),
+ AppArmor require absolute paths (Jamie Strandboge),
+ Check that domain is running when starting console (Daniel P. Berrange),
+ Fix incorrect variable passed to LXC event callback (Daniel P. Berrange),
+ Fix race condition in HAL driver startup (Daniel P. Berrange),
+ Remove capng_lock() call when spawning LXC container init process (Daniel P. Berrange),
+ Fix initscript to check daemon pidfile (Daniel P. Berrange),
+ Filter out stale domains from xenstore listing (Daniel P. Berrange),
+ Fix logic in xenUnifiedNumOfDomains to match xenUnifiedListDomains (Jonas Eriksson),
+ Disable IPv6 socket auto-binding to IPv4 socket (Daniel P. Berrange),
+ Fix save and restore with non-privileged guests and SELinux (Daniel P. Berrange),
+ Prevent initializing ebtables if disabled in qemu.conf (Ryota Ozaki),
+ phyp: too much timeout when polling socket (Eduardo Otubo),
+ phyp: ssh authentication with public key fixed (Eduardo Otubo),
+ opennebula: Fix potential memory/mutex leak in state driver startup (Matthias Bolte),
+ phyp: Break potential infinite loops (Matthias Bolte),
+ phyp: Fix memory/session leaks and potential invalid frees (Matthias Bolte),
+ storage: conf: Fix memory leak in encryption parsing (Cole Robinson),
+ Fix improper error return in virInterfaceDefParseProtoIPvX (Laine Stump),
+ Fix virInterfaceIpDefPtr leak during virInterfaceIpDefFree (Laine Stump),
+ give up python interpreter lock before calling cb (Dan Kenigsberg),
+ ESX: Fix memory leak in list handling functions. (Matthias Bolte),
+ Fix --with-init-script configure option (Matthew Booth),
+ Don't let parent of daemon exit until basic initialization is done (Daniel P. Berrange),
+ Fix configure detection of device mapper (Pritesh Kothari),
+ Remote code caught EINTR making it ininterruptable (Daniel Veillard),
+ virterror: Add a missing 'break' for VIR_ERR_INVALID_SECRET (Cole Robinson),
+ Fix p2p migration without a passed uri. (Cole Robinson),
+ Fix problems in the Xen inotify driver. (Matthias Bolte),
+ Remove a completely bogus reference increment in the Xen driver. (Chris Lalancette),
+ 528575 avoid libvirtd crash on LCX domain autostart (Daniel Veillard),
+ Fix SELinux linking issues (Jim Fehlig),
+ node device: Fix locking issue in virNodeDeviceDestroy (Cole Robinson),
+ LXC fix virCgroupGetValueStr problem with \n (Ryota Ozaki),
+ Avoid crash in virBufferEscapeString (Laine Stump),
LXC complement PATH environment variable (Ryota Ozaki)
</li>
<li>Improvements:
- Enable udev instead of hal on F12 / RHEL-6 or later (Daniel P. Berrange)
- python: Actually implement list*Interfaces bindings (Cole Robinson)
- esx: Handle 'vmxnet3' in esxVMX_FormatEthernet() (Matthias Bolte)
- Fix check for existance of cgroups at creation (Daniel P. Berrange)
- Fix virt-aa-helper when host and os.type arch differ (Jamie Strandboge)
- Add translation of PCI vendor and product IDs (David Allan)
- Add scsi_target device type (David Allan)
- Add several fields to node device capabilities (David Allan)
- Add virConnectGetLibvirtVersion API (Cole Robinson)
- Implement finer grained migration control for Xen (Maximilian Wilhelm)
- Support for SATA Disks in virDomainDiskBus (pritesh)
- LXC implement missing DomainInterfaceStats API (Ryota Ozaki)
- disable mac_filter config switch by default (Gerhard Stenzel)
- phyp: Reorder keyboard_interactive label in openSSHSession() (Eduardo Otubo)
- Implmentation of new APIs to checking state/persistence of objects (Daniel P. Berrange)
- Allow timeouts waiting for QEMU job lock (Daniel P. Berrange)
- Release driver and domain lock when running monitor commands (Daniel P. Berrange)
- Add reference counting on virDomainObjPtr objects (Daniel P. Berrange)
- Locking of the qemuMonitorPtr object (Daniel P. Berrange)
- Wrap text mode monitor APIs, pass qemuMonitorPtr directly to APIs (Daniel P. Berrange)
- Move encryption lookup back into qemu driver file (Daniel P. Berrange)
- Make use of private data structure for monitor state (Daniel P. Berrange)
- Add a new timed condition variable wait API (Daniel P. Berrange)
- Fix errno handling for pthreads wrappers (Daniel P. Berrange)
- 524280 pass max lease option to dnsmasq (Daniel Veillard)
- Store the range size when adding a DHCP range (Daniel Veillard)
- qemu: Allow cpu pinning for all logical CPUs, not just physical (Cole Robinson)
- qemu: Use same create/define overwrite logic for migration prepare. (Cole Robinson)
- qemu: Break out function to check if we can create/define/restore (Cole Robinson)
- Add sentinel attribute for NULL terminated arg lists (Paolo Bonzini)
- test: Update inactive guest config on shutdown (Cole Robinson)
- test: Add testDomainShutdownState helper (Cole Robinson)
- Properly convert port numbers to/from network byte order (Matthew Booth)
- phyp add create() and destroy() support (Eduardo Otubo)
- Support for <channel> in domain and QEmu backend (Matthew Booth)
- Detect availability of QEMU -chardev CLI option (Matthew Booth)
- Allow character devices to have different target types (Matthew Booth)
- LXC allow container to have ethN interfaces (Ryota Ozaki)
- New ebtables module wrapper (Gerhard Stenzel)
- test: Implement virDomainPinVcpu (Cole Robinson)
- test: Implement virDomainGetVcpus (Cole Robinson)
- test: Update vcpu runtime info in SetVcpus (Cole Robinson)
- test: Use privateData to track running VM vcpu state (Cole Robinson)
- test: Break out wrapper for setting up started domain state. (Cole Robinson)
- test: Fixes for SetVcpus (Cole Robinson)
- Make monitor type (miimon/arpmon) optional in bond xml (Laine Stump)
- Support reporting live interface IP/netmask (Laine Stump)
- Make startmode optional in toplevel interface definition (Laine Stump)
- Move libvirtd event loop into background thread (Daniel P. Berrange)
- Allow NULL mac address in virGetInterface (Laine Stump)
- ESX: Don't automatically follow redirects. (Matthias Bolte)
- ESX: Change disk selection for datastore detection. (Matthias Bolte)
- ESX: Fallback to the preliminary name if the datastore cannot be found. (Matthias Bolte)
- Set KMEMSIZE for OpenVZ domains being defined (Yuji NISHIDA)
- Allow for a driver specific private data blob in virDomainObjPtr (Daniel P. Berrange)
- More network utility functions (Matthew Booth)
- Add symbols from new network.h module (Daniel Veillard)
- Set of new network related utilities (Daniel Veillard)
- Convert virDomainObjListPtr to use a hash of domain objects (Daniel P. Berrange)
- qemu: migrate: Don't require manual URI to specify a port (Cole Robinson)
- test: Support virStorageFindPoolSources (Cole Robinson)
- storage: Add ParseSourceString function for use with FindPoolSources. (Cole Robinson)
- Add support for an external TFTP boot server (Paolo Bonzini)
- test: Support virNodeDeviceCreate and virNodeDeviceDestroy (Cole Robinson)
- Consolidate virXPathNodeSet() (Daniel Veillard)
- Support QEMU watchdog device. (Richard Jones)
- Do not log rotate very small logs (Dan Kenigsberg)
- LXC implement missing macaddr assignment feature (Ryota Ozaki)
- tests: Initialize virRandom in for test suite. (Cole Robinson)
- tests: Add storage volume XML 2 XML tests. (Cole Robinson)
- tests: Add network XML to XML tests. (Cole Robinson)
- schema: Update network schema. (Cole Robinson)
- tests: Add XML 2 XML tests for storage pools. (Cole Robinson)
- tests: Break out duplicate schema verification functionality. (Cole Robinson)
- tests: Fix text output for interface XML 2 XML (Cole Robinson)
- Add ocfs2 to list of fs pool types (Jim Fehlig)
+ Enable udev instead of hal on F12 / RHEL-6 or later (Daniel P. Berrange),
+ python: Actually implement list*Interfaces bindings (Cole Robinson),
+ esx: Handle 'vmxnet3' in esxVMX_FormatEthernet() (Matthias Bolte),
+ Fix check for existance of cgroups at creation (Daniel P. Berrange),
+ Fix virt-aa-helper when host and os.type arch differ (Jamie Strandboge),
+ Add translation of PCI vendor and product IDs (David Allan),
+ Add scsi_target device type (David Allan),
+ Add several fields to node device capabilities (David Allan),
+ Add virConnectGetLibvirtVersion API (Cole Robinson),
+ Implement finer grained migration control for Xen (Maximilian Wilhelm),
+ Support for SATA Disks in virDomainDiskBus (pritesh),
+ LXC implement missing DomainInterfaceStats API (Ryota Ozaki),
+ disable mac_filter config switch by default (Gerhard Stenzel),
+ phyp: Reorder keyboard_interactive label in openSSHSession() (Eduardo Otubo),
+ Implmentation of new APIs to checking state/persistence of objects (Daniel P. Berrange),
+ Allow timeouts waiting for QEMU job lock (Daniel P. Berrange),
+ Release driver and domain lock when running monitor commands (Daniel P. Berrange),
+ Add reference counting on virDomainObjPtr objects (Daniel P. Berrange),
+ Locking of the qemuMonitorPtr object (Daniel P. Berrange),
+ Wrap text mode monitor APIs, pass qemuMonitorPtr directly to APIs (Daniel P. Berrange),
+ Move encryption lookup back into qemu driver file (Daniel P. Berrange),
+ Make use of private data structure for monitor state (Daniel P. Berrange),
+ Add a new timed condition variable wait API (Daniel P. Berrange),
+ Fix errno handling for pthreads wrappers (Daniel P. Berrange),
+ 524280 pass max lease option to dnsmasq (Daniel Veillard),
+ Store the range size when adding a DHCP range (Daniel Veillard),
+ qemu: Allow cpu pinning for all logical CPUs, not just physical (Cole Robinson),
+ qemu: Use same create/define overwrite logic for migration prepare. (Cole Robinson),
+ qemu: Break out function to check if we can create/define/restore (Cole Robinson),
+ Add sentinel attribute for NULL terminated arg lists (Paolo Bonzini),
+ test: Update inactive guest config on shutdown (Cole Robinson),
+ test: Add testDomainShutdownState helper (Cole Robinson),
+ Properly convert port numbers to/from network byte order (Matthew Booth),
+ phyp add create() and destroy() support (Eduardo Otubo),
+ Support for <channel> in domain and QEmu backend (Matthew Booth),
+ Detect availability of QEMU -chardev CLI option (Matthew Booth),
+ Allow character devices to have different target types (Matthew Booth),
+ LXC allow container to have ethN interfaces (Ryota Ozaki),
+ New ebtables module wrapper (Gerhard Stenzel),
+ test: Implement virDomainPinVcpu (Cole Robinson),
+ test: Implement virDomainGetVcpus (Cole Robinson),
+ test: Update vcpu runtime info in SetVcpus (Cole Robinson),
+ test: Use privateData to track running VM vcpu state (Cole Robinson),
+ test: Break out wrapper for setting up started domain state. (Cole Robinson),
+ test: Fixes for SetVcpus (Cole Robinson),
+ Make monitor type (miimon/arpmon) optional in bond xml (Laine Stump),
+ Support reporting live interface IP/netmask (Laine Stump),
+ Make startmode optional in toplevel interface definition (Laine Stump),
+ Move libvirtd event loop into background thread (Daniel P. Berrange),
+ Allow NULL mac address in virGetInterface (Laine Stump),
+ ESX: Don't automatically follow redirects. (Matthias Bolte),
+ ESX: Change disk selection for datastore detection. (Matthias Bolte),
+ ESX: Fallback to the preliminary name if the datastore cannot be found. (Matthias Bolte),
+ Set KMEMSIZE for OpenVZ domains being defined (Yuji NISHIDA),
+ Allow for a driver specific private data blob in virDomainObjPtr (Daniel P. Berrange),
+ More network utility functions (Matthew Booth),
+ Add symbols from new network.h module (Daniel Veillard),
+ Set of new network related utilities (Daniel Veillard),
+ Convert virDomainObjListPtr to use a hash of domain objects (Daniel P. Berrange),
+ qemu: migrate: Don't require manual URI to specify a port (Cole Robinson),
+ test: Support virStorageFindPoolSources (Cole Robinson),
+ storage: Add ParseSourceString function for use with FindPoolSources. (Cole Robinson),
+ Add support for an external TFTP boot server (Paolo Bonzini),
+ test: Support virNodeDeviceCreate and virNodeDeviceDestroy (Cole Robinson),
+ Consolidate virXPathNodeSet() (Daniel Veillard),
+ Support QEMU watchdog device. (Richard Jones),
+ Do not log rotate very small logs (Dan Kenigsberg),
+ LXC implement missing macaddr assignment feature (Ryota Ozaki),
+ tests: Initialize virRandom in for test suite. (Cole Robinson),
+ tests: Add storage volume XML 2 XML tests. (Cole Robinson),
+ tests: Add network XML to XML tests. (Cole Robinson),
+ schema: Update network schema. (Cole Robinson),
+ tests: Add XML 2 XML tests for storage pools. (Cole Robinson),
+ tests: Break out duplicate schema verification functionality. (Cole Robinson),
+ tests: Fix text output for interface XML 2 XML (Cole Robinson),
+ Add ocfs2 to list of fs pool types (Jim Fehlig),
Finer grained migration control (Chris Lalancette)
</li>
<li>Cleanups:
- remove sysfs_path and parent_sysfs_path from XML (Dave Allan)
- Removing devicePath member from dev struct (Dave Allan)
- report OOM in two places in node_device_driver.c (Dave Allan)
- Whitespace cleanup for pre-tags on the website (Matthias Bolte)
- Fix type in configure output summary (Daniel P. Berrange)
- Remove a compilation warning on uninitialized var (Daniel Veillard)
- Change DTD references to use public instead of system identifier (Matthias Bolte)
- Remove obsolete devicekit checks (Daniel P. Berrange)
- Small guestfwd code cleanup (Matthew Booth)
- Small indentation cleanup of domain schema (Matthew Booth)
- AppArmor code cleanups (Jamie Strandboge)
- Fix formatting of XML for an inactive guest (Daniel P. Berrange)
- Remove DevKit node device backend (David Allan)
- Exclude numactl on s390[x] (Daniel P. Berrange)
- Fix error handling in qemuMonitorOpen (Ryota Ozaki)
- Fix warning on make due to missing cast (int) (Ryota Ozaki)
- Various fixes following a code review part 2 (Daniel Veillard)
- Various fixes following a code review (Daniel Veillard)
- Move code for low level QEMU monitor interaction into separate file (Daniel P. Berrange)
- Make pciDeviceList struct opaque (Daniel P. Berrange)
- Add missing OOM error checks, reports and cleanups (Matthias Bolte)
- Removes the ebtablesSaveRules() function (Gerhard Stenzel)
- phyp: Use actual error code instead of 0 (Matthias Bolte)
- phyp: Don't use VIR_ALLOC if a stack variable is good enough (Matthias Bolte)
- phyp: Fix several UUID table related problems (Matthias Bolte)
- phyp: Check for exit_status < 0 before parsing the result (Matthias Bolte)
- phyp: memcpy/memmove/memset can't fail, so don't check for error (Matthias Bolte)
- phyp: Make generic domain listing functions return -1 in case of error (Matthias Bolte)
- Fix configure check for libssh2 (Matthias Bolte)
- Repair getIPv4Addr after the ntohl conversion (Daniel Veillard)
- Cleanup whitespace in docs (Matthew Booth)
- Use virBuffer when building QEMU char dev command line (Matthew Booth)
- Cleanup virBuffer usage in qemdBuildCommandLine (Matthew Booth)
- Fix some cut-and-paste error in migration code (Paolo Bonzini)
- Ensure guestfwd address is IPv4 and various cleanups (Matthew Booth)
- LXC cleanup deep indentation in lxcDomainSetAutostart (Ryota Ozaki)
- LXC messages cleanup and fix lxcError (Ryota Ozaki)
- qemu: Remove compiled out localhost migration support (Cole Robinson)
- Various error reporting fixes (Cole Robinson)
- Improve error reporting for virConnectGetHostname calls (Cole Robinson)
- Fix up NLS warnings. (Chris Lalancette)
- Remove redundant virFileDeletePID() call (Chris Lalancette)
- Fix return value in virStateInitialize impl for LXC (Daniel P. Berrange)
- ESX: Unify naming of VI API utility and convenience functions. (Matthias Bolte)
- Rename internal APis (Daniel P. Berrange)
- Pull signal setup code out into separate method (Daniel P. Berrange)
- Fix duplicating logging of errors in libvirtd (Daniel P. Berrange)
- Fix initialization order bugs (Daniel P. Berrange)
- Misc cleanup to network socket init (Daniel P. Berrange)
- Annotate many methods with ATTRIBUTE_RETURN_CHECK & fix problems (Daniel P. Berrange)
- Don't use private struct member names of in6_addr (Matthias Bolte)
- Fix typo in network.c function comments (Matthew Booth)
- libvirt-devel should only require libvirt-client (Mark McLoughlin)
- qemu: Fix an error message in GetVcpus (Cole Robinson)
- storage: Break out function to add pool source to a SourceList. (Cole Robinson)
- storage: Break out pool source parsing to a separate function. (Cole Robinson)
- Fix some typos in comments (Dan Kenigsberg)
- Fix error message in qemudLoadDriverConfig() (Matthias Bolte)
- Add a new syntax-check rule for gethostname. (Chris Lalancette)
- Various syntax-check fixes. (Chris Lalancette)
- Tighten up nonreentrant syntax-check. (Chris Lalancette)
- Replace a gethostname by virGetHostname in libvirtd.c (Chris Lalancette)
- Replace two strcmp() by STREQ() in qemu_driver.c (Chris Lalancette)
- Replace gethostname by virGetHostname in xend_internal.c (Chris Lalancette)
- Add a default log_level to qemudSetLogging to remove a build warning. (Chris Lalancette)
- Better error message when libvirtd fails to start. (Chris Lalancette)
- Fix potential false-positive OOM error reporting. (Matthias Bolte)
- Fix virsh.c compilation warning (Jim Fehlig)
- Fix a make dist error due to wrong EXTRA_DIST paths (Daniel Veillard)
- node device: Break out get_wwns and get_parent_node helpers (Cole Robinson)
- tests: Centralize VIR_TEST_DEBUG lookup, and document it (Cole Robinson)
- Remove bogus const annotations to hash iterator (Daniel P. Berrange)
- Remove bashisms from schema tests. (Matthias Bolte)
+ remove sysfs_path and parent_sysfs_path from XML (Dave Allan),
+ Removing devicePath member from dev struct (Dave Allan),
+ report OOM in two places in node_device_driver.c (Dave Allan),
+ Whitespace cleanup for pre-tags on the website (Matthias Bolte),
+ Fix type in configure output summary (Daniel P. Berrange),
+ Remove a compilation warning on uninitialized var (Daniel Veillard),
+ Change DTD references to use public instead of system identifier (Matthias Bolte),
+ Remove obsolete devicekit checks (Daniel P. Berrange),
+ Small guestfwd code cleanup (Matthew Booth),
+ Small indentation cleanup of domain schema (Matthew Booth),
+ AppArmor code cleanups (Jamie Strandboge),
+ Fix formatting of XML for an inactive guest (Daniel P. Berrange),
+ Remove DevKit node device backend (David Allan),
+ Exclude numactl on s390[x] (Daniel P. Berrange),
+ Fix error handling in qemuMonitorOpen (Ryota Ozaki),
+ Fix warning on make due to missing cast (int) (Ryota Ozaki),
+ Various fixes following a code review part 2 (Daniel Veillard),
+ Various fixes following a code review (Daniel Veillard),
+ Move code for low level QEMU monitor interaction into separate file (Daniel P. Berrange),
+ Make pciDeviceList struct opaque (Daniel P. Berrange),
+ Add missing OOM error checks, reports and cleanups (Matthias Bolte),
+ Removes the ebtablesSaveRules() function (Gerhard Stenzel),
+ phyp: Use actual error code instead of 0 (Matthias Bolte),
+ phyp: Don't use VIR_ALLOC if a stack variable is good enough (Matthias Bolte),
+ phyp: Fix several UUID table related problems (Matthias Bolte),
+ phyp: Check for exit_status < 0 before parsing the result (Matthias Bolte),
+ phyp: memcpy/memmove/memset can't fail, so don't check for error (Matthias Bolte),
+ phyp: Make generic domain listing functions return -1 in case of error (Matthias Bolte),
+ Fix configure check for libssh2 (Matthias Bolte),
+ Repair getIPv4Addr after the ntohl conversion (Daniel Veillard),
+ Cleanup whitespace in docs (Matthew Booth),
+ Use virBuffer when building QEMU char dev command line (Matthew Booth),
+ Cleanup virBuffer usage in qemdBuildCommandLine (Matthew Booth),
+ Fix some cut-and-paste error in migration code (Paolo Bonzini),
+ Ensure guestfwd address is IPv4 and various cleanups (Matthew Booth),
+ LXC cleanup deep indentation in lxcDomainSetAutostart (Ryota Ozaki),
+ LXC messages cleanup and fix lxcError (Ryota Ozaki),
+ qemu: Remove compiled out localhost migration support (Cole Robinson),
+ Various error reporting fixes (Cole Robinson),
+ Improve error reporting for virConnectGetHostname calls (Cole Robinson),
+ Fix up NLS warnings. (Chris Lalancette),
+ Remove redundant virFileDeletePID() call (Chris Lalancette),
+ Fix return value in virStateInitialize impl for LXC (Daniel P. Berrange),
+ ESX: Unify naming of VI API utility and convenience functions. (Matthias Bolte),
+ Rename internal APis (Daniel P. Berrange),
+ Pull signal setup code out into separate method (Daniel P. Berrange),
+ Fix duplicating logging of errors in libvirtd (Daniel P. Berrange),
+ Fix initialization order bugs (Daniel P. Berrange),
+ Misc cleanup to network socket init (Daniel P. Berrange),
+ Annotate many methods with ATTRIBUTE_RETURN_CHECK & fix problems (Daniel P. Berrange),
+ Don't use private struct member names of in6_addr (Matthias Bolte),
+ Fix typo in network.c function comments (Matthew Booth),
+ libvirt-devel should only require libvirt-client (Mark McLoughlin),
+ qemu: Fix an error message in GetVcpus (Cole Robinson),
+ storage: Break out function to add pool source to a SourceList. (Cole Robinson),
+ storage: Break out pool source parsing to a separate function. (Cole Robinson),
+ Fix some typos in comments (Dan Kenigsberg),
+ Fix error message in qemudLoadDriverConfig() (Matthias Bolte),
+ Add a new syntax-check rule for gethostname. (Chris Lalancette),
+ Various syntax-check fixes. (Chris Lalancette),
+ Tighten up nonreentrant syntax-check. (Chris Lalancette),
+ Replace a gethostname by virGetHostname in libvirtd.c (Chris Lalancette),
+ Replace two strcmp() by STREQ() in qemu_driver.c (Chris Lalancette),
+ Replace gethostname by virGetHostname in xend_internal.c (Chris Lalancette),
+ Add a default log_level to qemudSetLogging to remove a build warning. (Chris Lalancette),
+ Better error message when libvirtd fails to start. (Chris Lalancette),
+ Fix potential false-positive OOM error reporting. (Matthias Bolte),
+ Fix virsh.c compilation warning (Jim Fehlig),
+ Fix a make dist error due to wrong EXTRA_DIST paths (Daniel Veillard),
+ node device: Break out get_wwns and get_parent_node helpers (Cole Robinson),
+ tests: Centralize VIR_TEST_DEBUG lookup, and document it (Cole Robinson),
+ Remove bogus const annotations to hash iterator (Daniel P. Berrange),
+ Remove bashisms from schema tests. (Matthias Bolte),
Don't copy old machines from a domain which has none (Mark McLoughlin)
</li>
</ul>
--
1.6.0.4
14 years, 9 months
[libvirt] [PATCH 0/3] fix migration of paused vms
by Paolo Bonzini
From: Paolo Bonzini <pbonzini(a)gnu.org>
This is yet another try on fixing migration of paused vms. Since the
driver-only solution didn't work out, I'm now fixing it directly in
libvirt.c.
The first two patches are the same as for the previous series. The
first is a bugfix for failed migration for the QEMU driver; the second
adds a "virsh migrate --suspend" option to leave the VM not running
on the destination machine.
As in the previous version of the patch, --suspend/VIR_MIGRATE_PAUSED
is the bulk of implementing the new feature. I just query the domain
state and, if it is paused, I implicitly add the VIR_MIGRATE_PAUSED
flag to the migration. This is the third patch.
I thought about transmitting the state in the end (since it works well
if VIR_MIGRATE_PAUSED is passed only to MigrateFinish and not to
MigratePerform), but I don't think it's a good idea to commit it
now as it's basically untestable. It's in the fourth patch, but if
you want it now and think the approach is sound, tell me and I'll
test it more heavily.
14 years, 9 months