]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
7 years agoqemu: switch s390/s390x default console back to serial
Pino Toscano [Tue, 14 Nov 2017 17:00:30 +0000 (18:00 +0100)]
qemu: switch s390/s390x default console back to serial

Now that <serial> and <console> on s390/s390x behave a bit more like the
other architectures, remove this extra differentation, and use sclp
console by default for new guests.  New virtio consoles can still be
added, and it is actually needed because of the limited number of
instances for sclp and sclplm.

This reverts commit b1c88c14764e0b043a269d454a83a6ac7af34eac, whose
reasons are not totally clear.

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Bjoern Walk <bwalk@linux.vnet.ibm.com>
7 years agoconf: add VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP
Pino Toscano [Tue, 14 Nov 2017 15:27:04 +0000 (16:27 +0100)]
conf: add VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP

Introduce specific a target types with two models for the console
devices (sclp and sclplm) used in s390 and s390x guests, so isa-serial
is no more used for them.

This makes <serial> usable on s390 and s390x guests, with at most only
a single sclpconsole and one sclplmconsole devices usable in a single
guest (due to limitations in QEMU, which will enforce already at
runtime).

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

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Add target type and model for pl011
Andrea Bolognani [Thu, 9 Nov 2017 16:14:57 +0000 (17:14 +0100)]
conf: Add target type and model for pl011

We can finally introduce a specific target model for the pl011 device
used by mach-virt guests, which means isa-serial will no longer show
up to confuse users.

We make sure migration works in both directions by interpreting the
isa-serial target type, or the lack of target type, appropriately
when parsing the guest XML, and skipping the newly-introduced type
when formatting if for migration. We also verify that pl011 is not
used for non-mach-virt guests and add a bunch of test cases.

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

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Support usb-serial and pci-serial on pSeries
Andrea Bolognani [Fri, 10 Nov 2017 16:57:53 +0000 (17:57 +0100)]
qemu: Support usb-serial and pci-serial on pSeries

The existing implementation set the address type for all serial
devices to spapr-vio, which made it impossible to use other devices
such as usb-serial and pci-serial; moreover, some decisions were
made based on the address type rather than the device type.

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

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Add target type and model for spapr-vty
Andrea Bolognani [Wed, 8 Nov 2017 14:31:21 +0000 (15:31 +0100)]
conf: Add target type and model for spapr-vty

We can finally introduce a specific target model for the spapr-vty
device used by pSeries guests, which means isa-serial will no longer
show up to confuse users.

We make sure migration works in both directions by interpreting the
isa-serial target type, or the lack of target type, appropriately
when parsing the guest XML, and skipping the newly-introduced type
when formatting if for migration. We also verify that spapr-vty is
not used for non-pSeries guests and add a bunch of test cases.

This commit is best viewed with 'git show -w'.

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

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Remove redundancy in qemuBuildSerialChrDeviceStr()
Andrea Bolognani [Sun, 26 Nov 2017 11:30:10 +0000 (12:30 +0100)]
qemu: Remove redundancy in qemuBuildSerialChrDeviceStr()

Instead duplicating the capability check for each possible target
model, introduce a small helper that matches the target model with
the corresponding capability and collapse all existing checks into
a single one.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Format targetModel for serial devices
Andrea Bolognani [Tue, 21 Nov 2017 13:14:16 +0000 (14:14 +0100)]
qemu: Format targetModel for serial devices

Now that we've created a distinction between target type and target
model, with the latter being the concrete device name, it's time to
switch to formatting the model instead of the type.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Validate target model for serial devices
Andrea Bolognani [Mon, 20 Nov 2017 19:03:20 +0000 (20:03 +0100)]
qemu: Validate target model for serial devices

Target model and target type must agree for the configuration
to make sense, so check that's actually the case and error out
otherwise.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Set targetModel based on targetType for serial devices
Andrea Bolognani [Mon, 20 Nov 2017 12:02:30 +0000 (13:02 +0100)]
qemu: Set targetModel based on targetType for serial devices

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Parse and format virDomainChrSerialTargetModel
Andrea Bolognani [Mon, 20 Nov 2017 11:05:17 +0000 (12:05 +0100)]
conf: Parse and format virDomainChrSerialTargetModel

This information will be used to select, and store in the guest
configuration in order to guarantee ABI stability, the concrete
(hypervisor-specific) model for serial devices.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Improve qemuDomainChrTargetDefValidate()
Andrea Bolognani [Fri, 24 Nov 2017 16:52:26 +0000 (17:52 +0100)]
qemu: Improve qemuDomainChrTargetDefValidate()

Instead of validating each target type / address type combination
separately, create a small helper to perform the matching and
collapse all existing checks into a single one.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Introduce qemuDomainChrTargetDefValidate()
Andrea Bolognani [Mon, 20 Nov 2017 18:46:10 +0000 (19:46 +0100)]
qemu: Introduce qemuDomainChrTargetDefValidate()

