]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
7 years agoqemu: Move qemuMonitorMigrationParams structure
Jiri Denemark [Thu, 15 Mar 2018 19:24:55 +0000 (20:24 +0100)]
qemu: Move qemuMonitorMigrationParams structure

It's no longer used by the monitor code so we can hide it inside
qemu_migration_params.c.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Export qemuMigrationParams{To,From}JSON for tests
Jiri Denemark [Mon, 19 Mar 2018 22:44:53 +0000 (23:44 +0100)]
qemu: Export qemuMigrationParams{To,From}JSON for tests

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move migration parameters JSON formatting
Jiri Denemark [Thu, 15 Mar 2018 19:24:05 +0000 (20:24 +0100)]
qemu: Move migration parameters JSON formatting

We want to have all migration parameters parsing and formatting at one
place, i.e., in qemu_migration_params.c.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move migration parameters JSON parsing
Jiri Denemark [Thu, 15 Mar 2018 17:06:01 +0000 (18:06 +0100)]
qemu: Move migration parameters JSON parsing

We want to have all migration parameters parsing and formatting at once
place, i.e., in qemu_migration_params.c.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoutil: Introduce virJSONValueObjectStealObject
Jiri Denemark [Wed, 28 Mar 2018 07:01:30 +0000 (09:01 +0200)]
util: Introduce virJSONValueObjectStealObject

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemumonitorjsontest: Drop migration params test
Jiri Denemark [Thu, 15 Mar 2018 10:50:36 +0000 (11:50 +0100)]
qemumonitorjsontest: Drop migration params test

The test is mostly useless and we want to refactor migration parameters
even further. The refactoring will allow us to introduce enhanced tests
for migration parameters.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Limit usage of qemuMonitorMigrationParams
Jiri Denemark [Thu, 15 Mar 2018 10:39:50 +0000 (11:39 +0100)]
qemu: Limit usage of qemuMonitorMigrationParams

Use this internal structure only in qemu_migration_params.c and change
other non-test users to use the high level qemuMigrationParams struct.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Introduce qemuMigrationParamsFetch
Jiri Denemark [Thu, 15 Mar 2018 10:27:07 +0000 (11:27 +0100)]
qemu: Introduce qemuMigrationParamsFetch

Let's separate the code which queries QEMU for migration parameters from
qemuMigrationParamsCheck into a dedicated function.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Drop qemuMigrationCompression structure
Jiri Denemark [Fri, 9 Mar 2018 16:30:16 +0000 (17:30 +0100)]
qemu: Drop qemuMigrationCompression structure

By merging qemuMigrationAnyCompressionParse into
qemuMigrationParamsSetCompression we can drop the useless intermediate
qemuMigrationCompression structure and parse compression related typed
parameters and flags directly into qemuMigrationParams.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Replace qemuMigrationAnyCompressionDump
Jiri Denemark [Mon, 12 Mar 2018 14:50:06 +0000 (15:50 +0100)]
qemu: Replace qemuMigrationAnyCompressionDump

Since every parameter or capability set in qemuMigrationCompression
structure is now reflected in qemuMigrationParams structure, we can
replace qemuMigrationAnyCompressionDump with a new API which will work
on qemuMigrationParams.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Hide qemuMigrationParamsSetCompression
Jiri Denemark [Mon, 12 Mar 2018 14:20:54 +0000 (15:20 +0100)]
qemu: Hide qemuMigrationParamsSetCompression

There's no need to call this API explicitly in the migration code. We
can pass the compression parameters to qemuMigrationParamsFromFlags and
it can internally call qemuMigrationParamsSetCompression to apply them
to the qemuMigrationParams structure.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move qemuMigrationAnyCompression*
Jiri Denemark [Mon, 12 Mar 2018 13:19:56 +0000 (14:19 +0100)]
qemu: Move qemuMigrationAnyCompression*

The code really belongs to qemu_migration_params.c.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move qemuMigrationParamsSetCompression
Jiri Denemark [Tue, 27 Mar 2018 21:41:39 +0000 (23:41 +0200)]
qemu: Move qemuMigrationParamsSetCompression

