21 min agoqemu: Fix depedency order in qemuRemoveDiskDevice master
John Ferlan [Tue, 25 Oct 2016 19:32:27 +0000]
qemu: Fix depedency order in qemuRemoveDiskDevice

Need to remove the drive first, then the secobj and/or encobj if they exist.
This is because the drive has a dependency on secobj (or the secret for
the networked storage server) and/or the encobj (or the secret for the
LUKS encrypted volume).  Deleting either object first leaves an drive
without it's respective objects.

Signed-off-by: John Ferlan <>

13 hours agovirsh: Add _length parameters to virsh output
John Ferlan [Sun, 2 Oct 2016 12:24:31 +0000]
virsh: Add _length parameters to virsh output

Add the duration parameters to the virsh input/output for blkdeviotune
command and describe them in the pod file.

Signed-off-by: John Ferlan <>

13 hours agovirsh: Create macros to add IOTUNE values
John Ferlan [Sun, 2 Oct 2016 11:55:32 +0000]
virsh: Create macros to add IOTUNE values

Rework the repetitive lines to add iotune values into easier to read macros.
One to handle the SCALED values and one to handle the non scaled values.

Signed-off-by: John Ferlan <>

13 hours agoqemu: Add the length options to the iotune command line
John Ferlan [Mon, 19 Sep 2016 11:14:21 +0000]
qemu: Add the length options to the iotune command line

Add in the block I/O throttling length/duration parameter to the command
line if supported. If not supported, fail command creation.

Add the xml2argvtest for testing.

13 hours agoconf: Add support for blkiotune "_length" options
John Ferlan [Mon, 19 Sep 2016 10:41:05 +0000]
conf: Add support for blkiotune "_length" options

Modify _virDomainBlockIoTuneInfo and rng schema to support the _length
options for bps/iops throttling values. Document the new values.

13 hours agoqemu: Add length for bps/iops throttling parameters to driver
John Ferlan [Sun, 18 Sep 2016 16:02:50 +0000]
qemu: Add length for bps/iops throttling parameters to driver

Add support for a duration/length for the bps/iops and friends.

Modify the API in order to add the "blkdeviotune." specific definitions
for the iotune throttling duration/length options


14 hours agocaps: Add new capability for the bps/iops throttling length
John Ferlan [Mon, 19 Sep 2016 10:47:19 +0000]
caps: Add new capability for the bps/iops throttling length

Add the capability to detect if the qemu binary can support the feature
to use bps-max-length and friends.

14 hours agoinclude: Add new definitions for duration for bps/iops throttling
John Ferlan [Mon, 19 Sep 2016 11:38:32 +0000]
include: Add new definitions for duration for bps/iops throttling

Add new options to allow proving a duration/length in seconds to allow the
bps/iops (and friends) to occur:


Add continue for compiler hint to return to for control

14 hours agoqemu: Introduce qemuDomainSetBlockIoTuneDefaults
John Ferlan [Thu, 6 Oct 2016 19:08:00 +0000]
qemu: Introduce qemuDomainSetBlockIoTuneDefaults

Create a helper to set the bytes/iops iotune default values based on
the current qemu setting for both the live and persistent definitions.
NB: This also fixes an unreported bug where the persistent values for
*_max and size_iops_sec would be set back to 0 if unrelated persistent
values were set.

15 hours agoqemu: Move setting of conf_disk in qemuDomainSetBlockIoTune
John Ferlan [Thu, 6 Oct 2016 18:21:29 +0000]
qemu: Move setting of conf_disk in qemuDomainSetBlockIoTune

Since persistent_def is the only place that uses it, let's just keep
it closer to where it's used.

15 hours agoqemu: Return real error message for block_set_io_throttle
John Ferlan [Thu, 6 Oct 2016 18:13:27 +0000]
qemu: Return real error message for block_set_io_throttle

This patch will also adjust the qemuMonitorJSONSetBlockIoThrottle error
procession so that rather than returning/displaying:

    "error: internal error: Unexpected error"

Fetch the actual error message from qemu and display that

15 hours agoqemu: Create a macro to handle setting bytes/iops iotune values
John Ferlan [Thu, 6 Oct 2016 17:57:32 +0000]
qemu: Create a macro to handle setting bytes/iops iotune values

Create a macros to hide all the comparisons for each of the fields.

Add a 'continue;' for a compiler hint that we only need to find one
this should be similar enough to the if - elseif - elseif logic.

15 hours agoqemu: Move TLS object remove from DetachChr to RemoveChr
John Ferlan [Mon, 24 Oct 2016 19:47:56 +0000]
qemu: Move TLS object remove from DetachChr to RemoveChr

Commit id '2c32237' added the TLS object removal to the DetachChrDevice
all when it should have been added to the RemoveChrDevice since that's
the norm for similar processing (e.g. disk)

Signed-off-by: John Ferlan <>

23 hours agovirQEMUCapsReset: also clear out hostCPUModel
Ján Tomko [Mon, 24 Oct 2016 15:35:32 +0000]
virQEMUCapsReset: also clear out hostCPUModel

After succesfully reading an outdated caps cache from disk,
calling virQEMUCapsReset did not properly clear out the calculated
host CPU model. This lead to a memory leak when the host CPU model
pointer was overwritten later in virQEMUCapsNewForBinaryInternal.

Introduced by commit 68c70118.