Instead of waiting until we get to command line generation, we can
validate the target for a char device much earlier.

Move all the checks out of qemuBuildSerialChrDeviceStr() and into
the new fuction. This will later allow us to validate the target
for platform devices.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Remove ATTRIBUTE_FALLTHROUGH from virDomainChrTargetDefFormat()
Andrea Bolognani [Tue, 21 Nov 2017 12:03:19 +0000 (13:03 +0100)]
conf: Remove ATTRIBUTE_FALLTHROUGH from virDomainChrTargetDefFormat()

Formatting the <target/> element for serial devices will become a
bit more complicated later on, and leaving the fallthrough behavior
there would do nothing but complicate it further.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Improve virDomainChrTargetDefFormat()
Andrea Bolognani [Mon, 20 Nov 2017 17:38:18 +0000 (18:38 +0100)]
conf: Improve virDomainChrTargetDefFormat()

Make the switch statement type-aware, avoid calling
virDomainChrTargetTypeToString() more than once and check its
return value before using it.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Check virDomainChrSourceDefFormat() return value
Andrea Bolognani [Thu, 23 Nov 2017 16:50:59 +0000 (17:50 +0100)]
conf: Check virDomainChrSourceDefFormat() return value

The function can fail, but none of the caller were accounting
for that.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Improve error handling in virDomainChrDefFormat()
Andrea Bolognani [Mon, 20 Nov 2017 17:07:20 +0000 (18:07 +0100)]
conf: Improve error handling in virDomainChrDefFormat()

We don't need to store the return value since we never modify it.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Introduce virDomainChrTargetDefFormat()
Andrea Bolognani [Mon, 20 Nov 2017 17:02:56 +0000 (18:02 +0100)]
conf: Introduce virDomainChrTargetDefFormat()

Move formatting of the <target/> element for char devices out of
virDomainChrDefFormat() and into its own function.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Drop virDomainChrDeviceType.targetTypeAttr
Andrea Bolognani [Fri, 10 Nov 2017 13:54:19 +0000 (14:54 +0100)]
conf: Drop virDomainChrDeviceType.targetTypeAttr

This attribute was used to decide whether to format the type
attribute of the <target> element, but the logic didn't take into
account all possible cases and as such could lead to unexpected
results. Moreover, it's one more thing to keep track of, and can
easily fall out of sync with other attributes.

Now that we have VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE, we can
use that value to signal that no specific target type has been
configured for the serial device and as such the attribute should
not be formatted at all. All other values are now formatted.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Introduce VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE
Andrea Bolognani [Fri, 10 Nov 2017 12:41:06 +0000 (13:41 +0100)]
conf: Introduce VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE

This is the first step in getting rid of the assumption that
isa-serial is the default target type for serial devices.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoconf: Run devicePostParse() again for the first serial device
Andrea Bolognani [Wed, 8 Nov 2017 16:40:13 +0000 (17:40 +0100)]
conf: Run devicePostParse() again for the first serial device

The devicePostParse() callback is invoked for all devices so that
drivers have a chance to set their own specific values; however,
virDomainDefAddImplicitDevices() runs *after* the devicePostParse()
callbacks have been invoked and can add new devices, in which case
the driver wouldn't have a chance to customize them.

Work around the issue by invoking the devicePostParse() callback
after virDomainDefAddImplicitDevices(), only for the first serial
devices, which might have been added by it. The same was already
happening for the first video device for the very same reason.

This will become important later on, when we will change
virDomainDefAddConsoleCompat() not to set a targetType for
automatically added serial devices.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Introduce qemuDomainChrDefPostParse()
Andrea Bolognani [Wed, 8 Nov 2017 14:40:42 +0000 (15:40 +0100)]
qemu: Introduce qemuDomainChrDefPostParse()

Having a separate function for char device handling is better than
adding even more code to qemuDomainDeviceDefPostParse().

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
7 years agodocs: Improve documentation for serial consoles
Andrea Bolognani [Wed, 15 Nov 2017 16:15:15 +0000 (17:15 +0100)]
docs: Improve documentation for serial consoles

Our current documentation is missing some information and doesn't
do a great job at explaining how the <serial> and <console> elements
are connected. Let's try to fix that.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agonews: Document qemu image locking
Peter Krempa [Thu, 23 Nov 2017 18:32:02 +0000 (19:32 +0100)]
news: Document qemu image locking

7 years agovirsh: Fix virsh prompt when connection changes to readonly mode.
Julio Faracco [Mon, 27 Nov 2017 00:18:11 +0000 (22:18 -0200)]
virsh: Fix virsh prompt when connection changes to readonly mode.

This commit fixes the virsh prompt when reconnection to the same URI is
called: `virsh # connect --readonly` (Reconnect). The problem is
happening because the code is considering URI (name) as a mandatory
parameter to change the prompt. This commit remove the assignment into
`priv->readonly` from `if (name)` conditional.

Before:
    virsh # uri
    qemu:///system

    virsh # connect --readonly

    virsh #

