]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
15 years agoqemu migration: avoid NULL-deref given an invalid input
Jim Meyering [Mon, 14 Dec 2009 16:02:56 +0000 (17:02 +0100)]
qemu migration: avoid NULL-deref given an invalid input

* src/qemu/qemu_driver.c (doNonTunnelMigrate): Don't let a
NULL "uri_out" provoke a NULL-dereference in doNativeMigrate:
supply omitted goto-after-qemudReportError.

15 years agoqemu_driver.c: don't unlink(NULL) on OOM error path
Jim Meyering [Mon, 14 Dec 2009 15:41:11 +0000 (16:41 +0100)]
qemu_driver.c: don't unlink(NULL) on OOM error path

* src/qemu/qemu_driver.c (qemudDomainMigratePrepareTunnel): Upon an
out of memory error, we would end up with unixfile==NULL and attempt
to unlink(NULL).  Skip the unlink when it's NULL.

15 years agoremote_driver.c: also zero out ->saslDecodedOffset member
Jim Meyering [Mon, 14 Dec 2009 12:00:01 +0000 (13:00 +0100)]
remote_driver.c: also zero out ->saslDecodedOffset member

* src/remote/remote_driver.c (remoteIOReadMessage): ...rather than
zeroing out priv->saslDecodedLength twice.

15 years agoqemu_driver.c: avoid double free on error path
Jim Meyering [Mon, 14 Dec 2009 14:55:19 +0000 (15:55 +0100)]
qemu_driver.c: avoid double free on error path

* src/qemu/qemu_driver.c (qemudDomainMigrateFinish2): Set
"event" to NULL after qemuDomainEventQueue frees it, so a
subsequent free (after endjob label) upon qemuMonitorStartCPUs
failure does not cause a double free.

15 years agolibvirtd: avoid a NULL dereference on error path
Jim Meyering [Mon, 14 Dec 2009 15:45:11 +0000 (16:45 +0100)]
libvirtd: avoid a NULL dereference on error path

* daemon/libvirtd.c (qemudDispatchServer): Since "client" may be
NULL in the "cleanup:" block, free client->rx only when it's not.

15 years agoFix and improve domain xml video element description
Matthias Bolte [Sun, 13 Dec 2009 17:25:17 +0000 (18:25 +0100)]
Fix and improve domain xml video element description

The description mismatched the actual structure since the video element
was introduced. The nvram attribute is actually called vram. Specify the
unit of the vram attribute.

15 years agoFix install location for Python bindings
Matthias Bolte [Fri, 11 Dec 2009 23:11:31 +0000 (00:11 +0100)]
Fix install location for Python bindings

Commit 66137344feb488ea87b0d92f3c03844d9a7a7786 changed the Python detection
mechanism in configure to use AM_PATH_PYTHON. This results in a changed
install location for the Python bindings, at least on Fedora 12 64bit systems.

Before this commit libvirt.py and libvirtmod.so were installed to

  /usr/lib64/python2.6/site-packages

After this commit they are installed to

  /usr/lib/python2.6/site-packages

Mixed Python packages (containing *.py and *.so files) should be installed to
the pyexecdir directory detected by AM_PATH_PYTHON.

This restores the install location from before the AM_PATH_PYTHON commit.

* configure.in: remove unnecessary pythondir export
* python/Makefile.am: switch from pythondir to pyexecdir

15 years agoRelax the allowed values for machine type in schema
Daniel Veillard [Mon, 14 Dec 2009 15:59:06 +0000 (16:59 +0100)]
Relax the allowed values for machine type in schema

* docs/schemas/domain.rng: don't try to validate based on a list, open
  up the machine type to a regexp allowing a-z A-Z 0-9 _ - and .

15 years agovirsh: avoid double-free
Jim Meyering [Mon, 14 Dec 2009 13:34:29 +0000 (14:34 +0100)]
virsh: avoid double-free

* tools/virsh.c (vshCommandParse): Avoid double-free of "tkdata".
Set it to NULL immediately after free in the (cmd == NULL) case,
just as in the other case, in case the final free(tkdata) is
triggered by a syntax error.

15 years agonode_device_driver.c: don't write beyond EOB for 4K-byte symlink
Jim Meyering [Mon, 14 Dec 2009 11:05:38 +0000 (12:05 +0100)]
node_device_driver.c: don't write beyond EOB for 4K-byte symlink

* src/node_device/node_device_driver.c (update_driver_name): The
previous code would write one byte beyond the end of the 4KiB
stack buffer when presented with a symlink value of exactly that
length (very unlikely).  Remove the automatic buffer and use
virFileResolveLink in place of readlink.  Suggested by Daniel Veillard.

15 years agoFix owner and group in example volume XML
Matthew Booth [Mon, 14 Dec 2009 15:23:26 +0000 (16:23 +0100)]
Fix owner and group in example volume XML

The owner and group in the documentation examples were confusingly given as
'0744'. They should be numeric uid and gid. Changed the examples to use the
default uid and gid assigned to qemu in F12.

* docs/formatstorage.html.in: Change example owner and group in volume XML

15 years agoadd missing doc for device <shareable/> option
Daniel Veillard [Mon, 14 Dec 2009 15:20:55 +0000 (16:20 +0100)]
add missing doc for device <shareable/> option

15 years agoEliminate failure to delete empty storage pools
Laine Stump [Mon, 14 Dec 2009 15:15:28 +0000 (16:15 +0100)]
Eliminate failure to delete empty storage pools

* src/storage/storage_backend_fs.c: virStorageBackendFileSystemDelete
  was incorrectly calling unlink() in an attempt to remove a directory.
  It should be calling rmdir() instead.

15 years agoFix use of virEventAddHandleImpl()
Jiri Denemark [Mon, 14 Dec 2009 15:09:01 +0000 (16:09 +0100)]
Fix use of virEventAddHandleImpl()

src/node_device/node_device_udev.c was using a function available only
on the daemon code, fix this and use the function available globally

