]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
11 years agoIntroduce max_queued_clients
Michal Privoznik [Thu, 25 Jul 2013 12:45:38 +0000 (14:45 +0200)]
Introduce max_queued_clients

This configuration knob lets user to set the length of queue of
connection requests waiting to be accept()-ed by the daemon. IOW, it
just controls the @backlog passed to listen:

  int listen(int sockfd, int backlog);

11 years agoRPC: Don't accept client if it would overcommit max_clients
Michal Privoznik [Thu, 25 Jul 2013 11:27:42 +0000 (13:27 +0200)]
RPC: Don't accept client if it would overcommit max_clients

Currently, even if max_client limit is hit, we accept() incoming
connection request, but close it immediately. This has disadvantage of
not using listen() queue. We should accept() only those clients we
know we can serve and let all other wait in the (limited) queue.

11 years agoqemu: eliminate almost-duplicate code in qemu_command.c
Laine Stump [Sat, 27 Jul 2013 00:42:14 +0000 (20:42 -0400)]
qemu: eliminate almost-duplicate code in qemu_command.c

* The functions qemuDomainPCIAddressReserveAddr and
qemuDomainPCIAddressReserveSlot were very similar (and should have
been more similar) and were about to get more code added to them which
would create even more duplicated code, so this patch gives
qemuDomainPCIAddressReserveAddr a "reserveEntireSlot" arg, then
replaces the body of qemuDomainPCIAddressReserveSlot with a call to
qemuDomainPCIAddressReserveAddr.

You will notice that addrs->lastaddr was previously set in
qemuDomainPCIAddressReserveAddr (but *not* set in
qemuDomainPCIAddressReserveSlot). For consistency and cleanliness of
code, that bit was removed and put into the one caller of
qemuDomainPCIAddressReserveAddr (there is a similar place where the
caller of qemuDomainPCIAddressReserveSlot sets lastaddr). This does
guarantee identical functionality to pre-patch code, but in practice
isn't really critical, because lastaddr is just keeping track of where
to start when looking for a free slot - if it isn't updated, we will
just start looking on a slot that's already occupied, then skip up to
one that isn't.

* qemuCollectPCIAddress was essentially doing the same thing as
qemuDomainPCIAddressReserveAddr, but with some extra special case
checking at the beginning. The duplicate code has been replaced with
a call to qemuDomainPCIAddressReserveAddr. This required adding a
"fromConfig" boolean, which is only used to change the log error
code from VIR_ERR_INTERNAL_ERROR (when the address was
auto-generated by libvirt) to VIR_ERR_XML_ERROR (when the address is
coming from the config); without this differentiation, it would be
difficult to tell if an error was caused by something wrong in
libvirt's auto-allocate code or just bad config.

* the bit of code in qemuDomainPCIAddressValidate that checks the
connect type flags is going to be used in a couple more places where
we don't need to also check the slot limits (because we're generating
the slot number ourselves), so that has been pulled out into a
separate qemuDomainPCIAddressFlagsCompatible function.

11 years agoqemu: rename some functions in qemu_command.c
Laine Stump [Sat, 27 Jul 2013 01:04:18 +0000 (21:04 -0400)]
qemu: rename some functions in qemu_command.c

* qemuDomainPCIAddressSetNextAddr

The name of this function was confusing because 1) other functions in
the file that end in "Addr" are only operating on a single function of
one PCI slot, not the entire slot, while functions that do something
with the entire slot end in "Slot", and 2) it didn't contain a verb
describing what it is doing (the "Set" refers to the set that contains
all PCI buses in the system, used to keep track of which slots in
which buses are already reserved for use).

It is now renamed to qemuDomainPCIAddressReserveNextSlot, which more
clearly describes what it is doing. Arguably, it could have been
changed to qemuDomainPCIAddressSetReserveNextSlot, but 1) the word
"set" is confusing in this context because it could be intended as a
verb or as a noun, and 2) most other functions that operate on a
single slot or address within this set are also named
qemuDomainPCIAddress... rather than qemuDomainPCIAddressSet... Only
the Create, Free, and Grow functions for an address set (which modify the
entire set, not just one element) use "Set" in their name.

* qemuPCIAddressAsString, qemuPCIAddressValidate

All the other functions in this set are named
qemuDomainPCIAddressxxxxx, so I renamed these to be consistent.

11 years agoconf: add default USB controller in qemu post-parse callback
Laine Stump [Fri, 2 Aug 2013 08:13:33 +0000 (04:13 -0400)]
conf: add default USB controller in qemu post-parse callback

The parser shouldn't be doing arch-specific things like adding in
implicit controllers to the config. This should instead be done in the
hypervisor's post-parse callback.

This patch removes the auto-add of a usb controller from the domain
parser, and puts it into the qemu driver's post-parse callback (just
as is already done with the auto-add of the pci-root controller). In
the future, any machine/arch that shouldn't have a default usb
controller added should just set addDefaultUSB = false in this
function.

We've recently seen that q35 and ARMV7L domains shouldn't get a default USB
controller, so I've set addDefaultUSB to false for both of those.

11 years agospec: Explicitly claim ownership of channel subdir
Jiri Denemark [Fri, 2 Aug 2013 14:36:57 +0000 (16:36 +0200)]
spec: Explicitly claim ownership of channel subdir

As both /var/lib/libvirt/qemu and /var/lib/libvirt/qemu/channel/target
are owned by us, the intermediate /var/lib/libvirt/qemu/channel should
be owned by us too.

11 years agoFix crashing upgrading from older libvirts with running guests
Daniel P. Berrange [Fri, 2 Aug 2013 11:12:30 +0000 (12:12 +0100)]
Fix crashing upgrading from older libvirts with running guests

If upgrading from a libvirt that is older than 1.0.5, we can
not assume that vm->def->resource is non-NULL. This bogus
assumption caused libvirtd to crash

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoAvoid crash if NULL is passed for filename/funcname in logging
Daniel P. Berrange [Fri, 2 Aug 2013 11:15:57 +0000 (12:15 +0100)]
Avoid crash if NULL is passed for filename/funcname in logging