The API will soon be called from qemuMigrationParamsFromFlags. Let's
move it to avoid the need to add a forward declaration.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Drop qemuMigrationParamsSetCapability
Jiri Denemark [Tue, 27 Mar 2018 21:41:10 +0000 (23:41 +0200)]
qemu: Drop qemuMigrationParamsSetCapability

It's become only a tiny wrapper around virBitmapSetBit, which can easily
be called directly. We don't need to call virBitmapClearBit since
migParams->caps bitmap is initialized with zeros.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Generalize macro for getting VIR_MIGRATE_* typed params
Jiri Denemark [Fri, 9 Mar 2018 16:17:01 +0000 (17:17 +0100)]
qemu: Generalize macro for getting VIR_MIGRATE_* typed params

So far it's used only for CPU throttling parameters which are all ints,
but we'll soon want to use it for more parameters with different types.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Call qemuMigrationAnyCompressionParse only from driver
Jiri Denemark [Mon, 12 Mar 2018 15:22:11 +0000 (16:22 +0100)]
qemu: Call qemuMigrationAnyCompressionParse only from driver

Propagate the calls up the stack to the point where
qemuMigrationParamsFromFlags is called. The end goal achieved in the
following few patches is to merge compression parameters into the
general migration parameters code.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Set migration capabilities automatically
Jiri Denemark [Wed, 7 Mar 2018 20:28:54 +0000 (21:28 +0100)]
qemu: Set migration capabilities automatically

Most migration capabilities are directly connected with
virDomainMigrateFlags so qemuMigrationParamsFromFlags can automatically
enable them.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Set always-on migration caps in ParamsCheck
Jiri Denemark [Wed, 7 Mar 2018 14:59:42 +0000 (15:59 +0100)]
qemu: Set always-on migration caps in ParamsCheck

Some migration capabilities are always enabled if QEMU supports them. We
can just drop the explicit code for them and let
qemuMigrationParamsCheck automatically set such capabilities.

QEMU_MONITOR_MIGRATION_CAPS_EVENTS would normally be one of the always
on features, but it is the only feature we want to enable even for other
jobs which internally use migration (such as save and snapshot). Hence
this capability is set very early after libvirtd connects to QEMU
monitor.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Drop qemuMigrationParamsSetPostCopy
Jiri Denemark [Wed, 7 Mar 2018 14:52:45 +0000 (15:52 +0100)]
qemu: Drop qemuMigrationParamsSetPostCopy

It's just a tiny wrapper around qemuMigrationParamsSetCapability and
setting priv->job.postcopyEnabled is not something qemuMigrationParams
code should be doing anyway so let the callers do it.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Hide qemuMigrationParamsNew
Jiri Denemark [Thu, 8 Mar 2018 14:24:37 +0000 (15:24 +0100)]
qemu: Hide qemuMigrationParamsNew

It is no longer used outside qemu_migration_params.c.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Use qemuMigrationParamsFromFlags everywhere
Jiri Denemark [Wed, 7 Mar 2018 14:32:26 +0000 (15:32 +0100)]
qemu: Use qemuMigrationParamsFromFlags everywhere

Every migration entry point in qemu_driver is supposed to call
qemuMigrationParamsFromFlags to transform flags and parameters into
qemuMigrationParams structure and pass the result to qemuMigration*
APIs.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Introduce qemuMigrationParty enum
Jiri Denemark [Fri, 9 Mar 2018 10:23:49 +0000 (11:23 +0100)]
qemu: Introduce qemuMigrationParty enum

Some migration parameters and capabilities are supposed to be set on
both sides of migration while others should only be set on one side. For
example, CPU throttling parameters make no sense on the destination and
they can be used even if the destination is too old to support them.

To make qemuMigrationParamsFromFlags more general and usable on both
sides of migration, we need to tell it what side it's been called on.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Check supported caps in qemuMigrationParamsCheck
Jiri Denemark [Wed, 7 Mar 2018 09:45:18 +0000 (10:45 +0100)]
qemu: Check supported caps in qemuMigrationParamsCheck