* src/node_device/node_device_udev.c: replace use of virEventAddHandleImpl
  by virEventAddHandle

15 years agoCleanup temporary #define after use
Matthew Booth [Mon, 14 Dec 2009 15:05:45 +0000 (16:05 +0100)]
Cleanup temporary #define after use

* src/qemu/qemu_driver.c: #undef LOOKUP_PTYS after use in
  qemudFindCharDevicePTYsMonitor()

15 years agoImplement --pool option for virsh vol-path
Dave Allan [Mon, 14 Dec 2009 14:17:35 +0000 (15:17 +0100)]
Implement --pool option for virsh vol-path

This patch fixes the problem reported in:

https://bugzilla.redhat.com/show_bug.cgi?id=509306

The bug reporter says that vol-delete does not support the --pool
option, but that's not the case in the current head.  This patch makes
vol-path behave the same way as vol-delete

* tools/virsh.c: Modified vol-path to use the same logic as vol-delete,
  allowing the syntax: virsh vol-path --pool testdirpool testvol0

15 years agonodedev: Add removable storage 'media_label' prop
Cole Robinson [Mon, 14 Dec 2009 13:58:23 +0000 (14:58 +0100)]
nodedev: Add removable storage 'media_label' prop

Provides the CDROM label for current media. Only implemented for the
udev backend.

15 years agoexpose SR IOV physical/virtual function relationships
Dave Allan [Mon, 14 Dec 2009 13:44:12 +0000 (14:44 +0100)]
expose SR IOV physical/virtual function relationships

exposes the relationships between physical
and virtual functions on SR IOV capable devices.

15 years agoFix possible NULL pointer dereference
Paolo Bonzini [Mon, 14 Dec 2009 13:09:10 +0000 (14:09 +0100)]
Fix possible NULL pointer dereference

If there are no references remaining to the object, vm is set to NULL
and vm->persistent cannot be accessed.  Fixed by this trivial patch.

* src/qemu/qemu_driver.c (qemudDomainCoreDump): Avoid possible
  NULL pointer dereference on --crash dump.

15 years agoadd AppArmor test and examples to dist
Jamie Strandboge [Mon, 14 Dec 2009 12:40:42 +0000 (13:40 +0100)]
add AppArmor test and examples to dist

tests/virt-aa-helper-test and examples/apparmor are not included in
official tarballs, but should be. Attached is a patch to fix that
which works when apparmor is and is not available.

15 years agoadd --live support to "virsh dump"
Paolo Bonzini [Mon, 14 Dec 2009 11:10:38 +0000 (12:10 +0100)]
add --live support to "virsh dump"

This is trivial for QEMU since you just have to not stop the vm before
starting the dump.  And for Xen, you just pass the flag down to xend.

* include/libvirt/libvirt.h.in (virDomainCoreDumpFlags): Add VIR_DUMP_LIVE.
* src/qemu/qemu_driver.c (qemudDomainCoreDump): Support live dumping.
* src/xen/xend_internal.c (xenDaemonDomainCoreDump): Support live dumping.
* tools/virsh.c (opts_dump): Add --live. (cmdDump): Map it to VIR_DUMP_LIVE.

15 years agoadd --crash support to "virsh dump"
Paolo Bonzini [Mon, 14 Dec 2009 10:59:27 +0000 (11:59 +0100)]
add --crash support to "virsh dump"

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 flag for
  CoreDump
* 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.

15 years agofix various breakages in qemu Dump command
Paolo Bonzini [Mon, 14 Dec 2009 10:27:41 +0000 (11:27 +0100)]
fix various breakages in qemu Dump command

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.

15 years agoFix a couple of problems in last patch
Daniel Veillard [Mon, 14 Dec 2009 10:05:55 +0000 (11:05 +0100)]
Fix a couple of problems in last patch

Those were pointed by DanB in his review but not yet fixed

* src/qemu/qemu_driver.c: qemudWaitForMonitor() use EnterMonitorWithDriver()
  and ExitMonitorWithDriver() there
* src/qemu/qemu_monitor_text.c: checking fro strdu failure and hash
  table add error in qemuMonitorTextGetPtyPaths()

15 years agoGet QEMU pty paths from the monitor
Matthew Booth [Mon, 14 Dec 2009 09:50:01 +0000 (10:50 +0100)]
Get QEMU pty paths from the monitor

This change makes the QEMU driver get pty paths from the output of the
monitor 'info chardev' command. This output is structured, and contains
both the name of the device and the path on the same line. This is
considerably more reliable than parsing the startup log output, which
requires the parsing code to know which order QEMU will print pty
information in.

Note that we still need to parse the log output as the monitor itself
may be on a pty. This should be rare, however, and the new code will
replace all pty paths parsed by the log output method once the monitor
is available.

* src/qemu/qemu_monitor.(c|h) src/qemu_monitor_text.(c|h): Implement
  qemuMonitorGetPtyPaths().
* src/qemu/qemu_driver.c: Get pty path information using
  qemuMonitorGetPtyPaths().

15 years agoExtract the assigned pty device for QEmu channels
Matthew Booth [Mon, 14 Dec 2009 09:42:14 +0000 (10:42 +0100)]
Extract the assigned pty device for QEmu channels

* src/qemu/qemu_driver.c: Parse pty devices for channels

15 years agoMake QEMU driver use -chardev everywhere if available
Matthew Booth [Mon, 14 Dec 2009 09:38:44 +0000 (10:38 +0100)]
Make QEMU driver use -chardev everywhere if available

Change -monitor, -serial and -parallel output to use -chardev if it is
available.
* src/qemu/qemu_conf.c: Update qemudBuildCommandLine to use -chardev where
  available.
* tests/qemuxml2argvtest.c tests/qemuxml2argvdata/: Add -chardev equivalents
  for all current serial and parallel tests.

