Devel
Threads by month
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
November 2009
- 68 participants
- 193 discussions
I had this problem and another user confirmed the same behavior on his machine:
http://pastie.caboo.se/65417
Haven't tried it with *2925.10* yet. Also, is there a way to get more verbose
info about what calls are causing the "configuration file syntax error" errors?
Thanks.
virt-install
How large would you like the disk () to be (in gigabytes)? 4
ERROR: Must provide a file, not a directory for the disk
What would you like to use as the disk (path)? /xen/images/x6.img
Would you like to enable graphics support? (yes or no) no
What is the install location?
http://mirror.anl.gov/pub/fedora-linux-core/test/6.93/Fedora/i386/os/
Starting install...
libvir: Xen Daemon error : GET operation failed:
libvir: error : configuration file syntax error: expecting a name
libvir: error : configuration file syntax error: expecting a name
libvir: error : configuration file syntax error: expecting a name
Retrieving Fedora... 276 kB 00:01
Retrieving vmlinuz... 100% |=========================| 2.1 MB 00:16
Retrieving initrd.img... 100% |=========================| 5.4 MB 00:28
libvir: Xen Daemon error : GET operation failed:
libvir: error : configuration file syntax error: expecting a name
libvir: error : configuration file syntax error: expecting a name
libvir: error : configuration file syntax error: expecting a name
Creating domain... 0 B 00:06
Linux version 2.6.20-2925.5.fc7xen (brewbuilder(a)ls20-bc1-14.build.redhat.com)
(gcc version 4.1.2 20070317 (Red Hat 4.1.2-5)) #1 SMP Thu Mar 22 13:51:38 EDT 2007
BIOS-provided physical RAM map:
sanitize start
sanitize bail 0
copy_e820_map() start: 0000000000000000 size: 0000000020800000 end:
0000000020800000 type: 1
Xen: 0000000000000000 - 0000000020800000 (usable)
0MB HIGHMEM available.
520MB LOWMEM available.
Using x86 segment limits to approximate NX protection
Zone PFN ranges:
DMA 0 -> 133120
Normal 133120 -> 133120
HighMem 133120 -> 133120
early_node_map[1] active PFN ranges
0: 0 -> 133120
ACPI in unprivileged domain disabled
Built 1 zonelists. Total pages: 132080
Kernel command line:
method=http://mirror.anl.gov/pub/fedora-linux-core/test/6.93/Fedora/i386/os/
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
CPU 0 irqstacks, hard=c135f000 soft=c133f000
PID hash table entries: 4096 (order: 12, 16384 bytes)
Xen reported: 1694.994 MHz processor.
Console: colour dummy device 80x25
Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
... MAX_LOCKDEP_SUBCLASSES: 8
... MAX_LOCK_DEPTH: 30
... MAX_LOCKDEP_KEYS: 2048
... CLASSHASH_SIZE: 1024
... MAX_LOCKDEP_ENTRIES: 8192
... MAX_LOCKDEP_CHAINS: 16384
... CHAINHASH_SIZE: 8192
memory used by lock dependency info: 1064 kB
per task-struct memory footprint: 1200 bytes
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Software IO TLB disabled
vmalloc area: e1000000-f4ffe000, maxmem 2d7fe000
Memory: 503936k/532480k available (2030k kernel code, 19948k reserved, 1079k
data, 180k init, 0k highmem)
virtual kernel memory layout:
fixmap : 0xf5315000 - 0xf57fe000 (5028 kB)
pkmap : 0xf5000000 - 0xf5200000 (2048 kB)
vmalloc : 0xe1000000 - 0xf4ffe000 ( 319 MB)
lowmem : 0xc0000000 - 0xe0800000 ( 520 MB)
.init : 0xc130e000 - 0xc133b000 ( 180 kB)
.data : 0xc11fb9d9 - 0xc1309714 (1079 kB)
.text : 0xc1000000 - 0xc11fb9d9 (2030 kB)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 4262.67 BogoMIPS (lpj=8525343)
Security Framework v1.0.0 initialized
SELinux: Initializing.
SELinux: Starting in permissive mode
selinux_register_security: Registering secondary module capability
Capability LSM initialized as secondary
Mount-cache hash table entries: 512
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 256K
Checking 'hlt' instruction... OK.
SMP alternatives: switching to UP code
Freeing SMP alternatives: 11k freed
Brought up 1 CPUs
Grant table initialized
NET: Registered protocol family 16
Brought up 1 CPUs
PCI: Fatal: No config space access function found
PCI: setting up Xen PCI frontend stub
Setting up standard PCI resources
ACPI: Interpreter disabled.
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI: disabled
xen_mem: Initialising balloon driver.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
PCI: System does not support PCI
PCI: System does not support PCI
NetLabel: Initializing
NetLabel: domain hash size = 128
NetLabel: protocols = UNLABELED CIPSOv4
NetLabel: unlabeled traffic allowed by default
NET: Registered protocol family 2
IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
TCP established hash table entries: 131072 (order: 10, 4194304 bytes)
TCP bind hash table entries: 65536 (order: 9, 2097152 bytes)
TCP: Hash tables configured (established 131072 bind 65536)
TCP reno registered
checking if image is initramfs... it is
Freeing initrd memory: 7256k freed
IA-32 Microcode Update Driver: v1.14-xen <tigran(a)veritas.com>
audit: initializing netlink socket (disabled)
audit(1180379657.981:1): initialized
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
SELinux: Registering netfilter hooks
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
BUG: at kernel/fork.c:994 copy_process()
[<c1005d9a>] show_trace_log_lvl+0x1a/0x2f
[<c1006343>] show_trace+0x12/0x14
[<c10063be>] dump_stack+0x16/0x18
[<c101d044>] copy_process+0x195/0x1245
[<c101e144>] do_fork+0x50/0x117
[<c1003351>] kernel_thread+0x8e/0x96
[<c102c701>] __call_usermodehelper+0x2d/0x46
[<c102cd4f>] run_workqueue+0x89/0x145
[<c102d711>] worker_thread+0xd5/0x102
[<c102ff27>] kthread+0xb3/0xdc
[<c10058db>] kernel_thread_helper+0x7/0x10
=======================
rtc: IRQ 8 is not free.
Non-volatile memory driver v1.2
Linux agpgart interface v0.101 (c) Dave Jones
RAMDISK driver initialized: 16 RAM disks of 16384K size 4096 blocksize
input: Macintosh mouse button emulation as /class/input/input0
Xen virtual console successfully installed as xvc0
Event-channel device installed.
usbcore: registered new interface driver libusual
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
PNP: No PS/2 controller found. Probing ports directly.
i8042.c: No controller found.
mice: PS/2 mouse device common for all mice
TCP bic registered
Initializing XFRM netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
Using IPI No-Shortcut mode
XENBUS: Device with no driver: device/vbd/51712
XENBUS: Device with no driver: device/vif/0
Freeing unused kernel memory: 180k freed
Write protecting the kernel read-only data: 762k
^[Domain installation still in progress. You can reconnect
3
2
[libvirt] [PATCH] Fix python error reporting for some storage operations
by Cole Robinson 07 Mar '25
by Cole Robinson 07 Mar '25
07 Mar '25
In the python bindings, all vir* classes expect to be
passed a virConnect object when instantiated. Before
the storage stuff, these classes were only instantiated
in virConnect methods, so the generator is hardcoded to
pass 'self' as the connection instance to these classes.
Problem is there are some methods that return pool or vol
instances which aren't called from virConnect: you can
lookup a storage volume's associated pool, and can lookup
volumes from a pool. In these cases passing 'self' doesn't
give the vir* instance a connection, so when it comes time
to raise an exception crap hits the fan.
Rather than rework the generator to accomodate this edge
case, I just fixed the init functions for virStorage* to
pull the associated connection out of the passed value
if it's not a virConnect instance.
Thanks,
Cole
diff --git a/python/generator.py b/python/generator.py
index 01a17da..c706b19 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -962,8 +962,12 @@ def buildWrappers():
list = reference_keepers[classname]
for ref in list:
classes.write(" self.%s = None\n" % ref[1])
- if classname in [ "virDomain", "virNetwork", "virStoragePool", "virStorageVol" ]:
+ if classname in [ "virDomain", "virNetwork" ]:
classes.write(" self._conn = conn\n")
+ elif classname in [ "virStorageVol", "virStoragePool" ]:
+ classes.write(" self._conn = conn\n" + \
+ " if not isinstance(conn, virConnect):\n" + \
+ " self._conn = conn._conn\n")
classes.write(" if _obj != None:self._o = _obj;return\n")
classes.write(" self._o = None\n\n");
destruct=None
4
3
[libvirt] Re: [virt-tools-list] Questions about virt-manager running on Arch of Itanium 64
by Cole Robinson 11 Jan '10
by Cole Robinson 11 Jan '10
11 Jan '10
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
3
15
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
4
15
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
3
2
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
3
7
[libvirt] [PATCH] Suppress cgroup error message on sucess in qemudStartVMDaemon
by Ryota Ozaki 14 Dec '09
by Ryota Ozaki 14 Dec '09
14 Dec '09
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
2
4
Hi,
I'm facing another problem with latest git.
This happens regularly when shutting down VM(s):
http://pastebin.com/m4ef1d93f
It doesn't depend on which or how many VM is/are shut down, or if I have a VNC
connection to a VM that is shutting down. Sometimes after a segv, I get this:
http://pastebin.com/m5260bf21
It seems to me that libvirt tries to query a qemu monitor that is no longer
alive?
kr,tom
3
4
09 Dec '09
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
2
2
[libvirt] [PATCH] Make 'Miloslav Trmac' and 'Guido Guenther' display correctly
by Matthias Bolte 09 Dec '09
by Matthias Bolte 09 Dec '09
09 Dec '09
---
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
3
4