The journald code would crash if a NULL was passed for the
filename / funcname in the logging code. This shouldn't
happen in general, but it is better to be safe, since there
have been bugs triggering this.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoEnsure LXC/QEMU APIs set the filename for errors
Daniel P. Berrange [Fri, 2 Aug 2013 11:15:15 +0000 (12:15 +0100)]
Ensure LXC/QEMU APIs set the filename for errors

The virLibConnError macros in libvirt-lxc.c and
libvirt-qemu.c were passing NULL for the filename.
This causes a crash if the logging code is configured
to use journald.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoRemove reference to python/tests from RPM %doc
Daniel P. Berrange [Fri, 2 Aug 2013 10:27:03 +0000 (11:27 +0100)]
Remove reference to python/tests from RPM %doc

The python/tests files were recently deleted, but a reference was
left in the RPM %doc entry

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoqemumonitortestutils: Don't skip va_end() on error path
Peter Krempa [Thu, 1 Aug 2013 14:33:23 +0000 (16:33 +0200)]
qemumonitortestutils: Don't skip va_end() on error path

When allocation of memory failed the error path didn't call va_end()
causing a coverity failure.

Reported by John Ferlan.

11 years agoqemuagenttest: Check invalid response in shutdown test
Peter Krempa [Thu, 1 Aug 2013 14:28:29 +0000 (16:28 +0200)]
qemuagenttest: Check invalid response in shutdown test

The shutdown test utilizes waiting for condition to exit the test. This
addition will return an error for the shutdown command to see if the
condition waiting code will not hang.

11 years agoqemuagenttest: Fix checking of shutdown mode
Peter Krempa [Thu, 1 Aug 2013 14:19:09 +0000 (16:19 +0200)]
qemuagenttest: Fix checking of shutdown mode

Coverity complained about unused variable that contains the shutdown
mode. The original intention was to check it against the requested mode.

Also the fixed check revealed a mistake in the expected shutdown mode.

Reported by John Ferlan.

11 years agobridge driver: extract platform specifics
Roman Bogorodskiy [Wed, 24 Jul 2013 12:22:54 +0000 (16:22 +0400)]
bridge driver: extract platform specifics

* Move platform specific things (e.g. firewalling and route
  collision checks) into bridge_driver_platform
* Create two platform specific implementations:
    - bridge_driver_linux: Linux implementation using iptables,
      it's actually the code moved from bridge_driver.c
    - bridge_driver_nop: dumb implementation that does nothing

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agovalgrind: Adjust filter for _dl_allocate_tls
John Ferlan [Thu, 1 Aug 2013 19:52:46 +0000 (15:52 -0400)]
valgrind: Adjust filter for _dl_allocate_tls

More tests are now using the path - adjust the filter to include any
path from a test through pthread_create to _dl_allocate_tls

11 years agotests: Coverity found new NULL_RETURNS
John Ferlan [Thu, 1 Aug 2013 19:54:51 +0000 (15:54 -0400)]
tests: Coverity found new NULL_RETURNS

Coverity reported the existing missing check of the return value and
subsequent use from a call to virJSONValueFromString() in testJSONAddRemove().

11 years agobuild: fix qemuagenttest build with -O0 in fedora 19.
Jincheng Miao [Thu, 1 Aug 2013 17:05:17 +0000 (01:05 +0800)]
build: fix qemuagenttest build with -O0 in fedora 19.

When building libvirt with -O0 flag in fedora 19, it will fail to
generate qemuagenttest, a link error occurs like:

./.libs/libqemumonitortestutils.a(qemumonitortestutils.o): In function `qemuMonitorTestFree':
libvirt/tests/qemumonitortestutils.c:346: undefined reference to `qemuMonitorClose'
./.libs/libqemumonitortestutils.a(qemumonitortestutils.o): In function `qemuMonitorTestNew':
libvirt/tests/qemumonitortestutils.c:870: undefined reference to `qemuMonitorOpen'
collect2: error: ld returned 1 exit status

Fix it by listing libraries in the correct order to avoid lazy linkage.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agomaint: use modern autoconf idioms
Eric Blake [Wed, 31 Jul 2013 20:52:16 +0000 (14:52 -0600)]
maint: use modern autoconf idioms

Autoconf 2.59 says that AC_OUTPUT with arguments is obsolete,
and we are already using the replacement for some, but not all,
of our output files.

* configure.ac (AC_OUTPUT): Rewrite to use AC_CONFIG_FILES.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agoqemu: check presence of each disk and its backing file as well
Guannan Ren [Wed, 31 Jul 2013 07:55:05 +0000 (15:55 +0800)]
qemu: check presence of each disk and its backing file as well

For disk with startupPolicy support, such as cdrom and floppy
when its chain is broken, the startup policy will apply,
otherwise, report an error.

11 years agoqemu: add helper functions for diskchain checking
Guannan Ren [Mon, 29 Jul 2013 12:51:15 +0000 (20:51 +0800)]
qemu: add helper functions for diskchain checking

*src/util/virstoragefile.c: Add a helper function to get
the first name of missing backing files, if the name is NULL,
it means the diskchain is not broken.
*src/qemu/qemu_domain.c: qemuDiskChainCheckBroken(disk) to
check if its chain is broken

11 years agoqemu: refactor qemuDomainCheckDiskPresence for only disk presence check
Guannan Ren [Fri, 26 Jul 2013 12:37:21 +0000 (20:37 +0800)]
qemu: refactor qemuDomainCheckDiskPresence for only disk presence check

Refactor this function to make it focus on disk presence checking,
including diskchain checking, and not only for CDROM and Floppy.
This change is good for the following patches.

11 years agoConfiguring systemd to restart libvirt on failure
Mooli Tayer [Tue, 30 Jul 2013 12:32:59 +0000 (15:32 +0300)]
Configuring systemd to restart libvirt on failure