After:
    virsh # uri
    qemu:///system

    virsh # connect --readonly

    virsh >

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

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
7 years agodocs: Add news article to describe iSCSI usage of secret object
John Ferlan [Thu, 5 Oct 2017 12:57:41 +0000 (08:57 -0400)]
docs: Add news article to describe iSCSI usage of secret object

7 years agodocs: Add news article regarding auth/encryption placement
John Ferlan [Wed, 4 Oct 2017 13:16:21 +0000 (09:16 -0400)]
docs: Add news article regarding auth/encryption placement

7 years agoqemu: Use secret objects to pass iSCSI passwords
John Ferlan [Fri, 15 Sep 2017 17:17:59 +0000 (13:17 -0400)]
qemu: Use secret objects to pass iSCSI passwords

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

The blockdev-add code provides a mechanism to sanely provide user
and password-secret arguments for iscsi without placing them on the
command line to be viewable by a 'ps -ef' type command or needing
to create separate -iscsi devices for each disk/volume found.

So modify the iSCSI command line building to check for the presence
of the capability in order properly setup and use the domain master
secret object to encrypt the password in a secret object and alter
the parameters for the command line to utilize.

Modify the xml2argvtest to exhibit the syntax for both disk and
hostdev configurations.

7 years agoqemu: Get capabilities to use iscsi password-secret argument
John Ferlan [Fri, 1 Sep 2017 19:09:29 +0000 (15:09 -0400)]
qemu: Get capabilities to use iscsi password-secret argument

Detect the capability via the query-qmp-schema for blockdev-add
to find the 'password-secret' parameter that will allow the iSCSI
code to use the master secret object to encrypt the secret for an
and only need to provide the object id of the secret on the command
line thus obsfuscating the passphrase.

7 years agoqemu: Refactor qemuBuildSCSIiSCSIHostdevDrvStr slightly
John Ferlan [Sun, 24 Sep 2017 13:35:34 +0000 (09:35 -0400)]
qemu: Refactor qemuBuildSCSIiSCSIHostdevDrvStr slightly

Rather than building the "file" string in qemuBuildSCSIHostdevDrvStr
build it in the called helper.

7 years agoqemu: Remove private hostdev
John Ferlan [Sat, 23 Sep 2017 11:03:50 +0000 (07:03 -0400)]
qemu: Remove private hostdev

Since it's not longer used to shuttle the @secinfo, let's remove
the private hostdev completely.

7 years agoqemu: Use private storage source for iscsi instead of private hostdev
John Ferlan [Sat, 23 Sep 2017 11:03:10 +0000 (07:03 -0400)]
qemu: Use private storage source for iscsi instead of private hostdev

Rather than placing/using privateData about secinfo in the hostdev,
let's use the virStorageSource private data instead.

7 years agoconf,qemu: Replace iscsisrc fields with virStorageSourcePtr
John Ferlan [Fri, 22 Sep 2017 19:18:22 +0000 (15:18 -0400)]
conf,qemu: Replace iscsisrc fields with virStorageSourcePtr

Rather than picking apart the two pieces we need/want (path, hosts,
and auth)- let's allocate/use a virStorageSourcePtr for iSCSI storage.

The end result is that qemuBuildSCSIiSCSIHostdevDrvStr doesn't need
to "fake" one for the qemuBuildNetworkDriveStr call.

7 years agoqemu: Properly label and create evdev on input device hotplug
Ján Tomko [Tue, 21 Nov 2017 12:56:37 +0000 (13:56 +0100)]
qemu: Properly label and create evdev on input device hotplug

Utilize all the newly introduced function to create the evdev node
and label it on hotplug and destroy it on hotunplug.

This was forgotten in commits bc9ffaf and 67486bb.

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

7 years agoqemu: functions for dealing with input device namespaces and labels
Ján Tomko [Tue, 21 Nov 2017 12:55:12 +0000 (13:55 +0100)]
qemu: functions for dealing with input device namespaces and labels

Introudce functions that will let us create the evdevs in namespaces
and label the devices on input device hotplug/hotunplug.

7 years agoqemu: Introduce functions for input device cgroup manipulation
Ján Tomko [Tue, 21 Nov 2017 12:33:07 +0000 (13:33 +0100)]
qemu: Introduce functions for input device cgroup manipulation

Export qemuSetupInputCgroup and introduce qemuTeardownInputCgroup
for hotunplug.

7 years agosecurity: Introduce functions for input device hot(un)plug
Ján Tomko [Tue, 21 Nov 2017 12:31:53 +0000 (13:31 +0100)]
security: Introduce functions for input device hot(un)plug

Export the existing DAC and SELinux for separate use and introduce
functions for stack, nop and the security manager.

7 years agoIntroduce virDomainInputDefGetPath
Ján Tomko [Tue, 21 Nov 2017 12:28:28 +0000 (13:28 +0100)]
Introduce virDomainInputDefGetPath