Instead of checking each capability at the time we want to set it in
qemuMigrationParamsSetCapability we can check all of them at once in
qemuMigrationParamsCheck.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move ParamsCheck closer to ParamsApply on Src side
Jiri Denemark [Wed, 7 Mar 2018 13:43:23 +0000 (14:43 +0100)]
qemu: Move ParamsCheck closer to ParamsApply on Src side

We reached the point when qemuMigrationParamsApply is the only API which
sends migration parameters and capabilities to QEMU. Thus all but the
TLS parameters can be set before we ask QEMU for the current values of
all parameters in qemuMigrationParamsCheck.

Supported migration capabilities are queried as soon as libvirt connects
to QEMU monitor so we can check them anytime.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move ParamsCheck closer to ParamsApply on Dst side
Jiri Denemark [Wed, 7 Mar 2018 13:43:23 +0000 (14:43 +0100)]
qemu: Move ParamsCheck closer to ParamsApply on Dst side

We reached the point when qemuMigrationParamsApply is the only API which
sends migration parameters and capabilities to QEMU. Thus all but the
TLS parameters can be set before we ask QEMU for the current values of
all parameters in qemuMigrationParamsCheck.

Supported migration capabilities are queried as soon as libvirt connects
to QEMU monitor so we can check them anytime.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Set XBZRLE cache size via migration parameters
Jiri Denemark [Thu, 1 Mar 2018 10:28:05 +0000 (11:28 +0100)]
qemu: Set XBZRLE cache size via migration parameters

Prefer xbzrle-cache-size migration parameter over the special
migrate-set-cache-size QMP command.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Add support for xbzrle-cache-size migration parameter
Jiri Denemark [Wed, 8 Nov 2017 12:46:03 +0000 (13:46 +0100)]
qemu: Add support for xbzrle-cache-size migration parameter

Originally QEMU provided query-migrate-cache-size and
migrate-set-cache-size QMP commands for querying/setting XBZRLE cache
size. In version 2.11 QEMU added support for XBZRLE cache size to the
general migration paramaters commands.

This patch adds support for this parameter to libvirt to make sure it is
properly restored to its original value after a failed or aborted
migration.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Drop unused qemuMonitorSetMigrationCapability
Jiri Denemark [Thu, 1 Mar 2018 08:28:24 +0000 (09:28 +0100)]
qemu: Drop unused qemuMonitorSetMigrationCapability

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Do not use qemuMonitorSetMigrationCapability
Jiri Denemark [Thu, 1 Mar 2018 09:51:53 +0000 (10:51 +0100)]
qemu: Do not use qemuMonitorSetMigrationCapability

Rework all remaining callers of qemuMonitorSetMigrationCapability to use
the new qemuMonitorSetMigrationCapabilities API.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Set migration caps via migration params APIs
Jiri Denemark [Mon, 26 Feb 2018 14:47:33 +0000 (15:47 +0100)]
qemu: Set migration caps via migration params APIs

Migration capabilities are closely related to migration parameters and
it makes sense to keep them in a single data structure. Similarly to
migration parameters the capabilities are all send to QEMU at once in
qemuMigrationParamsApply, all other APIs operate on the
qemuMigrationParams structure.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Introduce qemuMonitorSetMigrationCapabilities
Jiri Denemark [Thu, 1 Mar 2018 08:26:07 +0000 (09:26 +0100)]
qemu: Introduce qemuMonitorSetMigrationCapabilities

Our current monitor API forces the caller to call
migrate-set-capabilities QMP command for each capability separately,
which is quite suboptimal. Let's add a new API for setting all
capabilities at once.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Hide internals of qemuMigrationParams struct
Jiri Denemark [Wed, 7 Mar 2018 11:38:27 +0000 (12:38 +0100)]
qemu: Hide internals of qemuMigrationParams struct