This will create a respawn behaviour in case libvirt
process exits due to nonzero exit code, is terminated
by a signal, an operation times out or the configured
watchdog timeout is triggered.
see http://www.freedesktop.org/software/systemd/man/systemd.service.html
and https://bugzilla.redhat.com/show_bug.cgi?id=981974

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agoxen: Avoid double free of virDomainDef in xenDaemonCreateXML
Stefan Bader [Wed, 31 Jul 2013 09:59:21 +0000 (11:59 +0200)]
xen: Avoid double free of virDomainDef in xenDaemonCreateXML

The virDomainDef is allocated by the caller and also used after
calling to xenDaemonCreateXML. So it must not get freed by the
callee.

Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
11 years agoEnable support for systemd-machined in cgroups creation
Daniel P. Berrange [Mon, 22 Jul 2013 15:34:51 +0000 (16:34 +0100)]
Enable support for systemd-machined in cgroups creation

Make the virCgroupNewMachine method try to use systemd-machined
first. If that fails, then fallback to using the traditional
cgroup setup code path.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoCope with races while killing processes
Daniel P. Berrange [Fri, 26 Jul 2013 15:02:22 +0000 (16:02 +0100)]
Cope with races while killing processes

When systemd is involved in managing processes, it may start
killing off & tearing down croups associated with the process
while we're still doing virCgroupKillPainfully. We must
explicitly check for ENOENT and treat it as if we had finished
killing processes

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoAdd support for systemd cgroup mount
Daniel P. Berrange [Thu, 25 Jul 2013 18:13:44 +0000 (19:13 +0100)]
Add support for systemd cgroup mount

Systemd uses a named cgroup mount for tracking processes. Add
it as another type of controller, albeit one which we have to
special case in a number of places. In particular we must
never create/delete directories there, nor add tasks. Essentially
the systemd mount is to be considered read-only for libvirt.

With this change both the virCgroupDetectPlacement and
virCgroupCopyPlacement methods must be invoked. The copy
placement method will copy setup for resource controllers
only. The detect placement method will probe for any
named controllers, or resource controllers not already
setup.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoAdd APIs for formatting systemd slice/scope names
Daniel P. Berrange [Fri, 26 Jul 2013 14:18:55 +0000 (15:18 +0100)]
Add APIs for formatting systemd slice/scope names

There are some interesting escaping rules to consider when dealing
with systemd slice/scope names. Thus it is helpful to have APIs
for formatting names

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoqemuagenttest: Add tests for CPU plug functions and helpers
Peter Krempa [Tue, 30 Jul 2013 12:09:16 +0000 (14:09 +0200)]
qemuagenttest: Add tests for CPU plug functions and helpers

11 years agoqemuagenttest: Introduce testing of shutdown commands
Peter Krempa [Mon, 29 Jul 2013 15:22:32 +0000 (17:22 +0200)]
qemuagenttest: Introduce testing of shutdown commands

This patch exports a few utility functions and adds testing of shutdown
commands of the guest agent.

11 years agoqemuagenttest: Add testing of agent suspend modes
Peter Krempa [Mon, 29 Jul 2013 13:24:32 +0000 (15:24 +0200)]
qemuagenttest: Add testing of agent suspend modes

11 years agoqemuagenttest: Test the filesystem trimming
Peter Krempa [Mon, 29 Jul 2013 09:02:19 +0000 (11:02 +0200)]
qemuagenttest: Test the filesystem trimming

11 years agotests: Add qemuagenttest
Peter Krempa [Wed, 24 Jul 2013 08:15:37 +0000 (10:15 +0200)]
tests: Add qemuagenttest

Add a basic test framework with two simple tests to test guest agent
interaction.

11 years agoqemumonitortestutils: Add the ability to check arguments of commands
Peter Krempa [Thu, 25 Jul 2013 13:42:38 +0000 (15:42 +0200)]
qemumonitortestutils: Add the ability to check arguments of commands

This patch adds helpers that allow to check for argument values in
commands sent to the monitor.

11 years agoqemumonitortestutils: Improve error reporting from mock qemu monitor
Peter Krempa [Mon, 29 Jul 2013 12:29:15 +0000 (14:29 +0200)]
qemumonitortestutils: Improve error reporting from mock qemu monitor

Use the JSON error messages to report errors back to the caller in
addition to erroring out. The error reported from the event loop from
the mock function of the monitor was later overwritten by the call to
the monitor/agent interaction API. This will also allow testing of error
reporting.

11 years agoqemumonitortestutils: Add instrumentation for guest agent testing
Peter Krempa [Thu, 25 Jul 2013 10:08:25 +0000 (12:08 +0200)]
qemumonitortestutils: Add instrumentation for guest agent testing

Add helper functions to open guest agent connections and a handler for
replying to the "guest-sync" command.

11 years agoqemumonitortestutils: Split lines on \n instead of \r\n
Peter Krempa [Thu, 25 Jul 2013 10:03:29 +0000 (12:03 +0200)]
qemumonitortestutils: Split lines on \n instead of \r\n

The normal monitor uses windows line endings, where the agent monitor
uses only newlines. Change this to tolerate both approaches and allow to
use the utilities for guest agent tests.

11 years agoqemumonitortestutils: Refactor the test helpers to allow reuse
Peter Krempa [Thu, 25 Jul 2013 09:48:11 +0000 (11:48 +0200)]
qemumonitortestutils: Refactor the test helpers to allow reuse

Refactor the test helpers to allow adding callbacks to verify the
monitor responses instead of simple command name checking and clean up
various parts to prepare for adding guest agent tests.

11 years agoqemumonitortestutils: Split up creation of the test to allow reuse
Peter Krempa [Mon, 22 Jul 2013 14:59:22 +0000 (16:59 +0200)]
qemumonitortestutils: Split up creation of the test to allow reuse

The instrumentation for the monitor test can be hacked for qemu agent
testing. Split out the monitor specific stuff to allow using the code in
guest agent tests in the future.