Use it to denadify qemuDomainSetupInput.

7 years agos390: qemu-capabilities: Avoid error message when missing non-kvm host cpu info
Jason J. Herne [Fri, 24 Nov 2017 08:02:02 +0000 (09:02 +0100)]
s390: qemu-capabilities: Avoid error message when missing non-kvm host cpu info

Libvirt prints an error on startup when it is missing host cpu model
information for any queried qemu binary. On s390 we only have host cpu model
information for kvm enabled qemu instances. So when virt type is not kvm, this
is actually not an error on s390.

This patch adds virt type as a parameter to virQEMUCapsInitCPUModelS390, and a
new return code 2 for virQEMUCapsInitCPUModel and virQEMUCapsInitCPUModelS390.
If the virt type is not kvm then we skip printing the scary error message
and return 2 because this case is actually expected behavior. The new return
code is meant to differentiate between the failure case and the case where we
simply expect the cpu model information to be unattainable.

Signed-off-by: Jason J. Herne <jjherne@linux.vnet.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
7 years agostorage: Fix broken storage_driver build
John Ferlan [Fri, 24 Nov 2017 14:42:07 +0000 (09:42 -0500)]
storage: Fix broken storage_driver build

Commit id '5d5c732d7' had an incorrect assignment and was found
by travis build:

storage/storage_driver.c:1668:14: error: equality comparison with extraneous
      parentheses [-Werror,-Wparentheses-equality]
    if ((obj == virStoragePoolObjListSearch(&driver->pools,

         ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

7 years agostorage: Convert virStoragePoolObj into virObjectLockable
John Ferlan [Mon, 9 Oct 2017 10:19:37 +0000 (06:19 -0400)]
storage: Convert virStoragePoolObj into virObjectLockable

Now that we're moved the object into virstorageobj, let's make the
code use the lockable object.

7 years agostorage: Introduce virStoragePoolObjListSearch
John Ferlan [Sun, 8 Oct 2017 12:44:31 +0000 (08:44 -0400)]
storage: Introduce virStoragePoolObjListSearch

Create an API to search through the storage pool objects looking for
a specific truism from a callback API in order to return the specific
storage pool object that is desired.

7 years agostorage: Introduce virStoragePoolObjListForEach
John Ferlan [Sun, 8 Oct 2017 12:14:56 +0000 (08:14 -0400)]
storage: Introduce virStoragePoolObjListForEach

Create an API to walk the pools->objs[] list in order to perform a
callback function for each element of the objs array that doesn't care
about whether the action succeeds or fails as the desire is to run the
code over every element in the array rather than fail as soon as or if
one fails.

7 years agostorage: Introduce virStoragePoolObjEndAPI
John Ferlan [Sun, 8 Oct 2017 13:09:09 +0000 (09:09 -0400)]
storage: Introduce virStoragePoolObjEndAPI

For now it'll just call the virStoragePoolObjUnlock, but a future
adjustment will do something different. Since the new API will check
for a NULL object before the Unlock call, callers no longer need to
check for NULL before calling.

The virStoragePoolObjUnlock is now private/static to virstorageobj.c
with a short term forward reference.

7 years agonodedev: Restore setting of privileged
John Ferlan [Wed, 22 Nov 2017 15:34:11 +0000 (10:34 -0500)]
nodedev: Restore setting of privileged

Commit id '36555364' removed the setting of the driver->privileged,
which the udevProcessPCI would need in order to read the PCI device
configs.

Signed-off-by: John Ferlan <jferlan@redhat.com>
7 years agoqemu: command: Properly format disk 'debug' attribute
Peter Krempa [Thu, 23 Nov 2017 16:15:17 +0000 (17:15 +0100)]
qemu: command: Properly format disk 'debug' attribute

Move the setup of the disk attribute to the disk source prepare function
which will allow proper usage with JSON props and move the fallback
(legacy) generating code into the block which is executed with legacy
options.

As a side-effect of this change we can clean up propagation of 'cfg'
into the command generator.

Also it's nice to see that the test output is the same even when the
value is generated in a different place.

7 years agoqemu: domain: Unify disk source prepare steps
Peter Krempa [Thu, 23 Nov 2017 16:01:37 +0000 (17:01 +0100)]
qemu: domain: Unify disk source prepare steps

Aggregate setup of various aspects of a disk source (secrets, TLS, ...)
into one function so that we don't need to call multiple across the code
base.

7 years agoqemu: hotplug: Rename qemuDomainPrepareDisk to qemuHotplugPrepareDiskAccess
Peter Krempa [Thu, 23 Nov 2017 15:48:50 +0000 (16:48 +0100)]
qemu: hotplug: Rename qemuDomainPrepareDisk to qemuHotplugPrepareDiskAccess

Match the prefix of the file and choose a name which better describes
what happens.

7 years agoqemu: block: Add support for formatting gluster debug level via JSON
Peter Krempa [Thu, 23 Nov 2017 15:07:47 +0000 (16:07 +0100)]
qemu: block: Add support for formatting gluster debug level via JSON

Improve the formatter so that we can use the 'debug' property straight
away when using json.

7 years agoutil: storage: Add fields for debug options for disk drivers
Peter Krempa [Thu, 23 Nov 2017 15:06:33 +0000 (16:06 +0100)]
util: storage: Add fields for debug options for disk drivers

Some drive backends allow output of debugging information which can be
configured using properties of the image. Add fields to virStorageSource
which will allow configuring them.

7 years agoqemu: command: Inject password-secret only when not using JSON props
Peter Krempa [Thu, 23 Nov 2017 14:37:37 +0000 (15:37 +0100)]
qemu: command: Inject password-secret only when not using JSON props

The 'file.password-secret' injection should be used only if we are using
the old formatter. When formatting the source string from the JSON
properties, the property should be added there.

Also drop the comment which refers to stuff that will not be used in
libvirt since -blockdev is the way to go.

7 years agotools: Work around ancient readline
Michal Privoznik [Thu, 23 Nov 2017 17:00:33 +0000 (18:00 +0100)]
tools: Work around ancient readline

My latest commit of a785186446de785d uncovered a problem we fixed
in 9eb23fe2 but then reverted in 834c5720e443. Turns out, some
systems (I'm looking at you OS X) have ancient readline with
broken header file.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agoqemu: command: Mark <shared/> disks as such in qemu
Peter Krempa [Wed, 15 Nov 2017 14:21:14 +0000 (15:21 +0100)]
qemu: command: Mark <shared/> disks as such in qemu

Qemu has now an internal mechanism for locking images to fix specific
cases of disk corruption. This requires libvirt to mark the image as
shared so that qemu lifts certain restrictions.

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

7 years agoqemu: caps: Add capability for 'share-rw' disk option
Peter Krempa [Wed, 15 Nov 2017 14:02:58 +0000 (15:02 +0100)]
qemu: caps: Add capability for 'share-rw' disk option

'share-rw' for the disk device configures qemu to allow concurrent
access to the backing storage.

The capability is checked in various supported disk frontend buses since
it does not make sense to partially backport it.

7 years agoqemu: Disallow pivot of shared disks to unsupported storage
Peter Krempa [Wed, 15 Nov 2017 13:33:11 +0000 (14:33 +0100)]
qemu: Disallow pivot of shared disks to unsupported storage

Pivoting to a unsupported storage type might break the assumption that
shared disks will not corrupt metadata.

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

7 years agoqemu: snapshot: Disallow snapshot of unsupported shared disks
Peter Krempa [Wed, 15 Nov 2017 12:41:01 +0000 (13:41 +0100)]
qemu: snapshot: Disallow snapshot of unsupported shared disks

Creating a snapshot would introduce a possibly unsupported member for
sharing into the backing chain. Add a check to prevent that from
happening.

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

7 years agoqemu: domain: Reject shared disk access if backing format does not support it
Peter Krempa [Tue, 14 Nov 2017 14:37:09 +0000 (15:37 +0100)]
qemu: domain: Reject shared disk access if backing format does not support it

Disk sharing between two VMs may corrupt the images if the format driver
does not support it. Check that the user declared use of a supported
storage format when they want to share the disk.

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

7 years agoqemu: block: Add function to check if storage source allows concurrent access
Peter Krempa [Tue, 14 Nov 2017 14:34:46 +0000 (15:34 +0100)]
qemu: block: Add function to check if storage source allows concurrent access

Storage source format backing a shared device (e.g. running a cluster
filesystem) needs to support the sharing so that metadata are not
corrupted. Add a central function for checking this.

7 years agoqemu: domain: Refactor domain device validation function
Peter Krempa [Tue, 14 Nov 2017 13:51:28 +0000 (14:51 +0100)]
qemu: domain: Refactor domain device validation function

Use a style that will discourage from adding inline checks.

7 years agoqemu: domain: Move video device validation into separate function
Peter Krempa [Tue, 14 Nov 2017 13:38:14 +0000 (14:38 +0100)]
qemu: domain: Move video device validation into separate function

7 years agoqemu: domain: Move hostdev validation into separate function
Peter Krempa [Tue, 14 Nov 2017 13:38:14 +0000 (14:38 +0100)]
qemu: domain: Move hostdev validation into separate function

7 years agoqemu: domain: Despaghettify qemuDomainDeviceDefValidate
Peter Krempa [Tue, 14 Nov 2017 13:33:19 +0000 (14:33 +0100)]
qemu: domain: Despaghettify qemuDomainDeviceDefValidate

Move network device validation into a separate function.

7 years agoqemu: Move snapshot disk validation functions into one
Peter Krempa [Wed, 15 Nov 2017 12:15:57 +0000 (13:15 +0100)]
qemu: Move snapshot disk validation functions into one

Move the code so that both the new image and old image can be verified
in the same function.

7 years agotests: changing network interface types when backend tag is defined.
Julio Faracco [Fri, 17 Nov 2017 21:27:40 +0000 (19:27 -0200)]
tests: changing network interface types when backend tag is defined.

Some test cases have the backend tag inside wrong interfaces. The backend xml
tag does not support <interface type='user|direct|hostdev'>. So this commit
changes some network types inside the interfaces that have backend defined.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
7 years agonews: Document which drivers support NUMA distances
Michal Privoznik [Tue, 14 Nov 2017 13:33:50 +0000 (14:33 +0100)]
news: Document which drivers support NUMA distances

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agoqemu: Support setting NUMA distances
Michal Privoznik [Tue, 14 Nov 2017 13:31:17 +0000 (14:31 +0100)]
qemu: Support setting NUMA distances

Since we already have such support for libxl all we need is qemu
driver adjustment. And a test case.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agoqemu_capabilities: Introcude QEMU_CAPS_NUMA_DIST
Michal Privoznik [Tue, 14 Nov 2017 13:29:20 +0000 (14:29 +0100)]
qemu_capabilities: Introcude QEMU_CAPS_NUMA_DIST

This capability says if qemu is capable of specifying distances
between NUMA nodes on the command line. Unfortunately, there's no
real way to check this and thus we have to go with version check.
QEMU introduced this in 0f203430dd8 (and friend) which was
released in 2.10.0.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agonuma: Introduce virDomainNumaNodeDistanceIsUsingDefaults
Michal Privoznik [Tue, 14 Nov 2017 13:28:11 +0000 (14:28 +0100)]
numa: Introduce virDomainNumaNodeDistanceIsUsingDefaults

The function returns true/false depending on distance
configuration being present in the domain XML.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agovirDomainNumaGetNodeDistance: Fix input arguments validation
Michal Privoznik [Tue, 14 Nov 2017 13:24:20 +0000 (14:24 +0100)]
virDomainNumaGetNodeDistance: Fix input arguments validation

There's no point in checking if numa->mem_nodes[node].ndistances
is set if we check for numa->mem_nodes[node].distances. However,
it makes sense to check if the sibling node (@cellid) caller
passed falls within boundaries.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agoqemu: Use the end of QEMU log for reporting errors
Jiri Denemark [Wed, 22 Nov 2017 12:12:00 +0000 (13:12 +0100)]
qemu: Use the end of QEMU log for reporting errors

When QEMU dies, we read its output stored in a log file and use it for
reporting a hopefully useful error. However, virReportError will trim
the message to (VIR_ERROR_MAX_LENGTH - 1) characters, which means the
end of the log (which likely contains the error message we want to
report) may get lost. We should trim the beginning of the log instead.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agovierror: Define VIR_ERROR_MAX_LENGTH macro
Jiri Denemark [Wed, 22 Nov 2017 09:28:35 +0000 (10:28 +0100)]
vierror: Define VIR_ERROR_MAX_LENGTH macro

And use it instead of a magic 1024 constant.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: Properly skip "char device redirected to" in QEMU log
Jiri Denemark [Wed, 22 Nov 2017 09:19:12 +0000 (10:19 +0100)]
qemu: Properly skip "char device redirected to" in QEMU log

When reading QEMU log for reporting it as an error message, we want to
skip "char device redirected to" line. However, this string is not
printed at the beginning of a line, which means STRPREFIX will never
find it.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoremote: Move the call to remoteClientFreePrivateCallbacks from FreeFunc to CloseFunc
xinhua.Cao [Mon, 13 Nov 2017 13:07:58 +0000 (21:07 +0800)]
remote: Move the call to remoteClientFreePrivateCallbacks from FreeFunc to CloseFunc

Still because of commit id 'fe8f1c8b' where we generate a REF for the
Register and that's transparent to the consumer (e.g. how would they
know they need to ensure that Deregister is called), thus the purpose of
this patch is to find a way to Deregister if it's determined that the
consumer hasn't by the time of the "last" REF we'd have.

This solution to this problem is to alter the processing to have the
remoteClientCloseFunc handle performing the Deregister calls instead of
the remoteClientFreeFunc because there's no way FreeFunc would be called
unless the Deregister was already called.

7 years agoremote: Extract common clearing of event callbacks of client private data
xinhua.Cao [Mon, 13 Nov 2017 13:07:57 +0000 (21:07 +0800)]
remote: Extract common clearing of event callbacks of client private data

Extract common clearing of event callbacks as remoteClientFreePrivateCallbacks.
the common function also separation including the sysident handling.

7 years agoAdjust backslash alignment syntax-check
Martin Kletzander [Wed, 22 Nov 2017 10:27:16 +0000 (11:27 +0100)]
Adjust backslash alignment syntax-check

We have a check for backslash alignment that checks for two blanks preceding a
backslash.  However there can be alignment done using a tabulator and in some
cases one might be enough.  There are none currently, but I found out that was
the case before. at some point.  so let's check for \t preceding the final
backslash as well.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoutil: Fix leak in virStringTrimOptionalNewline
Martin Kletzander [Wed, 22 Nov 2017 20:52:17 +0000 (21:52 +0100)]
util: Fix leak in virStringTrimOptionalNewline

Do not access any data if strlen() == 0.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agoqemu: command: Anotate formatting of the frontend attributes with -drive
Peter Krempa [Mon, 20 Nov 2017 16:41:55 +0000 (17:41 +0100)]
qemu: command: Anotate formatting of the frontend attributes with -drive

Explain that certain attributes formatted with -drive are in fact
attributes of the drive itself and not the storage backing it.

7 years agoqemu: command: Move formatting of disk io error policy from -drive
Peter Krempa [Mon, 20 Nov 2017 15:19:47 +0000 (16:19 +0100)]
qemu: command: Move formatting of disk io error policy from -drive

That's a disk frontend attribute. Move the code to a separate function
since it's non-trivial and call it from the frontend attribute
formatter.

7 years agoqemu: command: Move disk trhottling argument building into a separate function
Peter Krempa [Mon, 20 Nov 2017 13:59:29 +0000 (14:59 +0100)]
qemu: command: Move disk trhottling argument building into a separate function

Isolate it from the other code.

7 years agoqemu: command: Refactor logic when formatting -drive
Peter Krempa [Tue, 14 Nov 2017 13:13:01 +0000 (14:13 +0100)]
qemu: command: Refactor logic when formatting -drive

Move all logic depending on whether we are solely formatting -drive (no
-device along with it) into one block.

7 years agoqemu: command: Move around order of generating -drive arguments
Peter Krempa [Wed, 22 Nov 2017 09:36:30 +0000 (10:36 +0100)]
qemu: command: Move around order of generating -drive arguments

Move together sections which are conditionaly executed depending on
whether -device will be used together with the -drive.

7 years agoqemu: command: Move disk 'serial' into frontend parameter formatter
Peter Krempa [Tue, 14 Nov 2017 12:50:52 +0000 (13:50 +0100)]
qemu: command: Move disk 'serial' into frontend parameter formatter

Disk serial is not a property of the image but of the disk frontend.
Account for this appropriately.

7 years agotests: qemuxml2argv: Test SD card with serial number
Peter Krempa [Mon, 20 Nov 2017 11:16:53 +0000 (12:16 +0100)]
tests: qemuxml2argv: Test SD card with serial number

7 years agotests: qemuxml2xml: Run the 'disk-serial' test
Peter Krempa [Mon, 20 Nov 2017 11:14:08 +0000 (12:14 +0100)]
tests: qemuxml2xml: Run the 'disk-serial' test

7 years agoqemu: command: Split out geometry frontend attribute formatting from -drive
Peter Krempa [Wed, 1 Nov 2017 15:31:55 +0000 (16:31 +0100)]
qemu: command: Split out geometry frontend attribute formatting from -drive

Historically we've formatted a lot of the attributes of a disk (disk
geometry, etc) with -drive. Since we use -device now, they should be
formatted there. Extract them to a separate function for keeping
compatibility with SDcards which still use only -drive.

Start this by moving the geometry into a separate function.

7 years agoqemu: domain: Don't call namespace setup for storage already accessed by vm
Peter Krempa [Wed, 22 Nov 2017 15:42:53 +0000 (16:42 +0100)]
qemu: domain: Don't call namespace setup for storage already accessed by vm

When doing block commit we need to allow write for members of the
backing chain so that we can commit the data into them.

qemuDomainDiskChainElementPrepare was used for this which since commit
786d8d91b4 calls qemuDomainNamespaceSetupDisk which has very adverse
side-effects, namely it relabels the nodes to the same label it has in
the main namespace. This was messing up permissions for the commit
operation since its touching various parts of a single backing chain.

Since we are are actually not introducing new images at that point add a
flag for qemuDomainDiskChainElementPrepare which will refrain from
calling to the namespace setup function.

Calls from qemuDomainSnapshotCreateSingleDiskActive and
qemuDomainBlockCopyCommon do introduce new members all calls from
qemuDomainBlockCommit do not, so the calls are anotated accordingly.

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

7 years agovirsh: domifstat: enhance the command's help output
ZhiPeng Lu [Sat, 18 Nov 2017 07:21:57 +0000 (15:21 +0800)]
virsh: domifstat: enhance the command's help output

According to the man page <interface-device> can be specified either by
name or MAC address, adjust the command's help accordingly.

Signed-off-by:ZhiPeng Lu <lu.zhipeng@zte.com.cn>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agobuild: Fix make dist
Martin Kletzander [Tue, 21 Nov 2017 15:38:35 +0000 (16:38 +0100)]
build: Fix make dist

Since we don't pack symlinks we cannot have recursive loops in them.  Since we
need one directory to be in tests/vircaps2xmldata/linux-caches/, instead of
creating a symlink, just move the files in that directory and adjust tests.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
7 years agotools: Enable warnings for more binaries/libs
Michal Privoznik [Thu, 16 Nov 2017 13:35:12 +0000 (14:35 +0100)]
tools: Enable warnings for more binaries/libs

Because WARN_CFLAGS and COVERAGE_CFLAGS are not set globally, we
rely on each binary built to include WARN_CFLAGS/COVERAGE_CFLAGS.
But it is easy to forget those - e.g. libvirt_shell.la. However,
don't enable WARN_FLAGS (i.e. don't include AM_CFLAGS) for
wireshark plugin - parts of that code are generated and trigger
some warnings.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
7 years agotools: Set CFLAGS for wireshark properly
Michal Privoznik [Thu, 16 Nov 2017 13:34:31 +0000 (14:34 +0100)]
tools: Set CFLAGS for wireshark properly

We want to set CFLAGS not CPPFLAGS.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
7 years agovsh: Make self-test more robust
Michal Privoznik [Thu, 16 Nov 2017 12:38:27 +0000 (13:38 +0100)]
vsh: Make self-test more robust

There are couple of limitations when it comes to option types and
flags for the options. For instance, VSH_OT_STRING cannot have
VSH_OFLAG_REQ set (commit c7543a728). For some reason this is
checked in vshCmddefHelp() but not in vshCmddefCheckInternals().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
7 years agotests: fix typo
Nikolay Shirokovskiy [Fri, 17 Nov 2017 13:17:38 +0000 (16:17 +0300)]
tests: fix typo

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
7 years agoqemuBuildDeviceAddressStr: Prefer default alias for PCI bus
Michal Privoznik [Tue, 14 Nov 2017 16:19:58 +0000 (17:19 +0100)]
qemuBuildDeviceAddressStr: Prefer default alias for PCI bus

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

Just like in 9324f67a572f9b32 we need to put default pci-root
alias onto the command line instead of the one provided by user.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agoqemuBuildDriveDevStr: Prefer default alias for SATA bus
Michal Privoznik [Wed, 15 Nov 2017 14:18:43 +0000 (15:18 +0100)]
qemuBuildDriveDevStr: Prefer default alias for SATA bus

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

Just like in 9324f67a572f9b32 we need to put default sata alias
(which is hardcoded to "ide", obvious, right?) onto the command
line instead of the one provided by user.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agovirQEMUCapsHasPCIMultiBus: Fix @def type
Michal Privoznik [Wed, 15 Nov 2017 14:17:39 +0000 (15:17 +0100)]
virQEMUCapsHasPCIMultiBus: Fix @def type

This function only queries domain @def. It doesn't change it.
Therefore it should take const pointer.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agoconf,qemu: Use type-aware switches where possible
Andrea Bolognani [Wed, 8 Nov 2017 14:55:16 +0000 (15:55 +0100)]
conf,qemu: Use type-aware switches where possible

The compiler can warn us if we add a value to the
virDomainChrSerialTargetType enumeration but forget to handle
it properly in the code. Let's take advantage of that.

This commit is best viewed with 'git diff -w'.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoqemu: add QEMU_CAPS_DEVICE_SCLPLMCONSOLE
Pino Toscano [Wed, 15 Nov 2017 17:08:44 +0000 (18:08 +0100)]
qemu: add QEMU_CAPS_DEVICE_SCLPLMCONSOLE

Add a separate capability for the sclplmconsole device, and check it
specifically instead of using QEMU_CAPS_DEVICE_SCLPCONSOLE for that too.

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: rename QEMU_CAPS_SCLP_S390 to QEMU_CAPS_DEVICE_SCLPCONSOLE
Pino Toscano [Wed, 15 Nov 2017 17:05:44 +0000 (18:05 +0100)]
qemu: rename QEMU_CAPS_SCLP_S390 to QEMU_CAPS_DEVICE_SCLPCONSOLE

Give a better name to the capability for the sclpconsole device.

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: Add QEMU_CAPS_DEVICE_SPAPR_VTY
Andrea Bolognani [Wed, 8 Nov 2017 18:13:28 +0000 (19:13 +0100)]
qemu: Add QEMU_CAPS_DEVICE_SPAPR_VTY

Up until now we assumed the spapr-vty device would always be
present, which is not very nice. Check for its availability before
using it instead.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
7 years agoAppArmor: add mount rules needed with additional mediation features brought by Linux...
intrigeri [Sun, 19 Nov 2017 14:57:34 +0000 (14:57 +0000)]
AppArmor: add mount rules needed with additional mediation features brought by Linux 4.14

This set of rules was proposed by Christian Boltz <apparmor@cboltz.de>
on https://bugzilla.opensuse.org/show_bug.cgi?id=1065123.

7 years agoAppArmor: add rules needed with additional mediation features brought by Linux 4.14.
intrigeri [Sun, 19 Nov 2017 14:57:33 +0000 (14:57 +0000)]
AppArmor: add rules needed with additional mediation features brought by Linux 4.14.