33 hours agolibxl: fix leaking of allocated migration ports
Jim Fehlig [Fri, 14 Oct 2016 17:55:52 +0000]
libxl: fix leaking of allocated migration ports

Although the migration port is immediately released in the
finish phase of migration, it was never set in the domain
private object when allocated in the prepare phase. So
libxlDomainMigrationFinish() always released a 0-initialized
migrationPort, leaking any allocated port. After enough
migrations to exhaust the migration port pool, migration would
fail with

error: internal error: Unable to find an unused port in range
       'migration' (49152-49216)

Fix it by setting libxlDomainObjPrivate->migrationPort to the
port allocated in the prepare phase. While at it, also fix
leaking an allocated port if the prepare phase fails.

36 hours agodoc: update virsh domstats documentation for vcpu statistics
Viktor Mihajlovski [Thu, 13 Oct 2016 11:42:47 +0000]
doc: update virsh domstats documentation for vcpu statistics

Added description for new vcpu.<num>.halted statistics value.
While there, also added a description for vcpu.<num>.wait and
clarified the units displayed for time and wait.

Signed-off-by: Viktor Mihajlovski <>
Reviewed-by: Bjoern Walk <>

36 hours agoqemu: add vcpu.n.halted to vcpu domain stats
Viktor Mihajlovski [Thu, 13 Oct 2016 11:42:46 +0000]
qemu: add vcpu.n.halted to vcpu domain stats

Extended qemuDomainGetStatsVcpu to include the per vcpu halted
indicator if reported by QEMU. The key for new boolean value
has the format "vcpu.<n>.halted".

Signed-off-by: Viktor Mihajlovski <>
Reviewed-by: Bjoern Walk <>

36 hours agoqemu: Add domain support for VCPU halted state
Viktor Mihajlovski [Thu, 13 Oct 2016 11:42:45 +0000]
qemu: Add domain support for VCPU halted state

Adding a field to the domain's private vcpu object to hold the halted
state information.
Adding two functions in support of the halted state:
- qemuDomainGetVcpuHalted: retrieve the halted state from a
  private vcpu object
- qemuDomainRefreshVcpuHalted: obtain the per-vcpu halted states
  via qemu monitor and store the results in the private vcpu objects

Signed-off-by: Viktor Mihajlovski <>
Reviewed-by: Bjoern Walk <>
Reviewed-by: Hao QingFeng <>
Signed-off-by: Boris Fiuczynski <>

36 hours agoqemu: Add monitor support for CPU halted state
Viktor Mihajlovski [Thu, 13 Oct 2016 11:42:44 +0000]
qemu: Add monitor support for CPU halted state

Extended the qemuMonitorCPUInfo with a halted flag. Extract the halted
flag for both text and JSON monitor.

Signed-off-by: Viktor Mihajlovski <>
Signed-off-by: Boris Fiuczynski <>

41 hours agoqemu: replace calls to virDomainPCIAddressReserveNext*() with static function
Laine Stump [Fri, 2 Sep 2016 20:39:18 +0000]
qemu: replace calls to virDomainPCIAddressReserveNext*() with static function

An upcoming commit will remove the "flag" argument from all the calls
to reserve the next available address|slot, but I don't want to change
the arguments in the hypervisor-agnostic
virDomainPCIAddressReserveNext*() functions, so this patch places a
simple qemu-specific wrapper around those functions - the new
functions don't take a flags arg, but grab it from the device's

41 hours agoconf: make virDomainPCIAddressGetNextSlot() a local static function
Laine Stump [Thu, 1 Sep 2016 15:38:02 +0000]
conf: make virDomainPCIAddressGetNextSlot() a local static function

This function is no longer needed outside of domain_addr.c.

41 hours agoqemu: use virDomainPCIAddressReserveNextAddr in qemuDomainAssignDevicePCISlots
Laine Stump [Thu, 1 Sep 2016 15:23:06 +0000]
qemu: use virDomainPCIAddressReserveNextAddr in qemuDomainAssignDevicePCISlots

instead of calling virDomainPCIAddressGetNextSlot() (which I want to
turn into a local static in domain_addr.c).

41 hours agoconf: new function virDomainPCIAddressReserveNextAddr()
Laine Stump [Thu, 1 Sep 2016 13:29:01 +0000]
conf: new function virDomainPCIAddressReserveNextAddr()

There is an existing virDomainPCIAddressReserveNextSlot() which will
reserve all functions of the next available PCI slot. One place in the
qemu PCI address assignment code requires reserving a *single*
function of the next available PCI slot. This patch modifies and
renames virDomainPCIAddressReserveNextSlot() so that it can fulfill
both the original purpose and the need to reserve a single function.