11 years agoqemumonitortestutils: Don't crash on non fully initialized test
Peter Krempa [Mon, 22 Jul 2013 14:57:08 +0000 (16:57 +0200)]
qemumonitortestutils: Don't crash on non fully initialized test

The qemumonitorjsontest crashed when one of the initialization steps
done before starting the worker thread failed. This patch fixes this by
trying to pthread_join() the thread only after it was created.

11 years agoqemumonitortestutils: remove multiline function calls
Peter Krempa [Thu, 25 Jul 2013 09:02:00 +0000 (11:02 +0200)]
qemumonitortestutils: remove multiline function calls

11 years agoqemumonitortestutils: Use VIR_DELETE_ELEMENT and VIR_APPEND_ELEMENT
Peter Krempa [Thu, 18 Jul 2013 15:09:41 +0000 (17:09 +0200)]
qemumonitortestutils: Use VIR_DELETE_ELEMENT and VIR_APPEND_ELEMENT

Simplify the code using the existing helpers instead of open coding the
same functionality.

11 years agoqemumonitortestutils: Use consistent header style and line spacing
Peter Krempa [Thu, 18 Jul 2013 14:17:31 +0000 (16:17 +0200)]
qemumonitortestutils: Use consistent header style and line spacing

11 years agoqemu_agent: Remove obvious comments
Peter Krempa [Thu, 25 Jul 2013 08:59:21 +0000 (10:59 +0200)]
qemu_agent: Remove obvious comments

Most APIs in libvirt report errors, thus no need to state that
explicitly.

11 years agoqemu_agent: Move updater function for VCPU hotplug into qemu_agent.c
Peter Krempa [Tue, 30 Jul 2013 10:04:21 +0000 (12:04 +0200)]
qemu_agent: Move updater function for VCPU hotplug into qemu_agent.c

To allow testing of the cpu updater function, this function needs to be
available separately. Export it from qemu_agent.c where it should
belong.

11 years agoqemu_agent: Output newline at the end of the sync JSON message
Peter Krempa [Wed, 24 Jul 2013 15:52:33 +0000 (17:52 +0200)]
qemu_agent: Output newline at the end of the sync JSON message

Although this isn't apparently needed for the guest agent itself, the
test I will be adding later depends on the newline as a separator of
messages to process.

11 years agoconf: Export virDomainChrSourceDefClear()
Peter Krempa [Mon, 22 Jul 2013 14:45:32 +0000 (16:45 +0200)]
conf: Export virDomainChrSourceDefClear()

11 years agoDon't mark parentIndex with ATTRIBUTE_UNUSED
Ján Tomko [Wed, 31 Jul 2013 07:42:58 +0000 (09:42 +0200)]
Don't mark parentIndex with ATTRIBUTE_UNUSED

parentIndex is used in virNetworkDefUpdateIPDHCPRange

11 years agoadd console support in libxl
Bamvor Jian Zhang [Fri, 26 Jul 2013 03:30:50 +0000 (11:30 +0800)]
add console support in libxl

this patch introduce the console api in libxl driver for both pv and
hvm guest.  and import and update the libxlMakeChrdevStr function
which was deleted in commit dfa1e1dd.

Signed-off-by: Bamvor Jian Zhang <bjzhang@suse.com>
11 years agoutil: add virGetUserDirectoryByUID
Dan Walsh [Tue, 30 Jul 2013 19:55:44 +0000 (15:55 -0400)]
util: add virGetUserDirectoryByUID

This function is needed for virt-login-shell.  Also modify virGirUserDirectory
to use the new function, to simplify the code.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agomaint: fix typo for SENTINEL
Eric Blake [Tue, 30 Jul 2013 16:49:53 +0000 (10:49 -0600)]
maint: fix typo for SENTINEL

* src/openvz/openvz_driver.c: Use correct spelling.
* src/vmware/vmware_conf.c: Likewise.
* src/vmware/vmware_conf.h: Likewise.
* src/vmware/vmware_driver.c: Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agospec: Don't mix commands with macro definitions
Jiri Denemark [Tue, 30 Jul 2013 14:04:48 +0000 (16:04 +0200)]
spec: Don't mix commands with macro definitions

%build section should first define all required macros and then run
commands. Interleaving them makes it harder to spot what commands are
run.

11 years agospec: Use --enable-werror on RHEL
Jiri Denemark [Tue, 30 Jul 2013 14:01:11 +0000 (16:01 +0200)]
spec: Use --enable-werror on RHEL

As RHEL provides a stable tool chain, we don't have to worry about
frequent changes in reported compiler warnings (which prevents us from
enabling -Werror unconditionally).

11 years agospec: RHEL-7 does not have sanlock on i686
Jiri Denemark [Tue, 30 Jul 2013 11:45:04 +0000 (13:45 +0200)]
spec: RHEL-7 does not have sanlock on i686

11 years agospec: Disable libssh2 support for RHEL
Peter Krempa [Mon, 28 Jan 2013 19:17:31 +0000 (20:17 +0100)]
spec: Disable libssh2 support for RHEL

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

Libssh2 isn't reliable enough to support the libvirt transport using it.
The problems include mishandling of "known_hosts" files that may confuse
users.

11 years agotests: Put a mock library at the start of LD_PRELOAD
Jiri Denemark [Tue, 30 Jul 2013 08:41:50 +0000 (10:41 +0200)]
tests: Put a mock library at the start of LD_PRELOAD

This fixes vircgrouptest when run in a sandbox which already overrides
open() and others.

11 years agoSupport apparmor in RPM spec
Daniel P. Berrange [Tue, 30 Jul 2013 11:04:55 +0000 (12:04 +0100)]
Support apparmor in RPM spec

If libapparmor-devel happens to be installed when building the
RPM, it will failed due to unlisted virt-aa-helper in %files.
Add support for apparmor in the spec, so that we can explicitly
turn it on/off, defaulting to off in all distros. This causes
--without-apparmor to be given to configure, preventing the
build failures if the user happens to have libapparmor-devel
present.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoDelete obsolete / unused python test files
Daniel P. Berrange [Tue, 30 Jul 2013 10:24:22 +0000 (11:24 +0100)]
Delete obsolete / unused python test files