All users of migration parameters are supposed to use APIs provided by
qemu_migration_params.c without having to worry about the internals.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Rename qemuMigrationParamsSet
Jiri Denemark [Wed, 28 Feb 2018 13:44:12 +0000 (14:44 +0100)]
qemu: Rename qemuMigrationParamsSet

The new name is qemuMigrationParamsApply and it will soon become the
only API which will send all requested migration parameters and
capabilities to QEMU. All other qemuMigrationParams* APIs will just
operate on the qemuMigrationParams structure.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Hide cfg inside qemuMigrationParamsEnableTLS
Jiri Denemark [Wed, 28 Feb 2018 12:08:53 +0000 (13:08 +0100)]
qemu: Hide cfg inside qemuMigrationParamsEnableTLS

There's no real reason for qemuMigrationParamsEnableTLS to require the
callers to pass a valid virQEMUDriverConfigPtr, it can just call
virQEMUDriverGetConfig.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Set tlsHostname inside qemuMigrationParamsEnableTLS
Jiri Denemark [Wed, 28 Feb 2018 11:57:19 +0000 (12:57 +0100)]
qemu: Set tlsHostname inside qemuMigrationParamsEnableTLS

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Rename qemuMigrationParamsAddTLSObjects
Jiri Denemark [Wed, 28 Feb 2018 09:45:07 +0000 (10:45 +0100)]
qemu: Rename qemuMigrationParamsAddTLSObjects

The new name is qemuMigrationParamsEnableTLS.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Rename qemuMigrationParamsSetEmptyTLS
Jiri Denemark [Wed, 28 Feb 2018 08:35:53 +0000 (09:35 +0100)]
qemu: Rename qemuMigrationParamsSetEmptyTLS

The new name is qemuMigrationParamsDisableTLS.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Drop qemuMigrationParamsCheckTLSCreds
Jiri Denemark [Tue, 27 Feb 2018 16:54:08 +0000 (17:54 +0100)]
qemu: Drop qemuMigrationParamsCheckTLSCreds

The function checks whether QEMU supports TLS migration and stores the
original value of tls-creds parameter to priv->migTLSAlias. This is no
longer needed because we already have the original value stored in
priv->migParams.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Drop qemuMigrationParamsCheckSetupTLS
Jiri Denemark [Tue, 27 Feb 2018 16:54:54 +0000 (17:54 +0100)]
qemu: Drop qemuMigrationParamsCheckSetupTLS

The code can be merged directly in qemuMigrationParamsAddTLSObjects.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Reset all migration parameters
Jiri Denemark [Tue, 27 Feb 2018 16:09:17 +0000 (17:09 +0100)]
qemu: Reset all migration parameters

Restore the original values of all migration parameters we store in
qemuDomainJobObj instead of explicitly resting only a limited set of
them.

The result is not strictly equivalent to the previous code wrt reseting
TLS state because the previous code would only reset it if we changed it
before while the new code will reset it always if QEMU supports TLS
migration. This is not a problem for the parameters themselves, but it
can cause spurious errors about missing TLS objects being logged at the
end of non-TLS migration. This issue will be fixed ~50 patches later.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Pass job object to qemuProcessRecoverMigration{In,Out}
Jiri Denemark [Tue, 3 Apr 2018 11:37:24 +0000 (13:37 +0200)]
qemu: Pass job object to qemuProcessRecoverMigration{In,Out}

Currently, only job->phase is passed and both APIs will need to look at
more details about the job.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Typedef struct qemuDomainJobObj
Jiri Denemark [Thu, 29 Mar 2018 14:48:34 +0000 (16:48 +0200)]
qemu: Typedef struct qemuDomainJobObj

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Store original migration params in job
Jiri Denemark [Tue, 27 Feb 2018 14:45:52 +0000 (15:45 +0100)]
qemu: Store original migration params in job

