Commit Graph

15906 Commits

Author SHA1 Message Date
Mikhail Feoktistov
2286986a9c vz: make output arguments in prlsdkGetDomainIds as optional
prlsdkGetDomainIds() returns name and uuid for specified instance.
Now output arguments can be NULL.
It allows to get only necessary info(name or uuid).
2016-02-12 13:31:56 +03:00
Peter Krempa
b60af444cc conf: snapshot: Avoid autogenerating duplicate snapshot names
The snapshot name generator truncates the original file name after a '.'
and replaces the suffix with the snapshot name. If two disks source
images differ only in the suffix portion, the generated name will be
duplicate.

Since this is a corner case just error out stating that a duplicate name
was generated. The user can work around this situation by providing
the file names explicitly.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1283085
2016-02-11 15:33:10 +01:00
Peter Krempa
4319444d05 conf: snapshot: Refactor virDomainSnapshotDefAssignExternalNames
Get rid of one indentation level by negating condition and remove ugly
pointer arithmetic at the cost of one extra allocation.
2016-02-11 15:33:10 +01:00
Peter Krempa
040a4fe7f6 conf: snapshot: Extract code to generate default external file names 2016-02-11 15:33:01 +01:00
Peter Krempa
d5c7655ca5 conf: snapshot: Rename disksorter to virDomainSnapshotCompareDiskIndex
Stick to the naming pattern.
2016-02-11 15:32:48 +01:00
Michal Privoznik
862298a2e7 dbus: Don't unref NULL messages
Apparently we are not the only ones with dumb free functions
because dbus_message_unref() does not accept NULL either. But if
I were to vote, this one is even more evil. Instead of returning
an error just like we do it immediately dereference any pointer
passed and thus crash you app. Well done DBus!

  Program received signal SIGSEGV, Segmentation fault.
  [Switching to Thread 0x7f878ebda700 (LWP 31264)]
  0x00007f87be4016e5 in ?? () from /usr/lib64/libdbus-1.so.3
  (gdb) bt
  #0  0x00007f87be4016e5 in ?? () from /usr/lib64/libdbus-1.so.3
  #1  0x00007f87be3f004e in dbus_message_unref () from /usr/lib64/libdbus-1.so.3
  #2  0x00007f87bf6ecf95 in virSystemdGetMachineNameByPID (pid=9849) at util/virsystemd.c:228
  #3  0x00007f879761bd4d in qemuConnectCgroup (driver=0x7f87600a32a0, vm=0x7f87600c7550) at qemu/qemu_cgroup.c:909
  #4  0x00007f87976386b7 in qemuProcessReconnect (opaque=0x7f87600db840) at qemu/qemu_process.c:3386
  #5  0x00007f87bf6edfff in virThreadHelper (data=0x7f87600d5580) at util/virthread.c:206
  #6  0x00007f87bb602334 in start_thread (arg=0x7f878ebda700) at pthread_create.c:333
  #7  0x00007f87bb3481bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
  (gdb) frame 2
  #2  0x00007f87bf6ecf95 in virSystemdGetMachineNameByPID (pid=9849) at util/virsystemd.c:228
  228         dbus_message_unref(reply);
  (gdb) p reply
  $1 = (DBusMessage *) 0x0

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2016-02-11 11:35:02 +01:00
Ján Tomko
21e2e08191 virhook: do not save the return value of virBuildPath
This function returns -1 on allocation error, there's no
need to check the path for NULL again.
2016-02-11 08:05:17 +01:00
Ján Tomko
2542eb75bd Clean up usage of 'ret' variable
Do not store the return value of called functions in the same variable
as the (future) return value of the current function.

This makes tracking the origin of the value easier and reduces
the chance of introducing a new point of exit without resetting
the return value back to -1.
2016-02-11 08:05:16 +01:00
Ján Tomko
28e5655de3 Prohibit verbose strcat
Using strcat directly is more readable than passing strlen
of the copied string to strncat.
2016-02-11 08:05:16 +01:00
Ján Tomko
4d569245f0 vbox: remove more extra spaces 2016-02-11 07:32:50 +01:00
Ján Tomko
a3dd574a07 vbox: remove extra spaces from function headers
Also fix the curly brace to pass sytnax-check.
2016-02-11 07:32:50 +01:00
Ján Tomko
b31e4d00ec vbox: remove extra spaces from assignments 2016-02-11 07:32:50 +01:00
Ján Tomko
ebe24c84d4 vbox: remove extra spaces from variable initializations 2016-02-11 07:32:50 +01:00
Ján Tomko
628599935b vbox: remove extra spaces from macro definitions 2016-02-11 07:32:50 +01:00
Michal Privoznik
88ed9d771e qemu: Connect to guest agent iff needed
https://bugzilla.redhat.com/show_bug.cgi?id=1293351