(This is being done so that the abovementioned code in qemu can have
its "kind of open coded" solution replaced with a call to this new

44 hours agodomain: fix migration to older libvirt
Pavel Hrdina [Fri, 21 Oct 2016 14:42:26 +0000]
domain: fix migration to older libvirt

Since TLS was introduced hostwide for libvirt 2.3.0 and a domain
configurable haveTLS was implemented for libvirt 2.4.0, we have to
modify the migratable XML for specific case where the 'tls' attribute
is based on setting from qemu.conf.

The "tlsFromConfig" is libvirt internal attribute and is stored only in
status XML to ensure that when libvirtd is restarted this internal flag
is not lost by the restart.

That flag is used to decide whether we should put *tls* attribute to
migratable XML or not.

Signed-off-by: Pavel Hrdina <>

45 hours agodomain: Add optional 'tls' attribute for TCP chardev
Pavel Hrdina [Mon, 24 Oct 2016 12:05:54 +0000]
domain: Add optional 'tls' attribute for TCP chardev

Add an optional "tls='yes|no'" attribute for a TCP chardev.

For QEMU, this will allow for disabling the host config setting of the
'chardev_tls' for a domain chardev channel by setting the value to "no" or
to attempt to use a host TLS environment when setting the value to "yes"
when the host config 'chardev_tls' setting is disabled, but a TLS environment
is configured via either the host config 'chardev_tls_x509_cert_dir' or

Signed-off-by: John Ferlan <>
Signed-off-by: Pavel Hrdina <>

45 hours agodomain_conf: remove union for one member from redirdev struct
Pavel Hrdina [Mon, 24 Oct 2016 12:24:51 +0000]
domain_conf: remove union for one member from redirdev struct

Currently the union has only one member so remove that union.  If there
is a need to add a new type of source for new bus in the future this
will force the author to add a union and properly check bus type before
any access to union member.

Signed-off-by: Pavel Hrdina <>

47 hours agodomain_conf: fix memory leak in virDomainDefAddConsoleCompat
Pavel Hrdina [Fri, 21 Oct 2016 19:20:37 +0000]
domain_conf: fix memory leak in virDomainDefAddConsoleCompat

Signed-off-by: Pavel Hrdina <>

47 hours agoqemu: Add TLS hotplug for qemuDomainAttachRNGDevice
John Ferlan [Fri, 21 Oct 2016 14:06:50 +0000]
qemu: Add TLS hotplug for qemuDomainAttachRNGDevice

Commit id '2c322378' missed the nuance that the rng backend could be
using a TCP chardev and if TLS is enabled on the host, thus will need
to have the TLS object added.

47 hours agoqemu: Add TLS hotplug for qemuDomainAttachRedirdevDevice
John Ferlan [Fri, 21 Oct 2016 13:59:53 +0000]
qemu: Add TLS hotplug for qemuDomainAttachRedirdevDevice

Commit id '2c322378' missed the nuance that the redirdev backend could
be using a TCP chardev and if TLS is enabled on the host, thus will need
to have the TLS object added.

47 hours agoqemu: Clean up error path in qemuDomainAttachRedirdevDevice
John Ferlan [Fri, 21 Oct 2016 13:53:30 +0000]
qemu: Clean up error path in qemuDomainAttachRedirdevDevice

It's about to get more complicated - let's alter the logic to handle
various failures. Adds saving of the error as well.

47 hours agoqemu: Introduce qemuDomainGetChardevTLSObjects for hotplug
John Ferlan [Fri, 21 Oct 2016 13:38:18 +0000]
qemu: Introduce qemuDomainGetChardevTLSObjects for hotplug

As it turns out more than one place will need these objects, so rather
than cut-copy-paste in each, make a helper

2 days agoconf: Use virDomainChrSourceDefNew for virDomainRNGDef allocation
John Ferlan [Fri, 21 Oct 2016 22:33:41 +0000]
conf: Use virDomainChrSourceDefNew for virDomainRNGDef allocation

Rather than VIR_ALLOC() the data, use virDomainChrSourceDefNew in order
to get the private data if necessary.

Signed-off-by: John Ferlan <>

2 days agoconf: Use virDomainChrSourceDefPtr for _virDomainRedirdevDef 'source.chr'
John Ferlan [Fri, 21 Oct 2016 22:27:52 +0000]
conf: Use virDomainChrSourceDefPtr for _virDomainRedirdevDef 'source.chr'

Use a pointer and the virDomainChrSourceDefNew() function in order to
allocate the structure for _virDomainRedirdevDef.

Signed-off-by: John Ferlan <>

2 days agoconf: Use virDomainChrSourceDefPtr for _virDomainSmartcardDef 'passthru'
John Ferlan [Fri, 21 Oct 2016 22:08:02 +0000]
conf: Use virDomainChrSourceDefPtr for _virDomainSmartcardDef 'passthru'

Use a pointer and the virDomainChrSourceDefNew() function in order to
allocate the structure for _virDomainSmartcardDef.

Signed-off-by: John Ferlan <>

2 days agoxenFormatXLDisk: Unify commas pattern for arguments
Michal Privoznik [Thu, 20 Oct 2016 13:59:01 +0000]
xenFormatXLDisk: Unify commas pattern for arguments

instead of:

  virBufferAdd(buf, "arg1,");
  virBufferAdd(buf, "arg2");

lets have:

  virBufferAdd(buf, "arg1");
  virBufferAdd(buf, ",arg2");

Because it's better. Consider we want to add conditionally arg3.
With this change, it's simple:

  if (cond)
    virBufferAdd(buf, ",arg3");

with current code there might be a comma hanging at EOL.

Signed-off-by: Michal Privoznik <>

2 days agoqemu: change first arg of qemuDomainAttachChrDeviceAssignAddr()
Laine Stump [Wed, 12 Oct 2016 19:24:57 +0000]
qemu: change first arg of qemuDomainAttachChrDeviceAssignAddr()

from virDomainDefPtr to virDomainObjPtr so that the function has
access to the other parts of the virDomainObjPtr. Take advantage of
this by removing the "priv" arg and retrieving it from the
virDomainObjPtr instead.

No functional change.

2 days agoqemu: make error message in qemuDomainPCIAddressSetCreate more clear.
Laine Stump [Thu, 13 Oct 2016 18:50:23 +0000]
qemu: make error message in qemuDomainPCIAddressSetCreate more clear.

This error should only ever be seen by a developer anyway, but the
existing message made even less sense that this new version.

2 days agoqemu: remove superfluous setting of addrs->nbuses
Laine Stump [Thu, 13 Oct 2016 18:49:12 +0000]
qemu: remove superfluous setting of addrs->nbuses

This is already set by virDomainPCIAddressSetAlloc().

2 days agoconf: add typedef for anonymous enum used for memballoon device model
Laine Stump [Fri, 7 Oct 2016 19:51:30 +0000]
conf: add typedef for anonymous enum used for memballoon device model

For some reason the values of memballoon model are set using an
anonymous enum, making it impossible to perform nice tricks like
demanding there are cases for all possible values in a switch. This
patch turns the anonymous enum into virDomainMemballoonModel.

2 days agoqemu: replace "def->nets[i]" with "net" and "def->sounds[i]" with "sound"
Laine Stump [Wed, 12 Oct 2016 19:01:32 +0000]
qemu: replace "def->nets[i]" with "net" and "def->sounds[i]" with "sound"

More occurences of repeatedly dereferencing the same pointer stored in
an array are replaced with the definition of a temporary pointer that
is then used directly. No functional change.

2 days agoqemu: replace a lot of "def->controllers[i]" with equivalent "cont"
Laine Stump [Tue, 6 Sep 2016 18:35:26 +0000]
qemu: replace a lot of "def->controllers[i]" with equivalent "cont"

There's no functional change here. This pointer was just used so many
times that the extra long lines became annoying.

4 days agoconf: Move the privateData from virDomainChrDef to virDomainChrSourceDef
John Ferlan [Fri, 21 Oct 2016 12:31:37 +0000]
conf: Move the privateData from virDomainChrDef to virDomainChrSourceDef

Commit id '5f2a132786' should have placed the data in the host source
def structure since that's also used by smartcard, redirdev, and rng in
order to provide a backend tcp channel.  The data in the private structure
will be necessary in order to provide the secret properly.

This also renames the previous names from "Chardev" to "ChrSource" for
the private data structures and API's

4 days agoIntroduce virDomainChrSourceDefNew for virDomainChrDefPtr
John Ferlan [Fri, 21 Oct 2016 11:45:54 +0000]
Introduce virDomainChrSourceDefNew for virDomainChrDefPtr

Change the virDomainChrDef to use a pointer to 'source' and allocate
that pointer during virDomainChrDefNew.

This has tremendous "fallout" in the rest of the code which mainly
has to change source.$field to source->$field.

Signed-off-by: John Ferlan <>

4 days agovmx: Use the allocator virDomainChrDefNew
John Ferlan [Fri, 21 Oct 2016 12:09:51 +0000]
vmx: Use the allocator virDomainChrDefNew

Rather than VIR_ALLOC of the virDomainChrDefPtr

4 days agodoc: Describe the VCPU states returned by virsh vcpuinfo
Viktor Mihajlovski [Thu, 13 Oct 2016 11:08:01 +0000]
doc: Describe the VCPU states returned by virsh vcpuinfo

Added a brief description of the VCPU states.

Signed-off-by: Viktor Mihajlovski <>

4 days agoqemuBuildHostNetStr: remove dead code
Ján Tomko [Fri, 14 Oct 2016 14:17:06 +0000]
qemuBuildHostNetStr: remove dead code

This function is never called for VIR_DOMAIN_NET_TYPE_HOSTDEV,
and the dead code comment agrees.

Introduced by commit 1dcbef8a.

4 days agoqemuBuildHostNetStr: do not start options with a comma
Ján Tomko [Fri, 14 Oct 2016 14:23:18 +0000]
qemuBuildHostNetStr: do not start options with a comma

Put the comma at the end and trim it later for consistency.

4 days agoqemuBuildHostNetStr: use type_sep earlier
Ján Tomko [Fri, 14 Oct 2016 13:16:46 +0000]
qemuBuildHostNetStr: use type_sep earlier

When hotplugging networks with ancient QEMUs not supporting
QEMU_CAPS_NETDEV, we use space instead of a comma as the separator
between the network type and other options.

Except for "user", all the network types pass other options
and use up the first separator by the time we get to the section
that adds the alias (or vlan for QEMUs without CAPS_NETDEV).

Since the alias/vlan is mandatory, convert all preceding code to add
the separator at the end, removing the need to rewrite type_sep for
all types but NET_TYPE_USER.

4 days agovz: set something in disk driver name
Nikolay Shirokovskiy [Thu, 22 Sep 2016 14:55:42 +0000]
vz: set something in disk driver name

Absent driver name attribute is invalid xml. Which in turn makes
unusable 'virsh edit' for example. The value does not make
much sense and ignored on input so nobody will hurt.

4 days agovz: add serial number to disk devices
Nikolay Shirokovskiy [Thu, 22 Sep 2016 14:55:41 +0000]
vz: add serial number to disk devices

vz sdk supports setting serial number only for disk devices.
Getting serial upon cdrom(for example) is error however
setting is just ignored. Let's check for disk device
explicitly for clarity in both cases.

Setting serial number for other devices is ignored
with an info note just as before.

We need usual conversion from "" to NULL in direction
vz sdk -> libvirt, because "" is not valid for libvirt
and "" means unspecifiend in vz sdk which is NULL for libvirt.

4 days agobhyve: Need to add parameter to virDomainChrDefNew
John Ferlan [Fri, 21 Oct 2016 11:52:26 +0000]
bhyve: Need to add parameter to virDomainChrDefNew

Commit id '5f2a13278' missed this one.

Signed-off-by: John Ferlan <>

5 days agovz: set localhost as vnc address
Mikhail Feoktistov [Tue, 18 Oct 2016 16:19:04 +0000]
vz: set localhost as vnc address

We should set localhost as vnc address in case of empty string.
Because Virtuozzo sets as default vnc address.

5 days agovirt-wireshark.m4: Defer $(prefix) substitution
Michal Privoznik [Thu, 20 Oct 2016 02:25:13 +0000]
virt-wireshark.m4: Defer $(prefix) substitution

The autoconf manual says we shouldn't be using this variable (and
some others) outside of Makefiles as it prevents users providing
their own prefix at the installation phase.