Any job which touches migration parameters will first store their
original values (i.e., QEMU defaults) to qemuDomainJobObj to make it
easier to reset them back once the job finishes.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Reset migration parameters in qemuMigrationSrcCleanup
Jiri Denemark [Tue, 27 Feb 2018 13:42:56 +0000 (14:42 +0100)]
qemu: Reset migration parameters in qemuMigrationSrcCleanup

When connection to the client which controls a non-p2p migration gets
closed between Perform and Confirm phase, we don't know whether the
domain was successfully migrated or not. Thus, we have to leave the
domain paused and just cleanup the migration job and reset migration
parameters.

Previously we didn't reset the parameters and future save or snapshot
operations would see wrong environment (and could fail because of it) in
case the domain stayed running on the source host.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Introduce qemuMigrationParams struct
Jiri Denemark [Wed, 21 Feb 2018 16:22:29 +0000 (17:22 +0100)]
qemu: Introduce qemuMigrationParams struct

Currently migration parameters are stored in a structure which mimics
the QEMU migration parameters handled by query-migrate-parameters and
migrate-set-parameters. The new structure will become a libvirt's
abstraction on top of QEMU migration parameters, capabilities, and
related stuff.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move qemuMigrationCompression struct
Jiri Denemark [Wed, 21 Feb 2018 16:40:45 +0000 (17:40 +0100)]
qemu: Move qemuMigrationCompression struct

It provides just another view on some migration parameters so let's move
it close to them. The end goal is to merge compression parameters with
the rest of migration parameters since it doesn't make any sense to
handle them differently.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Drop qemuMigrationParamsClear
Jiri Denemark [Wed, 21 Feb 2018 15:59:47 +0000 (16:59 +0100)]
qemu: Drop qemuMigrationParamsClear

It's no longer used since we do not store the struct on a stack anymore.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Allocate struct for migration parameters
Jiri Denemark [Wed, 21 Feb 2018 15:59:10 +0000 (16:59 +0100)]
qemu: Allocate struct for migration parameters

It will get a bit more complicated soon and storing it on a stack with
{0} initializer will no longer work. We need a proper constructor.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Make qemuMigrationParamsFree follow common pattern
Jiri Denemark [Wed, 21 Feb 2018 14:56:18 +0000 (15:56 +0100)]
qemu: Make qemuMigrationParamsFree follow common pattern

Our *Free functions usually do not take a double pointer and the caller
has to make sure it doesn't use the stale pointer after the *Free
function returns.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Reindent qemuMigrationParamsSetEmptyTLS
Jiri Denemark [Tue, 27 Mar 2018 22:23:20 +0000 (00:23 +0200)]
qemu: Reindent qemuMigrationParamsSetEmptyTLS

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move qemuMigrationCapsGet
Jiri Denemark [Fri, 6 Apr 2018 13:22:51 +0000 (15:22 +0200)]
qemu: Move qemuMigrationCapsGet

The function is connected with the code which handles migration
parameters and capabilities, let's move it to qemu_migration_params.c.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Move qemuDomainCheckMigrationCapabilities
Jiri Denemark [Tue, 20 Feb 2018 15:40:21 +0000 (16:40 +0100)]
qemu: Move qemuDomainCheckMigrationCapabilities

Since the function is tightly connected to migration, it was renamed as
qemuMigrationCapsCheck and moved to qemu_migration_params.c.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: New file for all APIs related to migration parameters
Jiri Denemark [Wed, 21 Feb 2018 13:18:03 +0000 (14:18 +0100)]
qemu: New file for all APIs related to migration parameters

In the end, this will allow us to have most of the logic around
migration parameters and capabilities done in one place.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Rename qemuMigrationParams
Jiri Denemark [Wed, 21 Feb 2018 09:23:16 +0000 (10:23 +0100)]
qemu: Rename qemuMigrationParams

The function is now called qemuMigrationParamsFromFlags to better
reflect what it is doing: taking migration flags and params and
producing a struct with QEMU migration parameters.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: Rename qemuMigrationAnyCapsGet as qemuMigrationCapsGet
Jiri Denemark [Tue, 20 Feb 2018 15:53:17 +0000 (16:53 +0100)]
qemu: Rename qemuMigrationAnyCapsGet as qemuMigrationCapsGet

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agodocs: index.html.in: Fix a typo in "virtualization platforms" link
Erik Skultety [Tue, 17 Apr 2018 07:42:01 +0000 (09:42 +0200)]
docs: index.html.in: Fix a typo in "virtualization platforms" link