15 years agoSuppress cgroup error message on sucess startup
Ryota Ozaki [Mon, 14 Dec 2009 09:30:49 +0000 (10:30 +0100)]
Suppress cgroup error message on sucess startup

Even if qemudStartVMDaemon suceeds, an error was 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.
* src/qemu/qemu_driver.c: a an option to the function to suppress the
  error being logged

15 years agoFix reference leak in remoteDispatchStorageVolCreateXmlFrom
Matthias Bolte [Thu, 10 Dec 2009 23:56:04 +0000 (00:56 +0100)]
Fix reference leak in remoteDispatchStorageVolCreateXmlFrom

15 years agoFix memory leak in virStorageBackendCopyToFD
Matthias Bolte [Thu, 10 Dec 2009 23:54:49 +0000 (00:54 +0100)]
Fix memory leak in virStorageBackendCopyToFD

15 years agoFix 'make syntax-check' after iptables.c cleanup
Daniel Veillard [Fri, 11 Dec 2009 09:09:26 +0000 (10:09 +0100)]
Fix 'make syntax-check' after iptables.c cleanup

15 years agoretrieve paused/running state at migration start
Paolo Bonzini [Fri, 11 Dec 2009 09:06:05 +0000 (10:06 +0100)]
retrieve paused/running state at migration start

This patch fixes the bug where paused/running state is not
transmitted during migration.  As a result, in the QEMU driver
for example the machine was always started on the destination
end.

In order to do so, just read the state and if it is appropriate and
set the VIR_MIGRATE_PAUSED flag.

* src/libvirt.c (virDomainMigrateVersion1, virDomainMigrateVersion2):
  Automatically add VIR_MIGRATE_PAUSED when appropriate.
* src/xen/xend_internal.c (xenDaemonDomainMigratePerform): Give a nicer
  error message when migration of paused domains is attempted.

15 years agoadd virsh --suspend arg to migrate command
Paolo Bonzini [Fri, 11 Dec 2009 09:00:44 +0000 (10:00 +0100)]
add virsh --suspend arg to migrate command

This adds a new flag, VIR_MIGRATE_PAUSED, that mandates pausing
the migrated VM before starting it.

* include/libvirt/libvirt.h.in (virDomainMigrateFlags): Add VIR_MIGRATE_PAUSED.
* src/qemu/qemu_driver.c (qemudDomainMigrateFinish2): Handle VIR_MIGRATE_PAUSED.
* tools/virsh.c (opts_migrate): Add --suspend. (cmdMigrate): Handle it.
* tools/virsh.pod (migrate): Document it.

15 years agofix migration of paused vms upon failure
Paolo Bonzini [Fri, 11 Dec 2009 08:42:19 +0000 (09:42 +0100)]
fix migration of paused vms upon failure

This makes a small change on the failed-migration path.  Up to now,
all VMs that failed non-live migration after the "stop" command
were restarted.  This must not be done when the VM was paused in
the first place.

* src/qemu/qemu_driver.c (qemudDomainMigratePerform): Do not restart
  a paused VM that fails migration.  Set paused state after "stop",
  reset it after failure.

15 years agoSmall change of RNG syntax for domain
Diego Elio Pettenò [Fri, 11 Dec 2009 07:46:11 +0000 (08:46 +0100)]
Small change of RNG syntax for domain

* docs/schemas/domain.rng: As trang seems to bug with <optional><oneOrMore>
  replace it with <zeroOrMore>

15 years agoqemu driver: Fix segfault in libvirt/libvirtd when uri->path is NULL.
Richard Jones [Thu, 10 Dec 2009 16:39:07 +0000 (16:39 +0000)]
qemu driver: Fix segfault in libvirt/libvirtd when uri->path is NULL.

See also:
https://bugzilla.redhat.com/show_bug.cgi?id=545400#c1

15 years agoFix a wellformedness problem in secret.rng
Diego Elio Pettenò [Thu, 10 Dec 2009 16:03:47 +0000 (17:03 +0100)]
Fix a wellformedness problem in secret.rng

* docs/schemas/secret.rng: ref tag for usagevolume wasn't closed

15 years agoremove iptablesReloadRules() and related code
Mark McLoughlin [Thu, 10 Dec 2009 11:27:18 +0000 (11:27 +0000)]
remove iptablesReloadRules() and related code

We don't use this method of reloading rules anymore, so we can just
kill the code.

This simplifies things a lot because we no longer need to keep a
table of the rules we've added.

* src/util/iptables.c: kill iptablesReloadRules()

15 years agoremove all traces of lokkit support
Mark McLoughlin [Thu, 10 Dec 2009 11:27:17 +0000 (11:27 +0000)]
remove all traces of lokkit support

Long ago we tried to use Fedora's lokkit utility in order to register
our iptables rules so that 'service iptables restart' would
automatically load our rules.

There was one fatal flaw - if the user had configured iptables without
lokkit, then we would clobber that configuration by running lokkit.

We quickly disabled lokkit support, but never removed it. Let's do
that now.

The 'my virtual network stops working when I restart iptables' still
remains. For all the background on this saga, see:

  https://bugzilla.redhat.com/227011

* src/util/iptables.c: remove lokkit support

* configure.in: remove --enable-lokkit

* libvirt.spec.in: remove the dirs used only for saving rules for lokkit

* src/Makefile.am: ditto

* src/libvirt_private.syms, src/network/bridge_driver.c,
  src/util/iptables.h: remove references to iptablesSaveRules

15 years agoreload iptables rules on libvirtd restart
Mark McLoughlin [Thu, 10 Dec 2009 11:27:17 +0000 (11:27 +0000)]
reload iptables rules on libvirtd restart

This is the expected behaviour, I think - reloading libvirtd should
be a subset of restarting it.

Note, we reload the rules after we've determined which networks
are active (because we only add the rules for active networks)
and before we start autostart networks (to avoid re-adding the
rules).

* src/network/bridge_driver.c: reload iptables rules on startup