Since we already have virtio channel events, we know when guest
agent within guest has (dis-)connected. Instead of us blindly
connecting to a socket that no one is listening to, we can just
follow what qemu-ga does. This has a nice benefit that we don't
need to 'guest-ping' the agent just to timeout and find out
nobody is listening.

The way that this commit is implemented:
- don't connect in qemuProcessLaunch directly, defer that to event
  callback (which already follows the agent) -
  processSerialChangedEvent
- after migration is settled, before we resume vCPUs, ask qemu
  whether somebody is listening on the socket and if so, connect
  to it.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2016-02-11 06:52:50 +01:00
John Ferlan
d860b2f537 qemu: Split the command parsing routines into own module
Extract out the qemuParseCommandLine{String|Pid} into their own
separate module - taking with it all the various static functions.

Causes a ripple effect with a few other modules to include the
new qemu_parse_command.h.

Narrowed down the list of #include's in the split out module to
those that are necessary for build.
2016-02-10 15:21:37 -05:00
John Ferlan
336d4dace4 qemu: Check return status for virDomainGraphicsListenSetAddress
Recent refactors in the vbox code to check the return status for the
function tipped Coverity's scales of justice for any functions that
do not check status - such as this one.

While I'm at it, since the call is essentially the same other than
whether starting from val or val+1 when val[0] = '[', just adjust
the val pointer by one and have one call instead of two.

Additionally, the call to virDomainGraphicsListenGetAddress is redundant
since it checking that the address field got filled.  It's a leftover
from the strndup -> ListenSetAddress conversion (commit id 'ef79fb5b5')

Signed-off-by: John Ferlan <jferlan@redhat.com>
2016-02-10 15:18:54 -05:00
John Ferlan
7b3adac4cf qemu: Introduce qemuParseCommandLineVnc
Refactor qemuParseCommandLine to pull out the "-vnc" argument parsing
into its own helper function.  Modify the code to use "cleanup" instead
of "error" and use the standard return processing to indicate success
or failure by using ret

Signed-off-by: John Ferlan <jferlan@redhat.com>
2016-02-10 14:46:53 -05:00
Michal Privoznik
e01e1e16ef xenconfig: Properly check retval of virDomainGraphicsListenSetAddress
The function, like others in our code, returns zero on success
and a negative value on error. However, there are two places in
xenconfig source code where we check for non-zero value. While
the function can't currently return a positive value, those
checks look okay, but does not really follow our style.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2016-02-10 14:13:41 +01:00
Joao Martins
5194eb9564 libxl: keepalive messages support
This patch introduces keep alive messages support for P2P migration
and it adds two new configuration entries namely 'keepalive_interval'
'keepalive_count' to control it. Behavior of these entries is the
same as qemu driver thus the description is copied from there
with just a few simplifications.

Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
2016-02-09 21:14:12 -07:00
Joao Martins
a79da2457e libxl: add p2p migration
Introduce support for VIR_MIGRATE_PEER2PEER in libvirt migration.
Most of the changes occur at the source and no modifications at
the receiver.

In P2P mode there is only the Perform phase so we must handle the
connection with the destination and actually perform the
migration. libxlDomainPerformP2P implements the connection to the
destination and libxlDoMigrateP2P implements the actual migration
logic with virConnectPtr. In this function we take care of doing
all phases of migration in the destination similar to
virDomainMigrateVersion3Full. We appropriately save the last
error reported in each of the phases to provide proper reporting.
We don't yet support VIR_MIGRATE_TUNNELED and we always use V3
with extensible params, thus it also makes the implementation
simpler.