This was pointing to an .html.in file rather than to the intended html
document.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
7 years agoIntroduce virNetSASLContextDispose
Michal Privoznik [Fri, 13 Apr 2018 12:57:19 +0000 (14:57 +0200)]
Introduce virNetSASLContextDispose

Future commits rely on the presence of this callback.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
7 years agosrc: Unify dispose function names
Michal Privoznik [Fri, 13 Apr 2018 12:56:40 +0000 (14:56 +0200)]
src: Unify dispose function names

If a function is disposing virSomething it should be called
virSomethingDispose(). There are two offenders:
virCapabilitiesDispose(virCapsPtr) and
virDomainXMLOptionClassDispose(virDomainXMLOptionPtr).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
7 years agodomain_event: s/MetadataCange/MetadataChange/g
Michal Privoznik [Fri, 13 Apr 2018 11:28:03 +0000 (13:28 +0200)]
domain_event: s/MetadataCange/MetadataChange/g

There's a typo in struct name.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
7 years agolxc: s/subtreee/subtree/
Radostin Stoyanov [Sun, 15 Apr 2018 15:30:10 +0000 (16:30 +0100)]
lxc: s/subtreee/subtree/

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_DRIVE_CACHE_UNSAFE
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_DRIVE_CACHE_UNSAFE

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_NO_SHUTDOWN
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_NO_SHUTDOWN

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu_domain: Don't leak @paths in qemuDomainNamespaceSetupDisk
Michal Privoznik [Mon, 16 Apr 2018 15:34:48 +0000 (17:34 +0200)]
qemu_domain: Don't leak @paths in qemuDomainNamespaceSetupDisk

Introduced in d3db304d2e4. Instead of returning immediately we
need to jump onto cleanup label where @paths is freed.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_DEVICE_SPICEVMC
Ján Tomko [Fri, 30 Mar 2018 04:42:35 +0000 (06:42 +0200)]
qemu: deprecate QEMU_CAPS_DEVICE_SPICEVMC

The (now assumed) QEMU_CAPS_CHARDEV_SPICEVMC is preferred.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_CHARDEV_SPICEVMC
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_CHARDEV_SPICEVMC

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_DRIVE_AIO
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_DRIVE_AIO

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_VGA_NONE
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_VGA_NONE

Last use was removed by commit 0586cf98 deprecating
QEMU_CAPS_DEVICE.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_SMBIOS_TYPE
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_SMBIOS_TYPE

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_NAME_PROCESS
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_NAME_PROCESS

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_FSDEV
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_FSDEV

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_BOOT_MENU
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_BOOT_MENU

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_NODEFCONFIG
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_NODEFCONFIG

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Fixed-up-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_VHOST_NET
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_VHOST_NET

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_RTC_TD_HACK
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_RTC_TD_HACK

Implied by QEMU >= 0.12.0.

Deprecated by QEMU commit 1ed2fc1 included in 0.12.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_RTC
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_RTC

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_SDL
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_SDL

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoopenvz: Clean up openvzDomainGetHostname
John Ferlan [Fri, 30 Mar 2018 14:04:54 +0000 (10:04 -0400)]
openvz: Clean up openvzDomainGetHostname

Remove the unnecessary goto error followed by goto cleanup
processing.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoopenvz: Remove unnecessary Unref in openvzLoadDomains
John Ferlan [Mon, 26 Mar 2018 15:36:43 +0000 (11:36 -0400)]
openvz: Remove unnecessary Unref in openvzLoadDomains

Since there is no way to get to cleanup without dom being NULL,
this is a unnecessary Unref.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
7 years agoacl: remove various left over Xen ACL whitelist entries
Daniel P. Berrangé [Thu, 12 Apr 2018 15:23:44 +0000 (16:23 +0100)]
acl: remove various left over Xen ACL whitelist entries