15 years agoreload iptables rules simply by re-adding them
Mark McLoughlin [Thu, 10 Dec 2009 11:27:17 +0000 (11:27 +0000)]
reload iptables rules simply by re-adding them

Currently, when we add iptables rules, we keep them on a list so that
we can easily reload them on e.g. 'service libvirtd reload'.

However, we don't save this list to disk, so if libvirtd is restarted
we lose the ability to reload the rules.

The fix is simple - just re-add the damn things on reload.

Note, we delete the rules before re-adding them, just like the current
behaviour of iptRulesReload().

* src/network/bridge_driver.c: re-add the iptables rules on reload.

15 years agoAdd virBufferFreeAndReset() and replace free()
Matthias Bolte [Wed, 9 Dec 2009 23:00:50 +0000 (00:00 +0100)]
Add virBufferFreeAndReset() and replace free()

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.

15 years agoPlumb domain description tag in xend backend
Jim Fehlig [Wed, 9 Dec 2009 14:25:31 +0000 (15:25 +0100)]
Plumb domain description tag in xend backend

xen-unstable changesets 20321 and 20521 added support for
description in xend domain config.  This patch extends that
support in xend backend.
* src/xen/xend_internal.c: add parse and output of domain description

15 years agoUpdate location of C# bindings.
Richard Jones [Wed, 9 Dec 2009 09:39:37 +0000 (09:39 +0000)]
Update location of C# bindings.

15 years agoMake QEMU text monitor parsing more robust
Daniel P. Berrange [Tue, 8 Dec 2009 18:05:02 +0000 (18:05 +0000)]
Make QEMU text monitor parsing more robust

The QEMU 0.10.0 release (and possibly other 0.10.x) has a bug where
it sometimes/often forgets to display the initial monitor greeting
line, soley printing a (qemu).  This in turn confuses the text
console parsing because it has a '(qemu)' it is not expecting. The
confusion results in a negative malloc. Bad things follow.

This re-writes the text console handling to be more robust. The key
idea is that it should only look for a (qemu), once it has seen the
original command echo'd back. This ensures it'll skip the bogus stray
(qemu) with broken QEMUs.

* src/qemu/qemu_monitor.c: Add some (disabled) debug code
* src/qemu/qemu_monitor_text.c: Re-write way command replies
  are detected

15 years agoFix virDomainObj ref handling in QEMU driver
Daniel P. Berrange [Tue, 8 Dec 2009 14:42:43 +0000 (14:42 +0000)]
Fix virDomainObj ref handling in QEMU driver

Since the monitor I/O is processed out of band from the main
thread(s) invoking monitor  commands, the virDomainObj may be
deleted by the I/O thread. The qemuDomainObjBeginJob takes an
extra reference to protect against final deletion, but this
reference is released by the corresponding EndJob call. THus
after the EndJob call it may not be valid to reference the
virDomainObj any more. To allow callers to detect this, the
EndJob call is changed to return the remaining reference count.

* src/conf/domain_conf.c: Make virDomainObjUnref return the
  remaining reference count
* src/qemu/qemu_driver.c: Avoid referencing virDomainObjPtr
  after qemuDomainObjEndJob if it has been deleted.

15 years agoFix the news file non-ascii characters
Daniel Veillard [Wed, 9 Dec 2009 10:16:48 +0000 (11:16 +0100)]
Fix the news file non-ascii characters

by adding an explicit HTML encoding meta description

15 years agoUse AM_PATH_PYTHON and python-config to detect Python configuration
Matthias Bolte [Sun, 6 Dec 2009 15:05:33 +0000 (16:05 +0100)]
Use AM_PATH_PYTHON and python-config to detect Python configuration

Using AM_PATH_PYTHON solves the site-packages directory problem. At least
in Ubuntu with Python 2.6 and later site-packages is renamed to dist-packages
and site-packages is not part of sys.path anymore. So installing the libvirt
Python bindings to site-packages renders them unusable, because they can be
imported from there without manually including site-packages into sys.path.

AM_PATH_PYTHON detects the correct site-packages/dist-packages directory.

python-config --includes gives the correct include path for the Python header
files. The old probing code stays there as fallback mechanism.

* configure.in: use AM_PATH_PYTHON and python-config
* python/Makefile.am: remove -I because PYTHON_INCLUDES contains it now

15 years agoAdd missing commas to the 0.7.4 news section
Matthias Bolte [Sun, 22 Nov 2009 19:40:04 +0000 (20:40 +0100)]
Add missing commas to the 0.7.4 news section

15 years agoChange generated HTML to UTF-8 encoding
Daniel Veillard [Tue, 8 Dec 2009 15:09:33 +0000 (16:09 +0100)]
Change generated HTML to UTF-8 encoding

* docs/ChangeLog.xsl docs/newapi.xsl docs/site.xsl: change all
  stylesheets to output UTF-8 HTML instead of ISO Latin 1 which was
  breaking on some people names.

15 years agoAvoid an type-punned pointer aliasing pbm
Daniel Veillard [Tue, 8 Dec 2009 10:14:55 +0000 (11:14 +0100)]
Avoid an type-punned pointer aliasing pbm

Fix this warning, there is no need to use an intermediate,
different array pointer.
network.c: In function 'getIPv6Addr':
network.c:50: warning: dereferencing type-punned pointer will break strict-aliasing rules
* src/util/network.c: avoid an intermediary pointer cast

15 years agoHook up JSON monitor to emit basic lifecycle events
Daniel P. Berrange [Thu, 26 Nov 2009 13:06:24 +0000 (13:06 +0000)]
Hook up JSON monitor to emit basic lifecycle events

* src/qemu/qemu_monitor_json.c: Hook up reset, shutdown,
  poweroff and stop events

15 years agoAdd QEMU monitor callbacks for basic lifecycle events
Daniel P. Berrange [Thu, 26 Nov 2009 13:05:24 +0000 (13:05 +0000)]
Add QEMU monitor callbacks for basic lifecycle events