It is worth noting that the receiver didn't have any changes, and
since it's still the v3 sequence thus it is possible to migrate
from a P2P to non-P2P host.

Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
2016-02-09 20:26:54 -07:00
Michal Privoznik
d1a7102389 virStringListLength: Ensure const correctness
The virStringListLength function does not ever modify the passed
string list. It merely counts the items in it. Make sure that we
reflect this bit in the function header.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

(crobinso: fix up spacing and squash in sheepdog bit suggested
 by Andrea)
2016-02-09 15:44:58 -05:00
Michal Privoznik
73b70b403d virDomainFormatSchedDef: Initialize @priority
Older gcc fails to see that the variable is set iff @hasPriority
== true in which case the former is set a value. Initialize the
value while declaring it to make the compiler shut up.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2016-02-09 17:00:25 +01:00
Martin Kletzander
ea913d185d util: Get rid of virStringListLen()
It does exactly the same thing as virStringListLength() and it's used in
one place only.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
2016-02-09 16:46:14 +01:00
Ján Tomko
99a6f30db0 leaseshelper: swap two parameters of virLeaseNew
My commit e11aa74 messed up the parameter order.

Reported by John Ferlan.
2016-02-09 13:15:59 +01:00
Ján Tomko
6951ab6881 vboxDumpDisplay: realign variable initializations
Remove the extra spaces, do not align them on '='.
2016-02-09 10:11:56 +01:00
Ján Tomko
c5972df7d5 vboxDumpDisplay: remove suspicious strlen
The return type of strlen is 'size_t', which is unsigned and therefore
never less than zero.

Use STREQ to make the check obvious.
2016-02-09 10:11:05 +01:00
Ján Tomko
5a16197459 vboxDumpDisplay: reuse the keyUtf16 variable
We free the key right after calling the API.

Reuse a single variable to remove the typo.
2016-02-09 10:11:02 +01:00
Ján Tomko
2ab95531ca vboxDumpDisplay: use VIR_APPEND_ELEMENT
Instead of open-coding it.
2016-02-09 10:10:25 +01:00
Ján Tomko
ec74a9da7a vboxDumpDisplay: check return of virDomainGraphicsListenSetAddress
Error out if the allocation failed.
2016-02-09 10:10:24 +01:00
Ján Tomko
fcecbb37bf vboxDumpDisplay: clean up VIR_STRDUP usage
Two VIR_STRDUP calls are redundant - just steal the string
converted by VBOX_UTF16_TO_UTF8.

Report an error when the third one fails.
2016-02-09 10:09:41 +01:00
Ján Tomko
8f8c473a98 vboxDumpDisplay: fill out the graphics structure earlier
Remove the need to track what type of graphics were present
by temporary variables.
2016-02-09 10:09:23 +01:00
Ján Tomko
026bcfdcad vboxDumpDisplay: allocate the graphics structure upfront
Allocate it as soon as we know we will need it.

Add it to def->ngraphics if it's allocated, removing the need
to use the addDesktop and totalPresent variables to track this.
2016-02-09 10:09:19 +01:00
Ján Tomko
ef98d93bed vboxDumpDisplay: split out def->graphics allocation
Separate allocation of the def->graphics array from the allocation
and initialization of its first element.

Note that the only possible values of totalPresent at this point
are 0 or 1, because it equals to guiPresent + sdlPresent.
2016-02-09 10:08:39 +01:00
Ján Tomko
2f2a0b2925 vboxDumpDisplay: remove extra virReportOOMError
VIR_ALLOC* already reported an error.
2016-02-09 10:08:11 +01:00
Ján Tomko
56886d5fdd vboxDumpDisplay: add addDesktop bool
When FRONTEND/Type is not any of "sdl", "gui", "vrdp", we add a DESKTOP.
Use a bool to track this, instead of checking that both
totalPresent ("sdl" or "gui" present) and vrdpPresent are zero.
2016-02-09 10:08:00 +01:00
Ján Tomko
bf1691e388 vboxDumpDisplay: more indentation reducing
VRDxEnabled is initialized to false. Put the if (VRDxEnabled)
on the top level to reduce nesting.
2016-02-09 10:07:57 +01:00
Ján Tomko
5cb926f90d vboxDumpDisplay: reduce indentation level
Use STREQ_NULLABLE instead of deep nesting.
2016-02-09 10:07:37 +01:00
Ján Tomko
2ea694053f Check return value of vboxDumpVideo
Error out on allocation failures instead of creating an incomplete
definition.