The legacy xen driver is removed, so these ACL hacks can be removed
too now.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agoqemu: remove obsolete qemuMonitorMigrateToCommand
Daniel P. Berrangé [Thu, 12 Apr 2018 09:51:46 +0000 (10:51 +0100)]
qemu: remove obsolete qemuMonitorMigrateToCommand

The last use of qemuMonitorMigrateToCommand was removed years back in

  commit 2e90c9daf9eabe15d826a48c06607acb9d18fda6
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Fri Nov 6 16:50:26 2015 +0000

    qemu: assume support for all migration protocols except rdma

Prior to that commit, 'exec:' to used to replicate the 'unix:' protocol
by spawning 'nc'.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agoRemove redundant virFileIsExecutable check
Radostin Stoyanov [Fri, 13 Apr 2018 06:01:45 +0000 (07:01 +0100)]
Remove redundant virFileIsExecutable check

Remove unnecessary virFileIsExecutable check after virFindFileInPath.
Since the commit 9ae992f virFindFileInPath will reject non-executables.

Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
7 years agodriver: ensure URI path is non-NULL to simplify drivers
Daniel P. Berrangé [Wed, 28 Mar 2018 13:25:23 +0000 (14:25 +0100)]
driver: ensure URI path is non-NULL to simplify drivers

Avoid the need for the drivers to explicitly check for a NULL path by
making sure it is at least the empty string.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agodriver: enforce a non-NULL URI scheme
Daniel P. Berrangé [Mon, 9 Apr 2018 15:33:22 +0000 (16:33 +0100)]
driver: enforce a non-NULL URI scheme

Now that the legacy Xen driver has been dropped, we no longer need to
support URIs such as "/path/to/xend/socket", and so can mandate that a
URI scheme must always be present.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agodriver: ensure NULL URI isn't passed to drivers with whitelisted URIs
Daniel P. Berrangé [Wed, 28 Mar 2018 11:49:29 +0000 (12:49 +0100)]
driver: ensure NULL URI isn't passed to drivers with whitelisted URIs

Ensuring that we don't call the virDrvConnectOpen method with a NULL URI
means that the drivers can drop various checks for NULL URIs. These were
not needed anymore since the probe functionality was split

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agodriver: declare supported URI schemes in virConnectDriver struct
Daniel P. Berrangé [Tue, 27 Mar 2018 14:51:45 +0000 (15:51 +0100)]
driver: declare supported URI schemes in virConnectDriver struct

Declare what URI schemes a driver supports in its virConnectDriver
struct. This allows us to skip trying to open the driver entirely
if the URI scheme doesn't match.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agodriver: allow drivers to indicate if they permit remote connections
Daniel P. Berrangé [Wed, 28 Mar 2018 09:53:31 +0000 (10:53 +0100)]
driver: allow drivers to indicate if they permit remote connections

Add a localOnly flag to the virConnectDriver struct which allows a
driver to indicate whether it is local-only, or permits remote
connections. Stateful drivers running inside libvirtd are generally
local only. This allows us to remote the check for uri->server != NULL
from most drivers.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agodriver: introduce a driver method for probing default URIs
Daniel P. Berrangé [Tue, 27 Mar 2018 16:24:44 +0000 (17:24 +0100)]
driver: introduce a driver method for probing default URIs

Currently the virDrvConnectOpen method is supposed to handle both
opening an explicit URI and auto-probing a driver if no URI is
given. Introduce a dedicated virDrvConnectURIProbe method to enable the
probing functionality to be split from the driver opening functionality.

It is still possible for NULL to be passed to the virDrvConnectOpen
method after this change, because the remote driver needs special
handling to enable probing of the URI against a remote libvirtd daemon.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agolxc: allow use of lxc:///system URI as preferred format
Daniel P. Berrangé [Tue, 27 Mar 2018 13:32:07 +0000 (14:32 +0100)]
lxc: allow use of lxc:///system URI as preferred format