* src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Add callbacks
  for reset, shutdown, poweroff and stop events. Add convenience
  methods for emiting those events

15 years agoSwitch over to passing a callback table to QEMU monitor
Daniel P. Berrange [Thu, 15 Oct 2009 17:56:52 +0000 (18:56 +0100)]
Switch over to passing a callback table to QEMU monitor

With addition of events there will be alot of callbacks.
To avoid having to add many APIs to register callbacks,
provide them all at once in a big table

* src/qemu/qemu_driver.c: Pass in a callback table to QEMU
  monitor code
* src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h Replace
  the EOF and disk secret callbacks with a callback table

15 years agoSupport for JSON mode monitor
Daniel P. Berrange [Tue, 3 Nov 2009 18:59:18 +0000 (13:59 -0500)]
Support for JSON mode monitor

Initial support for the new QEMU monitor protocol  using JSON
as the data encoding format instead of plain text

* po/POTFILES.in: Add src/qemu/qemu_monitor_json.c
* src/qemu/qemu_conf.c, src/qemu/qemu_conf.h: Hack to turn on QMP
  mode. Replace with a version number check on >= 0.12 later
* src/qemu/qemu_monitor.c: Delegate to json monitor if enabled
* src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h: Add
  impl of QMP protocol
* src/Makefile.am: Add src/qemu/qemu_monitor_json.{c,h}

15 years agoIntroduce callbacks for serializing domain object private data to XML
Daniel P. Berrange [Thu, 26 Nov 2009 17:57:00 +0000 (17:57 +0000)]
Introduce callbacks for serializing domain object private data to XML

Now that drivers are using a private domain object state blob,
the virDomainObjFormat/Parse methods are no longer able to
directly serialize all neccessary state to/from XML. It is
thus neccessary to introduce a pair of callbacks fo serializing
private state.

The code for serializing vCPU PIDs and the monitor device
config can now move out of domain_conf.c and into the
qemu_driver.c where they belong.

* src/conf/capabilities.h: Add callbacks for serializing private
  state to/from XML
* src/conf/domain_conf.c, src/conf/domain_conf.h: Remove the
  monitor, monitor_chr, monitorWatch, nvcpupids and vcpupids
  fields from virDomainObjPtr. Remove code that serialized
  those fields
* src/libvirt_private.syms: Export virXPathBoolean
* src/qemu/qemu_driver.c: Add callbacks for serializing monitor
  and vcpupid data to/from XML
* src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c: Pass monitor
  char device config into qemuMonitorOpen directly.

15 years agoSwitch LXC driver to use a private data blob for virDomainObj state
Daniel P. Berrange [Thu, 26 Nov 2009 17:56:01 +0000 (17:56 +0000)]
Switch LXC driver to use a private data blob for virDomainObj state

* src/lxc/lxc_driver.c: Introduce lxcDomainObjPrivate for storing
  monitor device state

15 years agoSwitch UML driver to use a private data blob for virDomainObj state
Daniel P. Berrange [Thu, 26 Nov 2009 17:55:12 +0000 (17:55 +0000)]
Switch UML driver to use a private data blob for virDomainObj state

* src/uml/uml_driver.c: Introduce umlDomainObjPrivateData for storing
  monitor device state. Remove unneccessary VIR_FREE on vcpupids

15 years agoPull code to start CPUs executing out of qemudInitCpuAffinity()
Daniel P. Berrange [Thu, 26 Nov 2009 13:51:42 +0000 (13:51 +0000)]
Pull code to start CPUs executing out of qemudInitCpuAffinity()

The code to start CPUs executing has nothing todo with CPU
affinity masks, so pull it out of the qemudInitCpuAffinity()
method and up into qemudStartVMDaemon()

* src/qemu/qemu_driver.c: Pull code to start CPUs executing out
  of qemudInitCpuAffinity()

15 years agoAdd a 'format' arg to qemuMonitorChangeMedia() since JSON will support it
Daniel P. Berrange [Thu, 26 Nov 2009 13:48:17 +0000 (13:48 +0000)]
Add a 'format' arg to qemuMonitorChangeMedia() since JSON will support it

The current QEMU disk media change does not support setting the
disk format. The new JSON monitor will support this, so add an
extra parameter to pass this info in

* src/qemu/qemu_driver.c: Pass in disk format when changing media
* src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c,
  src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h:
  Add a 'format' arg to qemuMonitorChangeMedia()

15 years agoFix migration cancellation for QEMU
Daniel P. Berrange [Thu, 26 Nov 2009 13:39:30 +0000 (13:39 +0000)]
Fix migration cancellation for QEMU

* src/qemu/qemu_monitor_text.c: Add missing underscore in the
  migrate_cancel monitor command impl

15 years agoMove qemuMonitorEscape + migrate status enum into shared monitor code
Daniel P. Berrange [Thu, 26 Nov 2009 13:37:11 +0000 (13:37 +0000)]
Move qemuMonitorEscape + migrate status enum into shared monitor code

The qemuMonitorEscape() method, and the VIR_ENUM for migration
status will be needed by the JSON monitor too, so move that code
into the shared qemu_monitor.c file instead of qemu_monitor_text.c

* src/qemu/qemu_monitor.h: Declare qemuMonitorMigrationStatus enum
  and qemuMonitorEscapeArg and qemuMonitorEscapeShell methods
* src/qemu/qemu_monitor.c: Implement qemuMonitorMigrationStatus enum
  and qemuMonitorEscapeArg and qemuMonitorEscapeShell methods
* src/qemu/qemu_monitor_text.c: Remove above methods/enum

15 years agoFix crash when deleting monitor while a command is in progress
Daniel P. Berrange [Thu, 26 Nov 2009 13:29:29 +0000 (13:29 +0000)]
Fix crash when deleting monitor while a command is in progress

If QEMU shuts down while we're in the middle of processing a
monitor command, the monitor will be freed, and upon cleaning
up we attempt to do  qemuMonitorUnlock(priv->mon) when priv->mon
is NULL.