Signed-off-by: Michal Privoznik <>

6 days agonetworkValidate: Forbid new-line char in network name
Sławek Kapłoński [Wed, 19 Oct 2016 20:57:48 +0000]
networkValidate: Forbid new-line char in network name

New line character in name of network is now forbidden because it
mess virsh output and can be confusing for users.  Validation of
name is done in network driver, after parsing XML to avoid
problems with disappeared network which was already created with
new-line char in name.

Signed-off-by: Michal Privoznik <>

6 days agonetwork: Use new util function to check name
Sławek Kapłoński [Wed, 19 Oct 2016 20:57:47 +0000]
network: Use new util function to check name

New util function virXMLCheckIllegalChars is now used to test if
parsed network contains illegal char '/' in it's name.

Signed-off-by: Michal Privoznik <>

6 days agovirxml: Add function to check if string contains some illegal chars
Sławek Kapłoński [Wed, 19 Oct 2016 20:57:46 +0000]
virxml: Add function to check if string contains some illegal chars

This new function can be used to check if e.g. name of XML
node don't contains forbidden chars like "/" or "\n".

Signed-off-by: Michal Privoznik <>

6 days agoqemu: Introduce qemuDomainChardevPrivatePtr
John Ferlan [Fri, 17 Jun 2016 10:36:11 +0000]
qemu: Introduce qemuDomainChardevPrivatePtr