Fixes a possible crash when def->nvideos is 1, but def->videos is NULL.
2016-02-09 10:06:58 +01:00
Ján Tomko
e11aa74933 leaseshelper: split out virLeaseNew
For the actions ADD and OLD, split out creating the new lease object,
as well as getting the environment variables that do not affect
the parsing of command line arguments.
2016-02-09 08:48:14 +01:00
Peter Krempa
4f3db09bd5 qemu: iothread: Reuse qemuProcessSetupIOThread in iothread hotplug
Since majority of the steps is shared, the function can be reused to
simplify code.

Similarly to previous path doing this same for vCPUs this also fixes the
a similar bug (which is not tracked).
2016-02-08 17:05:00 +01:00
Peter Krempa
1dcc4c7ffd qemu: iothread: Aggregate code to set IOThread tuning
Rather than iterating 3 times for various settings this function
aggregates all the code into single place. One of the other advantages
is that it can then be reused for properly setting IOThread info on
hotplug.
2016-02-08 17:05:00 +01:00
Peter Krempa
c6bd15026b qemu: vcpu: Reuse qemuProcessSetupVcpu in vcpu hotplug
Since majority of the steps is shared, the function can be reused to
simplify code.

Additionally this resolves
https://bugzilla.redhat.com/show_bug.cgi?id=1244128 since the cpu
bandwidth limiting with cgroups would not be set on the hotplug path.

Additionally the code now sets the thread affinity and honors autoCpuset
as in the regular startup code path.
2016-02-08 17:05:00 +01:00
Peter Krempa
56971667ee qemu: vcpu: Aggregate code to set vCPU tuning
Rather than iterating 3 times for various settings this function
aggregates all the code into single place. One of the other advantages
is that it can then be reused for properly setting vCPU info on hotplug.

With this approach autoCpuset is also used when setting the process
affinity rather than just via cgroups.
2016-02-08 17:05:00 +01:00
Joao Martins
d9c57ca9f9 remote: enforce VIR_TYPED_PARAM_STRING_OKAY flag on client side serialization
Commit 8cd1d54 consolidates both daemon and remote driver typed param
serialization functions. The consolidation now enforces client to use
VIR_TYPED_PARAM_STRING_OKAY flag to properly serialize string parameters, which
server has used for quite some time now. And this caused an issue, since the
commit had not adjusted client remote calls appropriately, thus causing a
failure in blkiotune, numatune and migration APIs (as per Xen CI tests). This
patch adjusts both remote_driver.c and gendispatch.pl to properly address this
issue.

http://lists.xenproject.org/archives/html/xen-devel/2016-02/msg01012.html

Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Signed-off-by: Erik Skultety <eskultet@redhat.com>
2016-02-08 14:59:54 +01:00
Michal Privoznik
a0aa92a24b vircgroup: Update virCgroupGetPercpuStats stump
In the commit 7938b533 we've changed the function signature,
however forgot to update stump that's used on systems without
CGroups causing a build failure.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2016-02-08 14:06:30 +01:00
Peter Krempa
6dfb4507f5 conf: Fix how iothread scheduler info is stored
Similarly to previous commit change the way how iothread scheduler info
is stored and clean up a lot of unnecessary code.
2016-02-08 09:51:34 +01:00
Peter Krempa
99c5fe0e7c conf: Don't store vcpusched orthogonally to other vcpu info
Due to bad design the vcpu sched element is orthogonal to the way how
the data belongs to the corresponding objects. Now that vcpus are a
struct that allow to store other info too, let's convert the data to the
sane structure.

The helpers for the conversion are made universal so that they can be
reused for iothreads too.

This patch also resolves https://bugzilla.redhat.com/show_bug.cgi?id=1235180
since with the correct storage approach you can't have dangling data.
2016-02-08 09:51:34 +01:00
Peter Krempa
e1fa2571c5 conf: Extract code that formats <cputune>
virDomainDefFormatInternal is growing rather large. Extract the cputune
formatter into a separate function.
2016-02-08 09:51:34 +01:00
Peter Krempa
cc715e9391 conf: remove unused cpu pinning helpers and data structures
Now that the pinning info is stored elsewhere we can delete all the
obsolete code.
2016-02-08 09:51:34 +01:00