To address this we introduce proper reference counting into
the qemuMonitorPtr object, and hold an extra reference whenever
executing a command.

* src/qemu/qemu_driver.c: Hold a reference on the monitor while
  executing commands, and only NULL-ify the priv->mon field when
  the last reference is released
* src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c: Add reference
  counting to handle safe deletion of monitor objects

15 years agoudev_device_get_devpath might return NULL
Guido Günther [Mon, 7 Dec 2009 18:00:11 +0000 (19:00 +0100)]
udev_device_get_devpath might return NULL

Fix crash on strdup in that case.

15 years agoFix a compilation failure if yajl not avail
Daniel Veillard [Tue, 8 Dec 2009 10:08:17 +0000 (11:08 +0100)]
Fix a compilation failure if yajl not avail

configure:     yajl: no
CC     libvirt_util_la-json.lo
util/json.c:32:27: error: yajl/yajl_gen.h: No such file or directory
util/json.c:33:29: error: yajl/yajl_parse.h: No such file or directory

* src/util/json.c: remove the includes if yajl not configured in

15 years agoFix compilation for configure --disable-nls
Matthias Bolte [Sat, 5 Dec 2009 00:10:01 +0000 (01:10 +0100)]
Fix compilation for configure --disable-nls

15 years agovbox: Update IIDs from version 3.1-beta2 to 3.1-final
Matthias Bolte [Mon, 7 Dec 2009 21:46:50 +0000 (22:46 +0100)]
vbox: Update IIDs from version 3.1-beta2 to 3.1-final

This solves the 'nsIEventQueue object is null' error when trying
to connect to a VirtualBox 3.1 hypervisor instance.

15 years agoFix ReprotError vs ReportError typo in JSON code
Daniel P. Berrange [Mon, 7 Dec 2009 17:01:33 +0000 (17:01 +0000)]
Fix ReprotError vs ReportError typo in JSON code

* src/util/json.c: Fix ReprotError typo when YAJL is not available

15 years agoFix inverted conditional test in configure.ac check for yajl
Daniel P. Berrange [Mon, 7 Dec 2009 16:51:14 +0000 (16:51 +0000)]
Fix inverted conditional test in configure.ac check for yajl

* configure.in: Fix inverted conditional test when yajl is not
  found

15 years agoIntroduce a simple API for handling JSON data
Daniel P. Berrange [Tue, 3 Nov 2009 18:59:18 +0000 (13:59 -0500)]
Introduce a simple API for handling JSON data

This introduces simple API for handling JSON data. There is
an internal data structure 'virJSONValuePtr' which stores a
arbitrary nested JSON value (number, string, array, object,
nul, etc).  There are APIs for constructing/querying objects
and APIs for parsing/formatting string formatted JSON data.

This uses the YAJL library for parsing/formatting from

 http://lloyd.github.com/yajl/

* src/util/json.h, src/util/json.c: Data structures and APIs
  for representing JSON data, and parsing/formatting it
* configure.in: Add check for yajl library
* libvirt.spec.in: Add build requires for yajl
* src/Makefile.am: Add json.c/h
* src/libvirt_private.syms: Export JSON symbols to drivers

15 years agoAdd --system flag to autogen.sh to make it easy to build with right prefix
Daniel P. Berrange [Thu, 26 Nov 2009 14:38:50 +0000 (14:38 +0000)]
Add --system flag to autogen.sh to make it easy to build with right prefix

Add a --system flag to autogen.sh which gets turned into the args
--prefix=/usr --sysconfdir=/etc --localstatedir=/var to make it
easy to build with settings that match an RPM build

* autogen.sh: Add --system flag

15 years agoExport all symbols from xml.h for internal use
Jiri Denemark [Fri, 4 Dec 2009 18:24:25 +0000 (19:24 +0100)]
Export all symbols from xml.h for internal use

Some of the very useful calls for XML parsing provided by util/xml.[ch]
were not exported as private symbols. This patch fixes this.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
15 years agovbox: Use virIndexToDiskName() in vboxGenerateMediumName()
Matthias Bolte [Fri, 4 Dec 2009 14:18:45 +0000 (15:18 +0100)]
vbox: Use virIndexToDiskName() in vboxGenerateMediumName()

15 years agoTests for interface type/model configuration
Jiri Denemark [Fri, 4 Dec 2009 16:01:34 +0000 (17:01 +0100)]
Tests for interface type/model configuration

add a set of tests for Xen interface type and model configurations

15 years agoSupport for interface model='netfront'
Jiri Denemark [Fri, 4 Dec 2009 15:55:59 +0000 (16:55 +0100)]
Support for interface model='netfront'

Xen HVM guests with PV drivers end up with two network interfaces for
each configured interface. One of them being emulated by qemu and the
other one paravirtual. As this might not be desirable, the attached
patch provides a way for users to specify that only paravirtual network
interface should be presented to the guest.

The configuration was inspired by qemu/kvm driver, for which users can
specify model='virtio' to use paravirtual network interface.

The patch adds support for model='netfront' which results in
type=netfront instead of type=ioemu (or nothing for newer xen versions)
in guests native configuration. Xen's qemu ignores interfaces with
type != ioemu and only paravirtual network device will be seen in the
guest.

Four possible configuration scenarios follow:

- no model specified in domain's XML
    - libvirt will behave like before this change; it will set
      type=ioemu for HVM guests on xen host which is not newer than
      XEND_CONFIG_MAX_VERS_NET_TYPE_IOEMU
    - covered by existing tests

- PV guest, any model
    - no functional change, model is passed as is (and ignored by the
      hypervisor)
    - covered by existing tests (e.g., *-net-e1000.*)
- HVM guest, model=netfront
    - type is set to "netfront", model is not specified
    - covered by new *-net-netfront.* tests

- HVM guest, model != netfront
    - type is set to "ioemu", model is passed as is
    - covered by new *-net-ioemu.* tests