Modeled after the qemuDomainHostdevPrivatePtr (commit id '27726d8c'),
create a privateData pointer in the _virDomainChardevDef to allow storage
of private data for a hypervisor in order to at least temporarily store
secret data for usage during qemuBuildCommandLine.

NB: Since the qemu_parse_command (qemuParseCommandLine) code is not
expecting to restore the secret data, there's no need to add code
code to handle this new structure there.

Signed-off-by: John Ferlan <>

6 days agoconf: Introduce {default|chardev}_tls_x509_secret_uuid
John Ferlan [Thu, 8 Sep 2016 14:04:59 +0000]
conf: Introduce {default|chardev}_tls_x509_secret_uuid

Add a new qemu.conf variables to store the UUID for the secret that could
be used to present credentials to access the TLS chardev.  Since this will
be a server level and it's possible to use some sort of default, introduce
both the default and chardev logic at the same time making the setting of
the chardev check for it's own value, then if not present checking whether
the default value had been set.

Signed-off-by: John Ferlan <>

6 days agoxl: fix 8126d870 broken test
Cédric Bosdonnat [Wed, 19 Oct 2016 18:51:15 +0000]
xl: fix 8126d870 broken test

xlconfigtest expects the comma, don't clean it up even if there is
no target to write.

6 days agospec: Drop support for Fedora < 23
Andrea Bolognani [Wed, 19 Oct 2016 14:49:17 +0000]
spec: Drop support for Fedora < 23

We only claim support for OSs that are still supported by the
respective vendors, which means anything older than Fedora 23
is out. Reword the comment a bit to highlight the criteria.

6 days agoxl: don't output (null) target in domxml-to-native
Cédric Bosdonnat [Mon, 17 Oct 2016 07:57:22 +0000]
xl: don't output (null) target in domxml-to-native

When converting a domain xml containing a CDROM device without
any attached source, don't add a target=(null) to the libxl config
disk definition: xen doesn't like it at all and would fail to start
the domain.

7 days agoqemu: always generate the same alias for tls-creds-x509 object
Pavel Hrdina [Tue, 18 Oct 2016 13:33:00 +0000]
qemu: always generate the same alias for tls-creds-x509 object

There was inconsistency between alias used to create tls-creds-x509
object and alias used to link that object to chardev while hotpluging.
Hotplug ends with this error:

  error: Failed to detach device from channel-tcp.xml
  error: internal error: unable to execute QEMU command 'chardev-add':
  No TLS credentials with id 'objcharchannel3_tls0'

In XML we have for example alias "serial0", but on qemu command line we
generate "charserial0".

The issue was that code, that creates QMP command to hotplug chardev
devices uses only the second alias "charserial0" and that alias is also
used to link the tls-creds-x509 object.

This patch unifies the aliases for tls-creds-x509 to be always generated
from "charserial0".