Historically we have used a bare lxc:/// URI for connecting to LXC. This
is different from our practice with QEMU, UML, Parallels, Libxl, BHyve
and VirtualBox drivers, which all use a path of '/system' or '/session'
or both.

By making LXC allow '/system', we have fully standardized on the use of
either '/system' or '/session' for all the stateful drivers that run
inside libvirtd.

Support for lxc:/// is of course maintained for back-compat.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agoxen: encourage use of xen:///system URI as preferred format
Daniel P. Berrangé [Tue, 27 Mar 2018 13:32:07 +0000 (14:32 +0100)]
xen: encourage use of xen:///system URI as preferred format

Historically we have used a bare xen:/// URI for connecting to the
legacy Xen driver. The new libxl Xen driver follows the new practice
of allowing '/system' as a path, as well as bare '/' for compat with
the old Xen driver.

This documents xen:///system as the preferred format for Xen, leaving
xen:/// as an undocumented feature just for back-compat.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_DRIVE_SERIAL
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_DRIVE_SERIAL

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_MEM_PATH
Ján Tomko [Thu, 29 Mar 2018 10:46:23 +0000 (12:46 +0200)]
qemu: deprecate QEMU_CAPS_MEM_PATH

Implied by QEMU >= 1.2.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_NO_USER_CONFIG
Ján Tomko [Thu, 29 Mar 2018 10:51:55 +0000 (12:51 +0200)]
qemu: deprecate QEMU_CAPS_NO_USER_CONFIG

Implied by QEMU >= 1.2.0.

Delete this one first, because QEMU_CAPS_NODEFCONFIG is only used
when QEMU_CAPS_NO_USER_CONFIG is unsupported.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_MONITOR_JSON
Ján Tomko [Wed, 28 Mar 2018 22:04:58 +0000 (00:04 +0200)]
qemu: deprecate QEMU_CAPS_MONITOR_JSON

We require QEMU >= 1.5.0, assume every QEMU supports it.
Sadly that does not let us trivially drop qemuMonitor's
priv->monJSON bool, because of qemuDomainQemuAttach.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: remove qemuDomainSupportsNetdev
Ján Tomko [Wed, 28 Mar 2018 23:36:20 +0000 (01:36 +0200)]
qemu: remove qemuDomainSupportsNetdev

Now that we assume QEMU_CAPS_NETDEV, the only thing left to check
is whether we need to use the legacy -net syntax because of
a non-conforming armchitecture.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: remove unused qemuDomainNetVLAN
Ján Tomko [Wed, 28 Mar 2018 23:26:54 +0000 (01:26 +0200)]
qemu: remove unused qemuDomainNetVLAN

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: clean up qemuDomainAttachNetDevice
Ján Tomko [Wed, 28 Mar 2018 23:25:00 +0000 (01:25 +0200)]
qemu: clean up qemuDomainAttachNetDevice

Now that we assume -netdev support, we no longer set the VLAN
or need the hostPlugged bool.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_NETDEV
Ján Tomko [Wed, 28 Mar 2018 21:36:13 +0000 (23:36 +0200)]
qemu: deprecate QEMU_CAPS_NETDEV

This makes qemuDomainSupportsNetdev identical to
qemuDomainSupportsNicdev and leaves some code in
qemuDomainAttachNetDevice to be cleaned up later.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agoqemu: deprecate QEMU_CAPS_PCI_MULTIFUNCTION
Ján Tomko [Wed, 28 Mar 2018 21:20:45 +0000 (23:20 +0200)]
qemu: deprecate QEMU_CAPS_PCI_MULTIFUNCTION

Supported since QEMU 0.13, but we require QEMU 1.5.0.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
7 years agotests: remove FLAG_JSON from xml2argvtest
Ján Tomko [Thu, 12 Apr 2018 15:11:14 +0000 (17:11 +0200)]
tests: remove FLAG_JSON from xml2argvtest

Unused as of commit <1e9a083>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>