The fourth scenario feels like a regression for xen newer than
XEND_CONFIG_MAX_VERS_NET_TYPE_IOEMU as users who had a model specified
in their guest's configuration won't see a paravirtual interface in
their guests any more. On the other hand, the reason for specifying a
model is most likely the fact that they want to use such model which
implies emulated interface. Users of older xen won't be affected at all
as their xen provides paravirtual interface regardless of the type used.

- src/xen/xend_internal.c: add netfront support for the xend backend
- src/xen/xm_internal.c: add netfront support for the XM serialization too

15 years agovbox: Add support for version 3.1
Pritesh Kothari [Fri, 4 Dec 2009 13:49:45 +0000 (14:49 +0100)]
vbox: Add support for version 3.1

Also fixed serial port configuration which was broken due to recent
change in virDomainChrDef where targetType was newly added.

* src/Makefile.am: add new files
* src/vbox/vbox_driver.c: add case for version 3.1
* src/vbox/vbox_tmpl.c: refactor common patterns into macros, support for
  version 3.1, serial port configuration fix
* src/vbox/vbox_CAPI_v3_1.h, src/vbox/vbox_V3_1.c: generated code

15 years agoAdd virIndexToDiskName and fix mapping gap
Matthias Bolte [Thu, 3 Dec 2009 16:17:40 +0000 (17:17 +0100)]
Add virIndexToDiskName and fix mapping gap

esxVMX_IndexToDiskName handles indices up to 701. This limit comes
from a mapping gap in virDiskNameToIndex:

  sdzy -> 700
  sdzz -> 701
  sdaaa -> 728
  sdaab -> 729

This line in virDiskNameToIndex causes this gap:

  idx = (idx + i) * 26;

Fixing it by altering this line to:

  idx = (idx + (i < 1 ? 0 : 1)) * 26;

Also add a new version of virIndexToDiskName that handles the inverse
mapping for arbitrary indices.

* src/esx/esx_vmx.[ch]: remove esxVMX_IndexToDiskName
* src/util/util.[ch]: add virIndexToDiskName and fix mapping gap
* tests/esxutilstest.c: update test to verify that the gap is fixed

15 years agoFix some locking issues
Matthias Bolte [Wed, 2 Dec 2009 23:03:06 +0000 (00:03 +0100)]
Fix some locking issues

* src/conf/domain_conf.c: don't call virDomainObjUnlock twice
* src/qemu/qemu_driver.c: relock driver lock if an error occurs in
  qemuDomainObjBeginJobWithDriver, enter/exit monitor with driver
  in qemudDomainSave

15 years agoFix missing background color
Daniel Veillard [Thu, 3 Dec 2009 14:27:24 +0000 (15:27 +0100)]
Fix missing background color

15 years agoFix event test timer checks on kernels with HZ=100
Daniel P. Berrange [Wed, 2 Dec 2009 11:53:42 +0000 (11:53 +0000)]
Fix event test timer checks on kernels with HZ=100

On kernels with HZ=100, the resolution of sleeps in poll() is
quite bad. Doing a precise check on the expiry time vs the
current time will thus often thing the timer has not expired
even though we're within 10ms of the expected expiry time. This
then causes another pointless sleep in poll() for <10ms. Timers
do not need to have such precise expiration, so we treat a timer
as expired if it is within 20ms of the expected expiry time. This
also fixes the eventtest.c test suite on kernels with HZ=100

* daemon/event.c: Add 20ms fuzz when checking for timer expiry

15 years agoFix typo in QEMU driver webpage
Daniel P. Berrange [Mon, 30 Nov 2009 15:21:21 +0000 (15:21 +0000)]
Fix typo in QEMU driver webpage

* docs/drvqemu.html.in: Fix typo describing URI driver protocol

15 years agoAdd another SENTINEL attribute
Paolo Bonzini [Mon, 30 Nov 2009 09:49:05 +0000 (10:49 +0100)]
Add another SENTINEL attribute

* src/xen/xend_internal.c (xend_op): Add ATTRIBUTE_SENTINEL.

15 years agoClarify documentation for private symbols
Wolfgang Mauerer [Tue, 10 Nov 2009 14:53:20 +0000 (15:53 +0100)]
Clarify documentation for private symbols

The instruction "See Makefile.am" in libvirt.private_syms
always makes me think that this file is autogenerated
and should not be touched manually. This patch spares
every reader of libvirt.private_syms the hassle of
reading Makefile.am before augmenting libvirt.private_syms.

Signed-off-by: Wolfgang Mauerer <wolfgang.mauerer@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
15 years agoFix help message
Wolfgang Mauerer [Tue, 10 Nov 2009 14:53:20 +0000 (15:53 +0100)]
Fix help message

The configuration file setting is overriden by -f or --config, but
not with -c

Signed-off-by: Wolfgang Mauerer <wolfgang.mauerer@siemens.com>
15 years agoFix threading problems in python bindings
Daniel P. Berrange [Wed, 25 Nov 2009 12:04:47 +0000 (12:04 +0000)]
Fix threading problems in python bindings

* libvirt-override.c: Add many missing calls to allow threading
  when entering C code, otherwise python blocks & then deadlocks
  when we have an async event to dispatch back into python code.
  Fix return value check for virDomainPinVcpu binding.

15 years agoSupress annoying libcap-ng errors from valgrind
Daniel P. Berrange [Tue, 24 Nov 2009 11:45:30 +0000 (11:45 +0000)]
Supress annoying libcap-ng errors from valgrind

* tests/.valgrind.supp: Ignore capng problems

15 years agoFix two leaks in test driver
Daniel P. Berrange [Tue, 24 Nov 2009 11:44:49 +0000 (11:44 +0000)]
Fix two leaks in test driver

* src/test/test_driver.c: Fix leak of vcpu info, and nodedevice
  info

15 years agoFree cgroup device ACL list on driver shutdown
Daniel P. Berrange [Tue, 24 Nov 2009 11:44:23 +0000 (11:44 +0000)]
Free cgroup device ACL list on driver shutdown