Signed-off-by: Pavel Hrdina <>

7 days agoqemu_command: create prefixed alias to separate variable
Pavel Hrdina [Tue, 18 Oct 2016 13:27:32 +0000]
qemu_command: create prefixed alias to separate variable

Instead of typing the prefix every time we want to append parameters
to qemu command line use a variable that contains prefixed alias.

Signed-off-by: Pavel Hrdina <>

7 days agoqemu_alias: introduce qemuAliasChardevFromDevAlias helper
Pavel Hrdina [Tue, 18 Oct 2016 14:37:23 +0000]
qemu_alias: introduce qemuAliasChardevFromDevAlias helper

Signed-off-by: Pavel Hrdina <>

7 days agoqemu_hotplug: fix crash in hot(un)plugging chardev devices
Pavel Hrdina [Tue, 18 Oct 2016 06:59:14 +0000]
qemu_hotplug: fix crash in hot(un)plugging chardev devices

We need to make sure that the chardev is TCP.  Without this check we
may access different part of union and corrupt pointers.

Signed-off-by: Pavel Hrdina <>

8 days agoqemu: Remove unnecessary NULL arg check
John Ferlan [Mon, 17 Oct 2016 14:46:00 +0000]
qemu: Remove unnecessary NULL arg check

qemuDomainSecret{Disk|Hostdev}Prepare has a prototype that checks for
ATTRIBUTE_NONNULL(1) for 'conn'.

Signed-off-by: John Ferlan <>

8 days agoqemu: Add 'verify-peer=yes' test for chardev TCP TLS
John Ferlan [Mon, 17 Oct 2016 15:31:43 +0000]
qemu: Add 'verify-peer=yes' test for chardev TCP TLS

Missing the option to set verify-peer to yes

Signed-off-by: John Ferlan <>

8 days agoqemu: Remove unnecessary cfg fetch/unref
John Ferlan [Mon, 17 Oct 2016 14:44:11 +0000]
qemu: Remove unnecessary cfg fetch/unref

qemuProcessPrepareDomain has no need to fetch/unref the cfg, so remove it.

Signed-off-by: John Ferlan <>

9 days agoconf: Explain some code in more detail
Andrea Bolognani [Wed, 12 Oct 2016 15:02:37 +0000]
conf: Explain some code in more detail

The code is entirely correct, but it still managed to trip me
up when I first ran into it because I did not realize right away
that VIR_PCI_CONNECT_TYPES_ENDPOINT was not a single flag, but
rather a mask including both VIR_PCI_CONNECT_TYPE_PCI_DEVICE and

In order to save the next distracted traveler in PCI Address Land
some time, document this fact with a comment. Add a test case for
the behavior as well.

11 days agoconf: restrict what type of buses will accept a pci-bridge
Laine Stump [Sun, 7 Aug 2016 21:13:58 +0000]
conf: restrict what type of buses will accept a pci-bridge

A pci-bridge has *almost* the same rules as a legacy PCI endpoint
device for where it can be automatically connected, and until now both
had been considered identical. There is one pairing that is okay when
specifically requested by the user (i.e. manual assignment), but we
want to avoid it when auto-assigning addresses - plugging a pci-bridge
directly into pcie-root (it is cleaner to plug in a dmi-to-pci-bridge,
then plug the pci-bridge into that).

In order to allow that difference, this patch makes a separate
CONNECT_TYPE for pci-bridge, and uses it to restrict auto-assigned
addresses for pci-bridges to be only on pci-root, pci-expander-bus,
dmi-to-pci-bridge, or on another pci-bridge.

NB: As with other discouraged-but-seem-to-work configurations
(e.g. plugging a legacy PCI device into a pcie-root-port) if someone
*really* wants to, they can still force a pci-bridge to be plugged
into pcie-root (by manually specifying its PCI address.)

12 days agoutil: Alter return value of virReadFCHost and fix mem leak
John Ferlan [Tue, 11 Oct 2016 15:21:19 +0000]
util: Alter return value of virReadFCHost and fix mem leak

Rather than return a 0 or -1 and the *result string, return just the result
string to the caller.  Alter all the callers to handle the different return.

As a side effect or result of this, it's much clearer that we cannot just
assign the returned string into the scsi_host wwnn, wwpn, and fabric_wwn
fields - rather we should fetch a temporary string, then as long as our
fetch was good, VIR_FREE what may have been there, and STEAL what we just got.
This fixes a memory leak in the virNodeDeviceCreateXML code path through
find_new_device and nodeDeviceLookupSCSIHostByWWN which will continually
call nodeDeviceSysfsGetSCSIHostCaps until the expected wwnn/wwpn is found
in the device object capabilities.

Signed-off-by: John Ferlan <>

12 days agoconf: Honour flags in virDomainPanicDefParseXML
Martin Kletzander [Thu, 13 Oct 2016 07:56:14 +0000]
conf: Honour flags in virDomainPanicDefParseXML

Without them we're keeping <alias/> even for inactive XML.

Signed-off-by: Martin Kletzander <>

12 days agoschema: Allow alias for panic device
Martin Kletzander [Thu, 13 Oct 2016 07:55:27 +0000]
schema: Allow alias for panic device

As with all other devices, it's not part of 'address'.

Signed-off-by: Martin Kletzander <>