The python/tests directory contains a number of so called
"tests" for the python API. These are all hardcoded to
look for Xen and cannot be run in any automated fashion,
and no one is ever manually running them. Given that they
don't meaningully contribute to the test coverage, delete
them.

For some reason these tests were also copied into the
filesystem as part of 'make install'. The change to the
RPM in commit 3347a4203278ec93d7b0ceb88b5ed10e4f14765c
caused a build failure, since it removed the code which
deleted these installed tests.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoFix minor typos in messages and docs
Yuri Chornoivan [Tue, 30 Jul 2013 08:21:11 +0000 (11:21 +0300)]
Fix minor typos in messages and docs

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agoRelease of libvirt-1.1.1
Daniel Veillard [Tue, 30 Jul 2013 09:38:35 +0000 (17:38 +0800)]
Release of libvirt-1.1.1

* configure.ac docs/news.html.in: update for the release
* po/*.po*: update localizations and regenerate

11 years agobuild: fix shunloadtest breakage
Eric Blake [Mon, 29 Jul 2013 19:06:27 +0000 (13:06 -0600)]
build: fix shunloadtest breakage

Commit 93ec384 was tested on mingw, but broke the build on Linux:

  CCLD     shunloadtest
shunloadtest.o: In function `main':
/home/eblake/libvirt/tests/shunloadtest.c:106: undefined reference to `virFilePrintf'
...
ssh.o: In function `main':
/home/eblake/libvirt/tests/ssh.c:43: undefined reference to `virFilePrintf'
/home/eblake/libvirt/tests/ssh.c:49: undefined reference to `virFilePrintf'

* tests/testutils.h (fprintf): Provide escape hatch.
* tests/shunloadtest.c: Use it.
* tests/ssh.c: Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agoexamples: fix mingw build vs. printf
Eric Blake [Mon, 29 Jul 2013 18:53:36 +0000 (12:53 -0600)]
examples: fix mingw build vs. printf

Mingw *printf is a moving target; newer mingw now provides a version
of asprintf() that fails to understand %lld:

  CC       event_test-event-test.o
../../../../examples/domain-events/events-c/event-test.c: In function 'myDomainEventRTCChangeCallback':
../../../../examples/domain-events/events-c/event-test.c:270:18: error: unknown conversion type character 'l' in format [-Werror=format=]
                  virDomainGetID(dom), offset) < 0)
                  ^

But since our examples already admitted that they were hacking around
a mingw deficiency, it is easier to just use printf() directly, coupled
with <inttypes.h> macros, for a more portable work-around.

* examples/domain-events/events-c/event-test.c
(myDomainEventRTCChangeCallback): Use PRIdMAX instead of asprintf.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agotests: consistently use virFilePrintf
Eric Blake [Mon, 29 Jul 2013 18:01:19 +0000 (12:01 -0600)]
tests: consistently use virFilePrintf

Commit a2619962 introduced virFilePrintf to work around the fact
that gnulib doesn't (yet) provide guarantees about fprintf() vs.
%z, which in turn causes all sorts of mingw compilation errors:

../../tests/testutils.c: In function 'virtTestResult':
../../tests/testutils.c:101:9: error: unknown conversion type character 'z' in format [-Werror=format=]
         fprintf(stderr, "%3zu) %-60s ", testCounter, name);
         ^

Rather than s/fprintf/virFilePrintf/ (and reformatting loads of
lines) across multiple files, it's easier to just hack the entire
testsuite to take advantage of our helper function.

* tests/testutils.c: s/fprintf/virFilePrintf/ for mingw.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agobuild: skip systemd mock on non-Linux
Eric Blake [Mon, 29 Jul 2013 16:47:09 +0000 (10:47 -0600)]
build: skip systemd mock on non-Linux

A cross-compile to mingw failed:

  CC       virsystemdmock_la-virsystemdmock.lo
../../tests/virsystemdmock.c:29:6: error: 'dbus_connection_set_change_sigpipe' redeclared without dllimport attribute: previous dllimport ignored [-Werror=attributes]
 void dbus_connection_set_change_sigpipe(dbus_bool_t will_modify_sigpipe ATTRIBUTE_UNUSED)
      ^

But when you think about it, systemd is Linux-only, and even our
use of LD_PRELOAD to provide mock syscalls is Linux-only.

* tests/virsystemdmock.c: Avoid compilation outside Linux.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agoRename VIR_DOMAIN_PAUSED_GUEST_PANICKED to VIR_DOMAIN_PAUSED_CRASHED
Daniel P. Berrange [Mon, 29 Jul 2013 16:54:57 +0000 (17:54 +0100)]
Rename VIR_DOMAIN_PAUSED_GUEST_PANICKED to VIR_DOMAIN_PAUSED_CRASHED

The VIR_DOMAIN_PAUSED_GUEST_PANICKED constant is badly named,
leaking the QEMU event name. Elsewhere in the API we use
'CRASHED' rather than 'PANICKED', and the addition of 'GUEST'
is redundant since all events are guest related.

Thus rename it to VIR_DOMAIN_PAUSED_CRASHED, which matches
with VIR_DOMAIN_RUNNING_CRASHED and VIR_DOMAIN_EVENT_CRASHED.

It was added in commit 14e7e0ae8db9843aea80245a3d9e6cf5f2ef720d
which post-dates v1.1.0, so is safe to rename before 1.1.1

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoRemove VIR_DOMAIN_SHUTDOWN_CRASHED from public API
Daniel P. Berrange [Mon, 29 Jul 2013 16:46:14 +0000 (17:46 +0100)]
Remove VIR_DOMAIN_SHUTDOWN_CRASHED from public API

The VIR_DOMAIN_SHUTDOWN_CRASHED state constant does not appear
to be used in the QEMU code anyway. It also doesn't make much
(any) sense, since the 'shutdown' state is a transient state
between 'running' and 'shutoff' and when a guest crashes, it
does not end up in a 'shutdown' state, only 'shutoff'.

It was added in commit 14e7e0ae8db9843aea80245a3d9e6cf5f2ef720d
which post-dates v1.1.0, so is safe to remove before 1.1.1

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoFix dbus message reading code on big endian hosts
Daniel P. Berrange [Mon, 29 Jul 2013 16:29:00 +0000 (17:29 +0100)]
Fix dbus message reading code on big endian hosts

The way we were casting small (<32bit) integers was broken
on big endian hosts, causing stack smashing. This was detected
in the test suite either by test failures due to incorrect
results, or by libc/gcc abort'ing with its stack canary
triggered.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agospec: Cat test-suite.log if make check fails
Jiri Denemark [Mon, 29 Jul 2013 15:36:20 +0000 (17:36 +0200)]
spec: Cat test-suite.log if make check fails

Current automake enables parallel test by default, which means test
details are only logged in test-suite.log and not printed to stderr.
This patch makes test failures directly visible in RPM build logs even
when parallel tests are turned on.

11 years agobuild: fix another virdbus issue on mingw
Eric Blake [Mon, 29 Jul 2013 15:58:19 +0000 (09:58 -0600)]
build: fix another virdbus issue on mingw

Depending on the set of mingw packages installed, it is possible
that other .c files hit the mingw header pollution from the
virdbus.h file.

In file included from ../../src/rpc/virnetserver.c:39:0:
../../src/util/virdbus.h:41:35: error: expected ';', ',' or ')' before 'struct'
                       const char *interface,
                                   ^

* src/util/virdbus.h (virDBusCallMethod): Match .c file change.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agobuild: fix virutil build on mingw
Eric Blake [Mon, 29 Jul 2013 14:04:35 +0000 (08:04 -0600)]
build: fix virutil build on mingw

On platforms without decent group support, the build failed:

Cannot export virGetGroupList: symbol not defined
./.libs/libvirt_security_manager.a(libvirt_security_manager_la-security_dac.o): In function `virSecurityDACPreFork':
/home/eblake/libvirt-tmp/build/src/../../src/security/security_dac.c:248: undefined reference to `virGetGroupList'
collect2: error: ld returned 1 exit status

* src/util/virutil.c (virGetGroupList): Provide dummy implementation.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agobuild: fix virthread build on mingw
Eric Blake [Mon, 29 Jul 2013 13:54:10 +0000 (07:54 -0600)]
build: fix virthread build on mingw

Our recent conversion to make VIR_ALLOC report oom wasn't
tested on mingw:

In file included from ../../src/util/virthread.c:29:0:
../../src/util/virthreadwin32.c: In function 'virCondWait':
../../src/util/virthreadwin32.c:166:81: error: 'VIR_FROM_THIS' undeclared (first use in this function)
     if (VIR_REALLOC_N(c->waiters, c->nwaiters + 1) < 0) {
                                                                                 ^

* src/util/virthreadwin32.c (VIR_FROM_THIS): Define.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agobuild: fix virdbus build on mingw
Eric Blake [Mon, 29 Jul 2013 13:54:10 +0000 (07:54 -0600)]
build: fix virdbus build on mingw

Mingw headers pollute the namespace.

  CC       libvirt_util_la-virdbus.lo
../../src/util/virdbus.c:1102:35: error: expected ';', ',' or ')' before 'struct'
                       const char *interface,
                                   ^

* src/util/virdbus.c (virDBusCallMethod): Avoid 'interface'.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agobuild: fix vircgroup build on mingw
Eric Blake [Mon, 29 Jul 2013 14:55:05 +0000 (08:55 -0600)]
build: fix vircgroup build on mingw

The previous patch was incomplete.

  CC       libvirt_util_la-vircgroup.lo
../../src/util/vircgroup.c:70:12: error: 'virCgroupPartitionEscape' declared 'static' but never defined [-Werror=unused-function]
 static int virCgroupPartitionEscape(char **path);
            ^

* src/util/vircgroup.c (virCgroupPartitionEscape): Move forward
declaration inside conditional.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agoConditionalize build of virCgroupValidateMachineGroup
Daniel P. Berrange [Mon, 29 Jul 2013 13:36:07 +0000 (14:36 +0100)]
Conditionalize build of virCgroupValidateMachineGroup

The virCgroupValidateMachineGroup method calls some functions
which are only conditionally compiled, thus it too must be
made conditional. This fixes the build on non-Linux hosts.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agobuild: fix VPATH 'make check'
Eric Blake [Mon, 29 Jul 2013 13:00:00 +0000 (07:00 -0600)]
build: fix VPATH 'make check'

A VPATH build 'make check' was failing with:

  GEN      check-driverimpls
Can't open ../../src/../../src/lxc/lxc_monitor_protocol.h: No such file or directory at ../../src/check-driverimpls.pl line 29, <> line 27153.
Can't open ../../src/../../src/lxc/lxc_monitor_protocol.c: No such file or directory at ../../src/check-driverimpls.pl line 29, <> line 27153.
...
  GEN      check-aclrules
cannot read ../../src/../../src/remote/remote_protocol.x at ../../src/check-aclrules.pl line 128.

because $(srcdir) was being prepended to file names that already
included it.

* src/Makefile.am (check-driverimpls): Don't add srcdir twice.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agopython: Drop TODO
Cole Robinson [Mon, 29 Jul 2013 11:53:16 +0000 (07:53 -0400)]
python: Drop TODO

File hasn't been really touched for 7 years. And with recent rawhide
changes it contributed to an RPM build failure. Let's drop it.

This also removes installation of a libvirt-python doc dir, so drop
handling of it from the RPM spec.

11 years agoFix probing of legacy Xen driver to not leave URI set
Daniel P. Berrange [Fri, 26 Jul 2013 16:28:02 +0000 (17:28 +0100)]
Fix probing of legacy Xen driver to not leave URI set

When the legacy Xen driver probes with a NULL URI, and
finds itself running on Xen, it will set conn->uri. A
little bit later though it checks to see if libxl support
exists, and if so declines the driver. This leaves the
conn->uri set to 'xen:///', so if libxl also declines
it, it prevents probing of the QEMU driver.

Once a driver has set the conn->uri, it must *never*
decline an open request. So we must move the libxl
check earlier

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agocpu: Fix one compile error for PPC.
Li Zhang [Mon, 29 Jul 2013 07:41:19 +0000 (15:41 +0800)]
cpu: Fix one compile error for PPC.

CPU data structure is refined, which causes one compile error for PPC.

Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
11 years agocaps: use -device for primary video when qemu >=1.6
Guannan Ren [Fri, 26 Jul 2013 12:53:47 +0000 (20:53 +0800)]
caps: use -device for primary video when qemu >=1.6

https://bugzilla.redhat.com/show_bug.cgi?id=981094
The commit 0ad9025ef introduce qemu flag QEMU_CAPS_DEVICE_VIDEO_PRIMARY
for using -device VGA, -device cirrus-vga, -device vmware-svga and
-device qxl-vga. In use, for -device qxl-vga, mouse doesn't display
in guest window like the desciption in above bug.
This patch try to use -device for primary video when qemu >=1.6 which
contains the bug fix patch

11 years agobuild: avoid uninitialized use warning
Eric Blake [Fri, 26 Jul 2013 22:37:55 +0000 (16:37 -0600)]
build: avoid uninitialized use warning

Otherwise, with new enough gcc compiling at -O2, the build fails with:
../../src/conf/domain_conf.c: In function ‘virDomainDeviceDefPostParse’:
../../src/conf/domain_conf.c:2821:29: error: ‘cnt’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
             for (i = 0; i < *cnt; i++) {
                             ^
../../src/conf/domain_conf.c:2795:20: note: ‘cnt’ was declared here
         size_t i, *cnt;
                    ^
../../src/conf/domain_conf.c:2794:30: error: ‘arrPtr’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         virDomainChrDefPtr **arrPtr;
                              ^

* src/conf/domain_conf.c (virDomainChrGetDomainPtrs): Always
assign into output parameters.

Signed-off-by: Eric Blake <eblake@redhat.com>
11 years agoSet default partition in libvirtd instead of libvirt_lxc
Daniel P. Berrange [Fri, 26 Jul 2013 14:59:16 +0000 (15:59 +0100)]
Set default partition in libvirtd instead of libvirt_lxc

By setting the default partition in libvirt_lxc it is not
visible when querying the live XML. Move setting of the
default partition into libvirtd virLXCProcessStart

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agovirStateDriver - Separate AutoStart from Initialize
John Ferlan [Thu, 25 Jul 2013 12:03:38 +0000 (08:03 -0400)]
virStateDriver - Separate AutoStart from Initialize

Adjust these drivers to handle their Autostart functionality after each
of the drivers has gone through their Initialization functions

11 years agoSeparate out StateAutoStart from StateInitialize
John Ferlan [Thu, 25 Jul 2013 12:01:02 +0000 (08:01 -0400)]
Separate out StateAutoStart from StateInitialize

Separation allows for dependent drivers to be make a connection during
the AutoStart phase of state initialization.

11 years agoResolve Coverity complaint in storagevolxml2argvtest
Ján Tomko [Fri, 26 Jul 2013 11:10:12 +0000 (13:10 +0200)]
Resolve Coverity complaint in storagevolxml2argvtest

Ignore NULL pool in testSetVolumeType to silence Coverity,
even though we only call it with NULL pool when vol is also NULL.

(13) Event var_deref_model: Passing null pointer "inputpool" to
function "testSetVolumeType(virStorageVolDefPtr, virStoragePoolDefPtr)",
which dereferences it. [details]
Also see events: [assign_zero]

95    testSetVolumeType(inputvol, inputpool);

11 years agoRemove redundant free in virNetworkDNSHostDefParseXML
Ján Tomko [Fri, 26 Jul 2013 10:21:13 +0000 (12:21 +0200)]
Remove redundant free in virNetworkDNSHostDefParseXML

ip has to be NULL at this point.

11 years agoRemove double space in error messages
Ján Tomko [Fri, 26 Jul 2013 10:15:41 +0000 (12:15 +0200)]
Remove double space in error messages

11 years agoDon't check validity of missing attributes in DNS SRV XML
Ján Tomko [Fri, 26 Jul 2013 10:11:21 +0000 (12:11 +0200)]
Don't check validity of missing attributes in DNS SRV XML

This fixes a crash if one of them is missing.

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

11 years agoSet the number of elements 0 in virNetwork*Clear
Ján Tomko [Fri, 26 Jul 2013 10:04:32 +0000 (12:04 +0200)]
Set the number of elements 0 in virNetwork*Clear

Decrementing it when it was already 0 causes an invalid free
in virNetworkDefUpdateDNSHost if virNetworkDNSHostDefParseXML
fails and virNetworkDNSHostDefClear gets called twice.

virNetworkForwardDefClear left the number untouched even if it
freed all the elements.

11 years agoformatdomain.html.in: Document implementation limitation of QoS
Michal Privoznik [Fri, 26 Jul 2013 09:42:53 +0000 (11:42 +0200)]
formatdomain.html.in: Document implementation limitation of QoS

The outbound/@peak is ignored (since QoS was introduced). This is due to
kernel limitation of know allowing ingress filters to have peak just
average rate. However, we should document this limitation to not confuse
users.

11 years agoformatdomain.html.in: Correctly use <code/> in #elementQoS
Michal Privoznik [Fri, 26 Jul 2013 09:40:52 +0000 (11:40 +0200)]
formatdomain.html.in: Correctly use <code/> in #elementQoS

Interestingly, we had <code>floor<code> ... </code>outbound</code> which
results in much larger block of text to be written in code style that
intended.

11 years agoconf:Fix a copy paste error
Alex Jia [Fri, 26 Jul 2013 09:19:16 +0000 (17:19 +0800)]
conf:Fix a copy paste error

Signed-off-by: Alex Jia <ajia@redhat.com>
11 years agoFix virsh snapshot-list error reporting
Jim Fehlig [Thu, 25 Jul 2013 20:18:14 +0000 (14:18 -0600)]
Fix virsh snapshot-list error reporting

Noticed that the expected "not supported" error is dropped when
invoking 'virsh snapshot-list dom' on a Xen installation running
the libxl driver

 virsh snapshot-list test
 error: Invalid snapshot: virDomainSnapshotFree

The error is overwritten by a call to virDomainSnapshotFree
in cleanup code within cmdSnapshotList.  Prevent overwritting
the real error by not calling virDomainSnapshotFree with a NULL
virDomainSnapshotPtr.

11 years agoSkip detecting placement if controller is disabled
Daniel P. Berrange [Thu, 25 Jul 2013 12:12:30 +0000 (13:12 +0100)]
Skip detecting placement if controller is disabled

If the app has provided a whitelist of controllers to be used,
we skip detecting its mount point. We still, however, fill in
the placement info which later confuses the machine name
validation code. Skip detecting placement if the controller
mount point is not set

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoAdd 'controllers' arg to virCgroupNewDetect
Daniel P. Berrange [Wed, 24 Jul 2013 16:31:25 +0000 (17:31 +0100)]
Add 'controllers' arg to virCgroupNewDetect

When detecting cgroups we must honour any controllers
whitelist the driver may have.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoFix detection of 'emulator' cgroup
Daniel P. Berrange [Wed, 24 Jul 2013 16:41:44 +0000 (17:41 +0100)]
Fix detection of 'emulator' cgroup

When a VM has an 'emulator' child cgroup present, we must
strip off that suffix when detecting the cgroup for a
machine

Rename the virCgroupIsValidMachineGroup method to
virCgroupValidateMachineGroup to make a bit clearer
that this isn't simply a boolean check, it will make
changes to the object.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoMake virCgroupIsValidMachine static
Daniel P. Berrange [Wed, 24 Jul 2013 16:38:08 +0000 (17:38 +0100)]
Make virCgroupIsValidMachine static

The virCgroupIsValidMachine does not need to be called from
outside the cgroups file now, so make it static.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agoIntroduce a more convenient virCgroupNewDetectMachine
Daniel P. Berrange [Wed, 24 Jul 2013 16:36:42 +0000 (17:36 +0100)]
Introduce a more convenient virCgroupNewDetectMachine

Instead of requiring drivers to use a combination of calls
to virCgroupNewDetect and virCgroupIsValidMachine, combine
the two into virCgroupNewDetectMachine

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
11 years agovirdbustest: Don't pass number of arguments as long long
Guido Günther [Wed, 24 Jul 2013 21:19:43 +0000 (23:19 +0200)]
virdbustest: Don't pass number of arguments as long long

since sizeof(int) != sizeof(long long) on 32bit archs.

This unbreaks virdbustest which otherwise fails like:

 (gdb) bt
 #0  __strlen_sse2_bsf () at ../sysdeps/i386/i686/multiarch/strlen-sse2-bsf.S:50
 #1  0x405907d2 in ?? () from /lib/i386-linux-gnu/libdbus-1.so.3
 #2  0x4057c140 in ?? () from /lib/i386-linux-gnu/libdbus-1.so.3
 #3  0x4057e7ec in dbus_message_iter_append_basic () from /lib/i386-linux-gnu/libdbus-1.so.3
 #4  0x400742ec in virDBusMessageIterEncode (args=0xbfd4b8f0 "k\321\004\b.", types=0x804d260 "",
     rootiter=0xbfd4b844) at util/virdbus.c:560
 #5  virDBusMessageEncodeArgs (msg=msg@entry=0x893c278, types=types@entry=0x804d25c "sais",
     args=args@entry=0xbfd4b8d8 "r\320\004\b\003") at util/virdbus.c:921
 #6  0x40075917 in virDBusMessageEncode (msg=0x893c278, types=0x804d25c "sais") at util/virdbus.c:959
 #7  0x0804a4a1 in testMessageArray (args=0x0) at virdbustest.c:195
 #8  0x0804c404 in virtTestRun (title=title@entry=0x804cfcb "Test message array ",
     nloops=nloops@entry=1, body=body@entry=0x804a3f0 <testMessageArray>, data=data@entry=0x0)
     at testutils.c:168
 #9  0x08049346 in mymain () at virdbustest.c:384
 #10 0x0804cb2e in virtTestMain (argc=argc@entry=1, argv=argv@entry=0xbfd4bb24,
     func=func@entry=0x80492c0 <mymain>) at testutils.c:764
 #11 0x080491af in main (argc=1, argv=0xbfd4bb24) at virdbustest.c:393

11 years agoAdd inputpool to storagevolxml2argvtest
Ján Tomko [Mon, 22 Jul 2013 13:55:40 +0000 (15:55 +0200)]
Add inputpool to storagevolxml2argvtest

This allows testing the command line for cloning file-based
volumes into logical volumes and vice versa.

11 years agoMove volume XMLs out of storagevolxml2argvdata
Ján Tomko [Mon, 22 Jul 2013 13:44:06 +0000 (15:44 +0200)]
Move volume XMLs out of storagevolxml2argvdata

Reuse the XML files in storagevolxml2xmlin.

(This requires changing a few backing files to /dev/null,
since virStorageBackendCreateQemuImgCmd checks for its
presence)

11 years agoMove pool XML out of storagevolxml2argvdata
Ján Tomko [Mon, 22 Jul 2013 12:56:26 +0000 (14:56 +0200)]
Move pool XML out of storagevolxml2argvdata

Reuse the pool definition from storagepoolxml2xmlin.