* src/qemu/qemu_driver.c: Free cgroup ACLs

15 years agoxen: Fix unconditional freeing in xenDaemonListDefinedDomains()
Matthias Bolte [Wed, 25 Nov 2009 23:09:40 +0000 (00:09 +0100)]
xen: Fix unconditional freeing in xenDaemonListDefinedDomains()

Commit 790f0b3057787bb64da8c46c111ff8d3eff7b2af causes the contents of
the names array to be freed even on success, resulting in no listing of
defined but inactive Xen domains.

Spotted by Jim Fehlig

15 years agoFix default disk type when parsing QEMU argv
Daniel P. Berrange [Tue, 24 Nov 2009 10:58:08 +0000 (10:58 +0000)]
Fix default disk type when parsing QEMU argv

* src/qemu/qemu_conf.c: Fix default disk type to be 'FILE'
  again, after previous commit accidentally changed it

15 years agoremove port filter when network device is detached
Gerhard Stenzel [Tue, 24 Nov 2009 10:25:16 +0000 (11:25 +0100)]
remove port filter when network device is detached

* src/qemu/qemu_driver.c: remove the port filter if the network device
  is detached via virDomainDetachDevice.

15 years agoSupport QEMU's virtual FAT block device driver
Daniel P. Berrange [Mon, 16 Nov 2009 18:08:29 +0000 (18:08 +0000)]
Support QEMU's virtual FAT block device driver

Introduce a new type="dir"  mode for <disks> that allows use of
QEMU's  virtual FAT block device driver. eg

    <disk type='dir' device='floppy'>
      <source dir='/tmp/test'/>
      <target dev='fda' bus='fdc'/>
      <readonly/>
    </disk>

gets turned into

  -drive file=fat:floppy:/tmp/test,if=floppy,index=0

Only read-only disks are supported with virtual FAT mode

* src/conf/domain_conf.c, src/conf/domain_conf.h: Add type="dir"
* docs/schemas/domain.rng: Document new disk type
* src/xen/xend_internal.c, src/xen/xm_internal.c: Raise error for
  unsupported disk types
* tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom-empty.args: Fix
  empty disk file handling
* tests/qemuxml2argvdata/qemuxml2argv-disk-drive-fat.args,
  tests/qemuxml2argvdata/qemuxml2argv-disk-drive-fat.xml,
  tests/qemuxml2argvdata/qemuxml2argv-floppy-drive-fat.args,
  tests/qemuxml2argvdata/qemuxml2argv-floppy-drive-fat.xml
  tests/qemuxml2argvtest.c: Test QEMU vitual FAT driver
* src/qemu/qemu_conf.c: Support generating fat:/some/dir type
  disk args
* src/security/security_selinux.c: Temporarily skip labelling
  of directory based disks

15 years agoAlternate CPU affinity impl to cope with NR_CPUS > 1024
Daniel P. Berrange [Mon, 16 Nov 2009 16:08:29 +0000 (16:08 +0000)]
Alternate CPU affinity impl to cope with NR_CPUS > 1024

The cpu_set_t type can only cope with NR_CPUS <= 1024, beyond this
it is neccessary to use alternate CPU_SET maps with a dynamically
allocated CPU map

* src/util/processinfo.c: Support new unlimited size CPU set type

15 years agoPull schedular affinity code out into a separate module
Daniel P. Berrange [Mon, 16 Nov 2009 15:22:34 +0000 (15:22 +0000)]
Pull schedular affinity code out into a separate module

* src/Makefile.am: Add processinfo.h/processinfo.c
* src/util/processinfo.c, src/util/processinfo.h: Module providing
  APIs for getting/setting process CPU affinity
* src/qemu/qemu_driver.c: Switch over to new APIs for schedular
  affinity
* src/libvirt_private.syms: Export virProcessInfoSetAffinity
  and virProcessInfoGetAffinity to internal drivers

15 years agoIgnore docs/ directory for strcmp() syntax check
Daniel P. Berrange [Mon, 23 Nov 2009 11:57:45 +0000 (11:57 +0000)]
Ignore docs/ directory for strcmp() syntax check

* .x-sc_prohibit_strcmp_and_strncmp: Ignore docs/

15 years agoFix news.html validation
Dan Kenigsberg [Sun, 22 Nov 2009 19:08:54 +0000 (20:08 +0100)]
Fix news.html validation

15 years agoRelease of libvirt-0.7.4
Daniel Veillard [Fri, 20 Nov 2009 18:43:59 +0000 (19:43 +0100)]
Release of libvirt-0.7.4

0.7.3 was broken

* configure.in docs/news.html.in: release of 0.7.4
* configure.in libvirt.spec.in: require netcf >= 0.1.4
* src/Makefile.am: node_device/node_device_udev.h was missing from
  NODE_DEVICE_DRIVER_UDEV_SOURCES breaking compilation on platforms with
  udev

15 years agoRelease of libvirt-0.7.3
Daniel Veillard [Fri, 20 Nov 2009 16:31:13 +0000 (17:31 +0100)]
Release of libvirt-0.7.3

* configure.in docs/news.html.in libvirt.spec.in: describe new release
* po/*.po*: regenerate

15 years agoEnable udev instead of hal on F12 / RHEL-6 or later
Daniel P. Berrange [Fri, 20 Nov 2009 15:45:46 +0000 (16:45 +0100)]
Enable udev instead of hal on F12 / RHEL-6 or later

HAL has been deprecated since F12 and RHEL-6, so if building on
these platforms, switch on the udev driver instead

* libvirt.spec.in: Activate udev on F12/RHEL6

15 years agoDocument overriding domain interface target
Cole Robinson [Fri, 20 Nov 2009 15:25:58 +0000 (16:25 +0100)]
Document overriding domain interface target

* docs/formatdomain.html.in: document that vnet and vif are reserved
  names and will be ignored if manually specified.