12 days agoqemu_hotplug: Support interface type of vhost-user hotplug
Michal Privoznik [Mon, 15 Aug 2016 16:01:55 +0000]
qemu_hotplug: Support interface type of vhost-user hotplug

There are couple of things that needs to be done in order to
allow vhost-user hotplug. Firstly, vhost-user requires a chardev
which is connected to vhost-user bridge and through which qemu
communicates with the bridge (no acutal guest traffic is sent
through there, just some metadata). In order to generate proper
chardev alias, we must assign device alias way sooner.

Then, because we are plugging the chardev first, we need to do
the proper undo if something fails - that is remove netdev too.
We don't want anything to be left over in case attach fails at
some point.

Signed-off-by: Michal Privoznik <>

12 days agoqemuBuildHostNetStr: Support VIR_DOMAIN_NET_TYPE_VHOSTUSER
Michal Privoznik [Tue, 16 Aug 2016 10:55:02 +0000]

So far, this function lacked support for
VIR_DOMAIN_NET_TYPE_VHOSTUSER leaving callers to hack around the
problem by constructing the command line on their own. This is
not ideal as it blocks hot plug support.

Signed-off-by: Michal Privoznik <>

12 days agoqemuBuildVhostuserCommandLine: Unify -netdev creation
Michal Privoznik [Tue, 16 Aug 2016 10:21:49 +0000]
qemuBuildVhostuserCommandLine: Unify -netdev creation

Currently, what we do for vhost-user network is generate the
following part of command line:

-netdev type=vhost-user,id=hostnet0,chardev=charnet0

There's no need for 'type=' it is the default. Drop it.

Signed-off-by: Michal Privoznik <>

12 days agoqemuBuildVhostuserCommandLine: Reuse qemuBuildChrChardevStr
Michal Privoznik [Mon, 15 Aug 2016 14:15:44 +0000]
qemuBuildVhostuserCommandLine: Reuse qemuBuildChrChardevStr

There's no need to reinvent the wheel here. We already have a
function to format virDomainChrSourceDefPtr. It's called
qemuBuildChrChardevStr(). Use that instead of some dummy

Signed-off-by: Michal Privoznik <>

12 days agoqemuBuildChrChardevStr: Introduce @nowait argument
Michal Privoznik [Tue, 16 Aug 2016 11:06:46 +0000]
qemuBuildChrChardevStr: Introduce @nowait argument

This alone makes not much sense. But the aim is to reuse this
function in qemuBuildVhostuserCommandLine() where 'nowait' is not
supported for vhost-user devices.

Signed-off-by: Michal Privoznik <>

12 days agoqemuBuildHostNetStr: Explicitly enumerate net types
Michal Privoznik [Tue, 16 Aug 2016 06:48:04 +0000]
qemuBuildHostNetStr: Explicitly enumerate net types

We tend to prevent using 'default' in switches. And it is for a
good reason - control may end up in paths we wouldn't want for
new values. In this specific case, if qemuBuildHostNetStr is
called over VIR_DOMAIN_NET_TYPE_VHOSTUSER it would produce
meaningless output. Fortunately, there no such call yet.

Signed-off-by: Michal Privoznik <>

12 days agoqemuDomainAttachNetDevice: Explicitly list allowed types for hotplug
Michal Privoznik [Mon, 26 Sep 2016 09:53:58 +0000]
qemuDomainAttachNetDevice: Explicitly list allowed types for hotplug

Instead of blindly claim support for hot-plugging of every
interface type out there we should copy approach we have for
device types: white listing supported types and explicitly error
out on unsupported ones.
For instance, trying to hotplug vhostuser interface results in
nothing usable from guest currently. vhostuser typed interfaces
require additional work on our side.

Signed-off-by: Michal Privoznik <>

12 days agoqemuDomainAttachNetDevice: Move hostdev handling a bit further
Michal Privoznik [Mon, 26 Sep 2016 09:41:36 +0000]
qemuDomainAttachNetDevice: Move hostdev handling a bit further

The idea is to have function that does some checking at its
beginning and then have one big switch for all the interface
types it supports.

Signed-off-by: Michal Privoznik <>

12 days agoqemuBuildInterfaceCommandLine: Move from if-else forest to switch
Michal Privoznik [Mon, 26 Sep 2016 09:05:00 +0000]
qemuBuildInterfaceCommandLine: Move from if-else forest to switch

Signed-off-by: Michal Privoznik <>

12 days agoqemuBuildInterfaceCommandLine: Move vhostuser handling a bit further
Michal Privoznik [Mon, 26 Sep 2016 08:32:44 +0000]
qemuBuildInterfaceCommandLine: Move vhostuser handling a bit further

The idea is to have function that does some checking of the
arguments at its beginning and then have one big switch for all
the interface types it supports. Each one of them generating the
corresponding part of the command line.

Signed-off-by: Michal Privoznik <>

12 days agoqemuBuildInterfaceCommandLine: Move hostdev handling a bit further
Michal Privoznik [Mon, 26 Sep 2016 07:54:26 +0000]
qemuBuildInterfaceCommandLine: Move hostdev handling a bit further

The idea is to have function that does some checking of the
arguments at its beginning and then have one big switch for all
the interface types it supports. Each one of them generating the
corresponding part of the command line.

Signed-off-by: Michal Privoznik <>

12 days agovirDomainNetGetActualType: Return type is virDomainNetType
Michal Privoznik [Fri, 23 Sep 2016 15:04:53 +0000]
virDomainNetGetActualType: Return type is virDomainNetType

This function for some weird reason returns integer instead of
virDomainNetType type. It is important to return the correct type
so that we know what values we can expect.

Signed-off-by: Michal Privoznik <>

12 days agovirDomainNetDefParseXML: Realign
Michal Privoznik [Mon, 26 Sep 2016 09:06:43 +0000]
virDomainNetDefParseXML: Realign

There are couple of formatting issues. No functional change

Signed-off-by: Michal Privoznik <>

12 days agovirLogDefineOutputs: Fix build without syslog.h
Michal Privoznik [Fri, 14 Oct 2016 02:09:03 +0000]
virLogDefineOutputs: Fix build without syslog.h

Not every system out there has syslog, that's why we check for it
in our configure script. However, in 640b58abdf while fixing
another issue, some variables and functions are called that are
defined only when syslog.h is present. But these function
calls/variables were not guarded by #ifdef-s.

Signed-off-by: Michal Privoznik <>

12 days agoschema: smbios: allow any strings
Peter Krempa [Mon, 10 Oct 2016 15:49:03 +0000]
schema: smbios: allow any strings

The smbios docs allow any string to be passed and libvirt does not
really do any validation on them. Allow passing any string.

Partially resolves:

12 days agoqemu: command: escape smbios entry strings
Peter Krempa [Mon, 10 Oct 2016 04:26:50 +0000]
qemu: command: escape smbios entry strings

We pass free-form strings from the users to qemu, thus we need escape
commas since they are passed to qemu monitor.

Partially resolves:

12 days agoqemu: command: Don't bother reporting errors in smbios formatters
Peter Krempa [Mon, 10 Oct 2016 04:03:57 +0000]
qemu: command: Don't bother reporting errors in smbios formatters

qemuBuildSmbiosBiosStr and qemuBuildSmbiosSystemStr return NULL if
there's nothing to format on the commandline. Reporting errors from
buffer creation doesn't make sense since it would be ignored.

12 days agoqemu: command: Fix up coding style of smbios commandine formatters
Peter Krempa [Mon, 10 Oct 2016 04:01:25 +0000]
qemu: command: Fix up coding style of smbios commandine formatters

13 days agosrc: Treat PID as signed
Michal Privoznik [Thu, 6 Oct 2016 14:54:41 +0000]
src: Treat PID as signed

This initially started as a fix of some debug printing in
virCgroupDetect. However it turned out that other places suffer
from the similar problem. While dealing with pids, esp. in cases
where we cannot use pid_t for ABI stability reasons, we often
chose an unsigned integer type. This makes no sense as pid_t is
Also, new syntax-check rule is introduced so we won't repeat this

Signed-off-by: Michal Privoznik <>

13 days agovirsh: Be explicit that vol-resize is an offline operation.
Ivan Baldo [Tue, 11 Oct 2016 20:13:57 +0000]
virsh: Be explicit that vol-resize is an offline operation.

It is stated in the manual already, so let's mention the same thing in
the description to avoid causing problems.

Signed-off-by: Martin Kletzander <>

13 days agotestNodeGetCellsFreeMemory: Fix off by one error
Michal Privoznik [Thu, 15 Sep 2016 15:42:36 +0000]
testNodeGetCellsFreeMemory: Fix off by one error

Consider the following scenario:

  virsh # freecell --all
      0:       2048 KiB
      1:       4096 KiB
  Total:       6144 KiB

  virsh # freecell 0
  0: 2048 KiB

  virsh # freecell 1
  1: 4096 KiB

And now before this change:

  virsh # freecell 2

After this change:

  virsh # freecell 2
  error: invalid argument: Range exceeds available cells

Signed-off-by: Michal Privoznik <>

13 days agotestOpenDefault: Rename loop variable
Michal Privoznik [Thu, 15 Sep 2016 15:10:15 +0000]
testOpenDefault: Rename loop variable

We have inclination to calling our loop variables i, j, k, not u.

Signed-off-by: Michal Privoznik <>

13 days agovirsh: Fix typos in manpage
Nitesh Konkar [Mon, 10 Oct 2016 14:07:14 +0000]
virsh: Fix typos in manpage

Signed-off-by: Nitesh Konkar <>

13 days agovirsh: Fix commas in manpage to enhance readability.
Nitesh Konkar [Mon, 10 Oct 2016 14:07:13 +0000]
virsh: Fix commas in manpage to enhance readability.

Signed-off-by: Nitesh Konkar <>

13 days agoqemu_command: add support to use virtio as secondary video device
Pavel Hrdina [Mon, 10 Oct 2016 18:19:06 +0000]
qemu_command: add support to use virtio as secondary video device


Signed-off-by: Pavel Hrdina <>

13 days agoqemu_command: introduce enum of secondary models for video device
Pavel Hrdina [Wed, 12 Oct 2016 15:39:02 +0000]
qemu_command: introduce enum of secondary models for video device

There are two video devices with models without VGA compatibility mode.
They are primary used as secondary video devices, but in some cases it
is required to use them also as primary video devices.

Signed-off-by: Pavel Hrdina <>

13 days agoqemu_command: cleanup qemuBuildVideoCommandLine
Pavel Hrdina [Tue, 11 Oct 2016 15:20:39 +0000]
qemu_command: cleanup qemuBuildVideoCommandLine

Signed-off-by: Pavel Hrdina <>