1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-09-27 05:44:52 +03:00

Compare commits

...

810 Commits

Author SHA1 Message Date
Michal Privoznik
c8579871a9 all: don't wait for driver lock during startup
There are two daemons that wait for acquiring their pid files:
virtnetworkd and virtstoraged. This is undesirable as the idea
is to quit early if unable to acquire the pid file.

Fixes: v5.6.0-rc1~207.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-26 15:46:47 +01:00
Peter Krempa
3b9359cd44 check-symfile: Use pythonesque string formatting instead of perl
Commit d30a1ad044 translated the symbol file checker from perl to
python by doing a literal translation in most cases. Unfortunately one
string formatting operation was not really translated into python
leaving users with non-helpful error:

'Symbol $1 is listed twice'

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-26 10:01:35 +01:00
Laine Stump
9d6920bd7d net/qemu: move vlan/bandwidth validation out of network driver
In the past the network driver was (mistakenly) being called for all
interfaces, not just those of type='network', and so it had a chance
to validate all interface configs after the actual type of the
interface was known.

But since the network driver has been more completely/properly
separated from qemu, the network driver isn't called during the
startup of any interfaces except those with type='network', so this
validation no longer takes place for, e.g. <interface type='bridge'>
(or direct, etc). This in turn meant that a config could erroneously
specify a vlan tag, or bandwidth settings, for a type of interface
that didn't support it, and the domain would start without complaint,
just silently ignoring those settings.

This patch moves those validation checks out of the network driver,
and into virDomainActualNetDefValidate() so they will be done for all
interfaces, not just type='network'.

https://bugzilla.redhat.com/1741121
Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-25 15:30:10 -05:00
Laine Stump
b03d9e9593 conf: add hypervisor agnostic, domain start-time, validation function for NetDef
<interface> devices (virDomainNetDef) are a bit different from other
types of devices in that their actual type may come from a network (in
the form of a port connection), and that doesn't happen until the
domain is started. This means that any validation of an <interface> at
parse time needs to be a bit liberal in what it accepts - when
type='network', you could think that something is/isn't allowed, but
once the domain is started and a port is created by the configured
network, the opposite might be true.

To solve this problem hypervisor drivers need to do an extra
validation step when the domain is being started. I recently (commit
3cff23f7, libvirt 5.7.0) added a function to peform such validation
for all interfaces to the QEMU driver -
qemuDomainValidateActualNetDef() - but while that function is a good
single point to call for the multiple places that need to "start" an
interface (domain startup, device hotplug, device update), it can't be
called by the other hypervisor drivers, since 1) it's in the QEMU
driver, and 2) it contains some checks specific to QEMU. For
validation that applies to network devices on *all* hypervisors, we
need yet another interface validation function that can be called by
any hypervisor driver (not just QEMU) right after its network port has
been created during domain startup or hotplug. This patch adds that
function - virDomainActualNetDefValidate(), in the conf directory,
and calls it in appropriate places in the QEMU, lxc, and libxl
drivers.

This new function is the place to put all network device validation
that 1) is hypervisor agnostic, and 2) can't be done until we know the
"actual type" of an interface.

There is no framework for validation at domain startup as there is for
post-parse validation, but I don't want to create a whole elaborate
system that will only be used by one type of device. For that reason,
I just made a single function that should be called directly from the
hypervisors, when they are initializing interfaces to start a domain,
right after conditionally allocating the network port (and regardless
of whether or not that was actually needed). In the case of the QEMU
driver, qemuDomainValidateActualNetDef() is already called in all the
appropriate places, so we can just call the new function from
there. In the case of the other hypervisors, we search for
virDomainNetAllocateActualDevice() (which is the hypervisor-agnostic
function that calls virNetworkPortCreateXML()), and add the call to our
new function right after that.

The new function itself could be plunked down into many places in the
code, but we already have 3 validation functions for network devices
in 2 different places (not counting any basic validation done in
virDomainNetDefParseXML() itself):

1) post-parse hypervisor-agnostic
   (virDomainNetDefValidate() - domain_conf.c:6145)
2) post-parse hypervisor-specific
   (qemuDomainDeviceDefValidateNetwork() - qemu_domain.c:5498)
3) domain-start hypervisor-specific
   (qemuDomainValidateActualNetDef() - qemu_domain.c:5390)

I placed (3) right next to (2) when I added it, specifically to avoid
spreading validation all over the code. For the same reason, I decided
to put this new function right next to (1) - this way if someone needs
to add validation specific to qemu, they go to one location, and if
they need to add validation applying to everyone, they go to the
other. It looks a bit strange to have a public function in between a
bunch of statics, but I think it's better than the alternative of
further fragmentation. (I'm open to other ideas though, of course.)

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-25 15:30:05 -05:00
Laine Stump
012624217e conf: change args/return values of remaining virDomainNetGetActual*() to const
These all just return a scalar value, so there's no daisy-chained
fallout from changing them, and they can easily be combined in a
single patch.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-25 15:30:00 -05:00
Laine Stump
fdcd273be2 conf: return a const from virDomainNetGetActualVirtPortProfile
This also isn't required (due to the vportprofile being stored in the
NetDef as a pointer rather than being directly contained), but it
seemed dishonest to not mark it as const (and thus permit users to
modify its contents)

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-25 15:29:56 -05:00
Laine Stump
583ac17f5d conf: make virDomainNetGetActualBandwidth arg/return value const
In this case, the virNetDevBandwidthPtr that is returned is not to a
region within the virDomainNetDef arg, but points elsewhere (the
NetDef has the pointer, not the entire object), so technically it's
not necessary to make the return value a const, but it's a bit
disingenuous to *not* do it.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-25 15:29:51 -05:00
Laine Stump
12207fcfcf conf: make virDomainNetGetActualVlan arg/return val const
This is needed if we want to call the function when the
virDomainNetDef* we have is a const.

Since virDomainNetGetActualVlan returns a pointer to memory that is
within the virDomainNetDefPtr arg, the returned pointer must also be
made const. This leads to a cascade of other virNetDevVlanPtr's that
must be changed to "const virNetDevVlan *".

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-25 15:29:46 -05:00
Laine Stump
1b029a929d qemu: add mac address to error messages in qemuDomainValidateActualNetDef
This makes it easier to understand which interface's config caused the
error.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-25 15:29:41 -05:00
Michal Privoznik
9b1d53d417 qemu_capabilities: Use proper free function for caps->cpuModels
The cpuModels member of _virQEMUCapsAccel struct is not a
virObject but regular struct with a free function defined:
qemuMonitorCPUDefsFree(). Use that when clearing parent structure
instead of virObjectUnref() to avoid a memleak:

==212322== 57,275 (48 direct, 57,227 indirect) bytes in 3 blocks are definitely lost in loss record 623 of 627
==212322==    at 0x4838B86: calloc (vg_replace_malloc.c:762)
==212322==    by 0x554A158: g_malloc0 (in /usr/lib64/libglib-2.0.so.0.6000.6)
==212322==    by 0x17B14BF5: qemuMonitorCPUDefsNew (qemu_monitor.c:3587)
==212322==    by 0x17B27BA7: qemuMonitorJSONGetCPUDefinitions (qemu_monitor_json.c:5616)
==212322==    by 0x17B14B0B: qemuMonitorGetCPUDefinitions (qemu_monitor.c:3559)
==212322==    by 0x17A6AFBB: virQEMUCapsFetchCPUDefinitions (qemu_capabilities.c:2571)
==212322==    by 0x17A6B2CC: virQEMUCapsProbeQMPCPUDefinitions (qemu_capabilities.c:2629)
==212322==    by 0x17A70C00: virQEMUCapsInitQMPMonitorTCG (qemu_capabilities.c:4769)
==212322==    by 0x17A70DDF: virQEMUCapsInitQMPSingle (qemu_capabilities.c:4820)
==212322==    by 0x17A70E99: virQEMUCapsInitQMP (qemu_capabilities.c:4848)
==212322==    by 0x17A71044: virQEMUCapsNewForBinaryInternal (qemu_capabilities.c:4891)
==212322==    by 0x17A7119C: virQEMUCapsNewData (qemu_capabilities.c:4923)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-11-25 17:13:05 +01:00
Jiri Denemark
24d8202294 qemu: Use host-model CPU on s390 by default
On s390 machines host-passthrough and host-model CPUs result in the same
guest ABI (with QEMU new enough to be able to tell us what "host" CPU is
expanded to, which was implemented around 2.9.0). So instead of using
host-passthrough CPU when there's no CPU specified in a domain XML we
can safely use host-model and benefit from CPU compatibility checks
during migration, snapshot restore and similar operations.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-25 15:29:19 +01:00
Jiri Denemark
0a24331c6e cpu_s390: Don't check match attribute for host-model CPUs
The match attribute is only relevant for custom mode CPUs. Reporting
failure when match == 'minimum' regardless on CPU mode can cause
unexpected failures. We should only report the error for custom CPUs. In
fact, calling virCPUs390Update on a custom mode CPU should always report
an error as optional features are not supported on s390 either.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-25 15:29:19 +01:00
Jiri Denemark
af8e39921a cpu_conf: Don't format empty model for host-model CPUs
Most likely for historical reasons our CPU def formatting code is
happily adding useless <model fallback='allow'/> for host-model CPUs. We
can just drop it.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-25 15:29:19 +01:00
Jiri Denemark
65fa7bba1a cpu_conf: Fix default value for CPU match attribute
Commit v0.8.4-66-g95ff6b18ec (9 years ago) changed the default value for
the cpu/@match attribute to 'exact' in a rather complicated way. It did
so only if <model> subelement was present and set -1 otherwise (which is
not expected to ever happen). Thus the following two equivalent XML
elements:

    <cpu mode='host-model'/>

and

    <cpu mode='host-model'>
      <model/>
    </cpu>

would be parsed differently. The former would end up with match == -1
while the latter would have match == 1 ('exact'). This is not a big deal
since the match attribute is ignored for host-model CPUs, but we can
simplify the code and make it a little bit saner anyway.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-25 15:29:19 +01:00
Pavel Mores
d3f2a8bd47 qemu: added tests of the new default video type selection algorithm
The test case for x86_64 and neither cirrus nor vga capability is of the
xml2argv type because it actually fails to parse the XML at all [*] which
is something that xml2xml tests don't seem to handle.  xml2argv test fails
to produce a qemu argv for this case which xml2argv tests can handle.

[*] This is a consequence of the decision not to have a fallback if the
obvious choices (cirrus and vga) aren't viable due to missing QEMU caps.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Pavel Mores <pmores@redhat.com>
2019-11-25 08:47:08 -05:00
Pavel Mores
33a9757852 qemu: the actual change of default video devide type selection algorithm
If a graphics device was added to XML that had no video device, libvirt
automatically added a video device which was always of type 'cirrus' on
x86_64, even if the underlying qemu didn't support cirrus.

This patch refines a bit the decision about the type of the video device.
Based on QEMU capabilities, cirrus is still preferred but only added if
QEMU supports it, otherwise VGA is used if supported by QEMU.  There is now
no fallback as libvirt only aspires to generate a basic working config and
leaves anything more specific up to higher-level management tools.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Pavel Mores <pmores@redhat.com>
2019-11-25 08:47:08 -05:00
Pavel Mores
4a067e70fa qemu: prepare existing test for change of the default video device type
The test relied implicitly on default video device being cirrus.  As we're
about to change that the test would start failing.  To avoid this, just make
the test's requirement explicit.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Pavel Mores <pmores@redhat.com>
2019-11-25 08:47:08 -05:00
Pavel Mores
b648d96289 qemu: default video device type selection algoritm moved into its own function
The default video device type selection algorithm we're about to deploy will
increase the amount of code dedicated to the task by amount enough to warrant
factoring the whole thing into its own function so as not to pollute the
caller qemuDomainDeviceVideoDefPostParse().  Do it now so that the actual
algorithm change later on is in a clean commit by itself and easy to review.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Pavel Mores <pmores@redhat.com>
2019-11-25 08:47:08 -05:00
Daniel P. Berrangé
68aa7f3851 travis: add fedora-31 & fedora-rawhide to the build images
The CentOS7 distro is quite old and the Ubuntu 18.04 distro
is already a year & half old. Adding a Fedora 31 image gives
us coverage of the newest stable distro release, and
fedora-rawhide gives us the cutting edge.

Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-25 10:28:04 +00:00
Erik Skultety
36a01c2a47 Revert "network: Check for QOS before blindly using it"
This reverts commit f4db846c32.

This patch results in the following error when trying to start
essentially any VM with default network:

unsupported configuration: QOS must be defined for network 'default'

Coverity didn't see that the bandwidth == NULL it complained about in
virNetDevBandwidthPlug was already checked properly in
networkCheckBandwidth, thus causing networkPlugBandwidth to return 0
and finish before a call to virNetDevBandwidthPlug would have been even
made.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-25 09:41:40 +01:00
Daniel P. Berrangé
bc7e72914a util: consolidate on one free callback for hash data
This previous commit introduced a simpler free callback for
hash data with only 1 arg, the value to free:

  commit 49288fac96
  Author: Peter Krempa <pkrempa@redhat.com>
  Date:   Wed Oct 9 15:26:37 2019 +0200

    util: hash: Add possibility to use simpler data free function in virHash

It missed two functions in the hash table code which need
to call the alternate data free function, virHashRemoveEntry
and virHashRemoveSet.

After the previous patch though, there is no code that
makes functional use of the 2nd key arg in the data
free function. There is merely one log message that can
be dropped.

We can thus purge the current virHashDataFree callback
entirely, and rename virHashDataFreeSimple to replace
it.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 14:21:28 +00:00
Daniel P. Berrangé
feef23e130 conf: stop using hash key when free'ing hash entries
The virChrdevHashEntryFree method uses the hash 'key'
as the name of the logfile it has to remove. By storing
a struct as the value which contains the stream and
the dev path, we can avoid relying on the hash key
when free'ing entries.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 14:21:16 +00:00
Peter Krempa
c6a9e54ce3 qemu: enable blockdev support
Now that all pieces are in place (hopefully) let's enable -blockdev.

We base the capability on presence of the fix for 'auto-read-only' on
files so that blockdev works properly, mandate that qemu supports
explicit SCSI id strings to avoid ABI regression and that the fix for
'savevm' is present so that internal snapshots work.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 12:51:27 +01:00
Peter Krempa
5b4b503be6 qemu: capabilities: Add detection of the 'savevm' fix for -blockdev
The 'savevm' HMP command didn't work properly with blockdev as it tried
to do snapshot of everything including the protocol nodes accessing
files which are not snapshottable. Qemu fixed this bug so now we need to
detect it to allow enabling blockdev.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 12:51:27 +01:00
Peter Krempa
e0300f92fc qemu: qapi: Add support for command features
The top level commands now can have 'feature' flags for fixes so add
support for querying those as well.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 12:51:27 +01:00
Peter Krempa
3460fef5a0 qemu: caps: Add capability for dynamic 'auto-read-only' support for files
Initial implementation of 'auto-read-only' didn't reopen the backing
files when needed. For '-blockdev' to work we need to be able to tel
qemu to open a file read-only and change it during blockjobs as we label
backing chains with a sVirt label which does not allow writing. The
dynamic auto-read-only supports this as it reopens files when writing
is demanded.

Add a capability to detect that the posix file based backends support
the dynamic part.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 12:51:27 +01:00
Peter Krempa
73445e49e0 tests: qemucapabilities: Refresh data for unreleased qemu-4.2 on x86_64
The data is captured from qemu v4.2.0-rc2-19-g2061735ff0

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 12:51:27 +01:00
Peter Krempa
48e57cd632 qemu: caps: Base support of 'backingStoreInput' domain feature on QEMU_CAPS_BLOCKDEV
The qemu driver will obey <backingStore> when we support blockdev.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 12:51:27 +01:00
Peter Krempa
4321bd0dd2 docs: Document support for obeying <backingStore> of <disk> on input
Until now we've only supported <backingStore> in an output mode. The
documentation for the element states that hypervisor drivers may start
to obey it in the future.

Update the documentation so that it mentions the recently added
'backingStoreInput' domain capability and explain what happens if it is
supported and <backingStore> is present on input.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 12:51:27 +01:00
Peter Krempa
757203ee52 conf: domcaps: Add 'backingStoreInput' domain capability
Historically we've only supported the <backingStore> as an output-only
element for domain disks. The documentation states that it may become
supported on input. To allow management apps detectin once that happens
add a domain capability which will be asserted if the hypervisor driver
will be able to obey the <backingStore> as configured on input.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 12:51:27 +01:00
Daniel P. Berrangé
eef089db78 docs: fix include of ACL permissions files
The XSL generator loads included HTML files relative to the source dir
but we need to tell it to load them from the build dir instead.

Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 11:14:20 +00:00
Daniel P. Berrangé
9434d7e139 docs: fix ability to view web pages from build tree
Some of the web content is only present in the source tree, thus when
viewing pages from the build tree they appear missing.

Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 11:14:20 +00:00
Daniel P. Berrangé
adfcc76575 docs: remove unused make targets
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 11:14:20 +00:00
Daniel P. Berrangé
0aa8536f14 docs: generate API reference pages for admin, qemu & lxc libraries
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 11:14:20 +00:00
Daniel P. Berrangé
fc24f22051 docs: use variable for referencing API XML filenames
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 11:14:20 +00:00
Daniel P. Berrangé
4ce0fea015 docs: drop building of API -refs.xml files
The API cross reference files are not used since

  commit d3043afe5c
  Author: Daniel Veillard <veillard@redhat.com>
  Date:   Mon Jan 21 08:08:33 2008 +0000

    Remove docs/API*.html
    * docs/API* docs/api.xsl docs/site.xsl docs/Makefile.am: remove the
      generation of the API*.html files as it's not really useful here

Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 11:14:16 +00:00
Daniel P. Berrangé
f6fbb2e67f docs: stop using custom rules for building / installing web pages
Define automake variables for all the data we need built and installed
and let automake generate the install rules normally.

Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 11:14:06 +00:00
Ján Tomko
e633461bdf scripts: use in even more
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2019-11-22 11:40:52 +01:00
Ján Tomko
65366bd960 scripts: check-aclrules: use regular expressions less often
Use a simple
  if "substr" in line
before running a regular expression, which saves time,
especially if the regex has a capture group.

This reduces runtime of the check by almost 78 % for me.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2019-11-22 11:40:52 +01:00
Ján Tomko
988f02a99c scripts: check-aclrules: use in instead of find
For checking whether a substring is present in a string,
using the pattern:
    "str" in string
is slightly faster than:
    string.find("str") != -1

Use it to shave off 4 % of the runtime of this script that
processes quite a few long source files.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2019-11-22 11:40:52 +01:00
Ján Tomko
424a385c3a scripts: speedup prohibit-duplicate-header
Running regular expressions with capture groups is expensive.
Bail out early if the line does not start with a '#'.

This reduces the runtime of the check by two thirds.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2019-11-22 11:40:52 +01:00
Pino Toscano
05d28facb5 virsh: limit completion of 'domhostname' to active domains
Getting the hostname of a guest usually requires a in-guest agent,
or generally can be determined only on active domains.

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-22 11:36:51 +01:00
Michal Privoznik
8fa0374c5b qemuProcessStop: Remove image metadata for running mirror jobs
If user starts a blockcommit or a blockcopy then we modify access
for qemu on both images and leave it like that until the job
terminates.  So far so good. Problem is, if user instead of
terminating the job (where we would modify the access again so
that the state before the job is restored) calls destroy on the
domain or if qemu dies whilst executing the block job.  In this
case we don't ever clear the access we granted at the beginning.
To fix this, maybe a bit harsh approach is used, but it works:
after all labels were restored (that is after
qemuSecurityRestoreAllLabel() was called), we iterate over each
disk in the domain and remove XATTRs from the whole backing chain
and also from any file the disk is being mirrored to.

This would have been done at the time of pivot, but it isn't
because user decided to kill the domain instead. If we don't do
this and leave some XATTRs behind the domain might be unable to
start.

Also, secdriver can't do this because it doesn't know if there is
any job running. It's outside of its scope - the hypervisor
driver is responsible for calling secdriver's APIs.

Moreover, this is safe to call because we don't remember labels
for any member of a backing chain except of the top layer. But
that one was restored in qemuSecurityRestoreAllLabel() call done
earlier. Therefore, not only we don't remember labels (and thus
this is basically a NOP for other images in the backing chain) it
is also safe to call this when no blockjob was started in the
first place, or if some parts of the backing chain are shared
with some other domains - this is NOP, unless a block job is
active at the time of domain destroy.

https://bugzilla.redhat.com/show_bug.cgi?id=1741456#c19

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-22 10:48:14 +01:00
Michal Privoznik
1c12b86185 qemu: Separate image metadata removal into a function
There are four places where we remove image XATTRs and in all of
them we have the same for() loop with the same body. Move it into
a separate function because I'm about to introduce fifth place
where the same needs to be done.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-22 10:48:04 +01:00
Peter Krempa
86085c9a2f qemu: Instantiate pflash via -machine when using blockdev
Install the convertor function which enables the internals that will use
-blockdev to make qemu open the firmware image and stop using -drive.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 08:32:25 +01:00
Peter Krempa
c8eb99eebf qemu: command: Build the 'pflash' drives via -machine
The old way to instantiate a pflash device via -drive was a hack since
it's a platform device.

The modern approach calls for configuring it via -machine and takes the
node name as an argument.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 08:32:25 +01:00
Peter Krempa
7d2f942af9 qemu: command: Build -blockdev-s for backing of pflash
As a first step we will build the blockdevs which will be supposed to
back the pflash drives when moving away from -drive.

This code is similar to the way we build the blockdevs for the disk, but
skips the copy-on-read layer and doesn't implement any legacy approach.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 08:32:25 +01:00
Peter Krempa
11d13ad8cf qemu: domain: Introduce helper to convert <loader> into virStorageSource
Add a helper which will covert the PFLASH code file and variable file
into the virStorageSource objects stored in private data so that we can
use them with -blockdev while keeping the infrastructure to determine
the path to the loaders intact.

This is a temporary solution until we will want to do snapshots of the
pflash where we will be forced do track the full backing chain in the
XML.

In the meanwhile just convert it partially so that we can stop using
-drive.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 08:32:25 +01:00
Peter Krempa
07675b0100 qemu: domain: Store virStorageSources representing pflash backing
To allow converting the pflash drives to blockdev we will need a
virStorageSource to allow using our helpers. Temporarily prior to
coverting loader data to a virStorageSoruce add private data which will
house this.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-22 08:32:25 +01:00
Peter Krempa
316223b6ad qemu: command: Extract formatting of -drive for pflash
Extract the old way to instantiate pflash devices to hold the firmware
via -drive to a separate function so that it can later be conditionally
disabled when -blockdev will be used.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-22 08:32:23 +01:00
Peter Krempa
c78fadb57c domcaps: Remove function initializing domain caps as unsupported
Commit 5751a0b6b1 added a helper function
called virDomainCapsFeaturesInitUnsupported which initialized all domain
capability features as unsupported.

When adding a new feature this would initialize it as unsupported also
for hypervisor drivers which the original author possibly didn't intend
to modify. To prevent accidental wrong value being reported in such case
revert back to initializing individual features in the hypervisor
drivers themselves.

This is not a straight revert as additonal patches modified how we store
the capabilities.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-22 08:16:51 +01:00
Erik Skultety
d6064e2759 libvirt-<module>: Check caller-provided buffers to be NULL with size > 0
Pre-Glib era which used malloc allowed the size of the client-side
buffers to be declared as 0, because malloc documents that it can either
return 0 or a unique pointer on 0 size allocations.
With glib this doesn't work anymore, because glib documents that for
such allocation requests NULL is always returned which results in an
error in our public API checks server-side.
This patch complements the fix in the RPC layer by explicitly erroring
out on the following combination of args used by our legacy APIs (their
moder equivalents don't suffer from this):

function(caller-allocated-array, size, ...) {
    if (!caller-allocated-array && size > 0)
        return error;
}

treating everything else as a valid input and potentially let that fail
on the server-side rather than client-side.

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

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-21 18:16:35 +01:00
Erik Skultety
bf2988235c rpc: gendispatch: Fix a couple of places adding trailing spaces
Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-21 18:16:18 +01:00
Ján Tomko
5e067ba4e1 conf: remove NULL check from virDomainQemuMonitorEventNew
The qemu_domain_monitor_event_msg struct in qemu_protocol.x
defines event as a nonnull_string and qemuMonitorJSONIOProcessEvent
also errors out on a non-NULL event.

Drop the check to fix the build with static analysis.

This essentially reverts commit d343e8203d

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-21 12:44:23 +01:00
Christian Ehrhardt
7611a1ef00 virt-aa-helper: testcase for shmem devices
Adding build time self tests for basic (deprecated), doorbell and plain mode.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2019-11-21 08:27:03 +01:00
Christian Ehrhardt
36afd1a78e virt-aa-helper: add rules for shmem devices
Shared memory devices need qemu to be able to access certain paths
either for the shared memory directly (mostly ivshmem-plain) or for a
socket (mostly ivshmem-doorbell).

Add logic to virt-aa-helper to render those apparmor rules based
on the domain configuration.

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

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Acked-by: Jamie Strandboge <jamie@canonical.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2019-11-21 08:26:56 +01:00
Christian Ehrhardt
d53f4d02d0 apparmor: let AppArmorSetSecurityImageLabel append rules
There are currently broken use cases, e.g. snapshotting more than one disk at
once like:
 $ virsh snapshot-create-as --domain eoan --disk-only --atomic
   --diskspec vda,snapshot=no  --diskspec vdb,snapshot=no
   --diskspec vdc,file=/test/disk1.snapshot1.qcow,snapshot=external
   --diskspec vdd,file=/test/disk2.snapshot1.qcow,snapshot=external
The command above will iterate from qemuDomainSnapshotCreateDiskActive and
eventually add /test/disk1.snapshot1.qcow first (appears in the rules)
to then later add /test/disk2.snapshot1.qcow and while doing so throwing
away the former rule causing it to fail.

All other calls to (re)load_profile already use append=true when adding
rules append=false is only used when restoring rules [1].

Fix this by letting AppArmorSetSecurityImageLabel use append=true as well.

Since this is removing a (unintentional) trigger to revoke all rules
appended so far we agreed on review to do some tests, but in the tests
no rules came back on:
- hot-plug
- hot-unplug
- snapshotting

Bugs:
https://bugs.launchpad.net/libvirt/+bug/1845506
https://bugzilla.redhat.com/show_bug.cgi?id=1746684

[1]: https://bugs.launchpad.net/libvirt/+bug/1845506/comments/13

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Acked-by: Jamie Strandboge <jamie@canonical.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2019-11-21 08:26:07 +01:00
Christian Ehrhardt
9714f270f1 apparmor: refactor AppArmorSetSecurityImageLabel
A lot of the code in AppArmorSetSecurityImageLabel is a duplicate of
what is in reload_profile, this refactors AppArmorSetSecurityImageLabel
to use reload_profile instead.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Acked-by: Jamie Strandboge <jamie@canonical.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2019-11-21 08:26:07 +01:00
Christian Ehrhardt
70cf0af7bf apparmor: drop useless call to get_profile_name
reload_profile calls get_profile_name for no particular gain, lets
remove that call. The string isn't used in that function later on
and not registered/passed anywhere.

It can only fail if it either can't allocate or if the
virDomainDefPtr would have no uuid set (which isn't allowed).

Thereby the only "check" it really provides is if it can allocate the
string to then free it again.

This was initially added in [1] when the code was still in
AppArmorRestoreSecurityImageLabel (later moved) and even back then had
no further effect than described above.

[1]: https://libvirt.org/git/?p=libvirt.git;a=blob;f=src/security/security_apparmor.c;h=16de0f26f41689e0c50481120d9f8a59ba1f4073;hb=bbaecd6a8f15345bc822ab4b79eb0955986bb2fd#l487

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Acked-by: Jamie Strandboge <jamie@canonical.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2019-11-21 08:26:06 +01:00
Christian Ehrhardt
9d38bce689 virt-aa-helper: clarify command line options
While only used internally from libvirt the options still are misleading
enough to cause issues every now and then.
Group modes, options and an adding extra file and extend the wording of
the latter which had the biggest lack of clarity.
Both add a file to the end of the rules, but one re-generates the
rules from XML and the other keeps the existing rules as-is not
considering the XML content.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Acked-by: Jamie Strandboge <jamie@canonical.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2019-11-21 08:26:06 +01:00
Jiri Denemark
5e939cea89 qemu: Store default CPU in domain XML
When starting a domain without a CPU model specified in the domain XML,
QEMU will choose a default one. Which is fine unless the domain gets
migrated to another host because libvirt doesn't perform any CPU ABI
checks and the virtual CPU provided by QEMU on the destination host can
differ from the one on the source host.

With QEMU 4.2.0 we can probe for the default CPU model used by QEMU for
a particular machine type and store it in the domain XML. This way the
chosen CPU model is more visible to users and libvirt will make sure
the guest will see the exact same CPU after migration.

Architecture specific notes
- aarch64: We only set the default CPU for TCG domains as KVM requires
  explicit "-cpu host" to work.

- ppc64: The default CPU for KVM is "host" thanks to some hacks in QEMU,
  we will translate the default model to the model corresponding to the
  host CPU ("POWER8" on a Power8 host, "POWER9" on Power9 host, etc.).
  This is not a problem as the corresponding CPU model is in fact an
  alias for "host". This is probably not ideal, but it's not wrong and
  the default virtual CPU configured by libvirt is the same QEMU would
  use. TCG uses various CPU models depending on machine type and its
  version.

- s390x: The default CPU for KVM is "host" while TCG defaults to "qemu".

- x86_64: The default CPU model (qemu64) is not runnable on any host
  with KVM, but QEMU just disables unavailable features and starts
  happily.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:07 +01:00
Jiri Denemark
4a79d391b5 qemuxml2*test: Add test cases for default CPU models on x86_64
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:07 +01:00
Jiri Denemark
f5466786ec qemuxml2*test: Add test cases for default CPU models on s390x
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:07 +01:00
Jiri Denemark
9dfa2655dd qemuxml2*test: Add test cases for default CPU models on ppc64
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:07 +01:00
Jiri Denemark
23763b5431 qemuxml2*test: Add test cases for default CPU models on aarch64
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:07 +01:00
Jiri Denemark
30c6d99209 qemuxml2argvtest: Update host arch for DO_TEST*ARCH* tests
To avoid mismatch between host and QEMU capabilities.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:07 +01:00
Jiri Denemark
d8e1d39663 conf: Define g_autoptr cleanup function for virCPUDef
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
ac89b0549e qemu: Use g_autoptr in qemuDomainDefPostParse
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
02e5cb0d1a qemu: Introduce virQEMUCapsGetMachineDefaultCPU
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
a882db7bea qemu: Probe for default CPU types
QEMU 4.2.0 will report default CPU types used by each machine type and
we will want to start using it.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
e41e3b29be qemu: Probe machine types for both KVM and TCG
Almost all TCG query-machines replies match KVM. The only exceptions are
4.2.0 replies on s390x which differ in the reported default CPU type.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
d5d2d8e34a qemu: Make probed machine types depend on accelerator
Some specifics of machine types may depend on the accelerator and thus
the data should be moved to virQEMUCapsAccel. The TCG machine types are
just copied from the ones probed for KVM to simplify the changes to
qemucapabilitiestest data files.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
518948997c qemu: Introduce virQEMUCapsCopyMachineTypes
The function copies machine type data from one QEMU caps structure to
another.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
4df4dcd270 qemu: Use typedef for virQEMUCapsMachineType
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
a068413e7c qemu: Move machine type data in capabilities cache
In preparation for making machine types dependent on the accelerator,
the <machine> elements are formatted between <cpu type='kvm'> and
<cpu type='tcg'>.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
de18836ea7 qemu: Pass virDomainVirtType to APIs dealing with machine types
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
4682197641 qemu: Split out virQEMUCapsFormatCache
All the code for formatting machine type data was moved to a standalone
virQEMUCapsFormatMachines function.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
299f12ad1f qemu: Split out virQEMUCapsLoadCache
All the code for loading machine type data was moved to a standalone
virQEMUCapsLoadMachines function.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
21b2025a0e qemu: Make virQEMUCapsIsMachineSupported static
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
42adc0b87d qemu: Make virQEMUCapsGetMachineTypesCaps static
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
c8fe9102fc qemu: Refactor probing of accelerator dependent data
To avoid duplicating code which selects the right virQEMUCapsAccel data
to be filled during probing.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
03828af3af qemu: Introduce virQEMUCapsProbeCPUDefinitionsTest
It is a tiny wrapper around virQEMUCapsProbeQMPCPUDefinitions which will
soon get private parameters and thus it cannot be exposed outside
qemu_capabilities.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
fa4db8ed6a qemu: Refactor virQEMUCapsFormatAccel
And make it use virQEMUCapsGetAccel once rather than repeating the same
code in all functions called from virQEMUCapsFormatAccel.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
4fd90d06e6 qemu: Refactor virQEMUCapsLoadAccel
And make it use virQEMUCapsGetAccel once rather than repeating the same
code in all functions called from virQEMUCapsLoadAccel.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
948d2fbb66 qemu: Drop virQEMUCapsGetHostCPUData
It was very similar to virQEMUCapsGetAccel.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
9a6fc6987c qemu: Introduce and use virQEMUCapsGetAccel
The function can be used to get the pointer to all data which depend on
the accelerator.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
8c9b93cd26 qemu: Introduce virQEMUCapsAccelClear
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
2e754ed694 qemu: Introduce virQEMUCapsAccelCopy
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
8f0948767b qemu: Introduce virQEMUCapsAccel structure
This is container for capabilities data that depend on the accelerator.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
fe893a19eb qemu: Add virQEMUCaps{Load,Format}Accel
The new functions are designed to load and format capabilities which
depend on the accelerator (host CPU expansion and CPU models).

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
34fc23a43b qemu: Drop unused virQEMUCapsGetDefaultMachine
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
94b9e68263 qemu: Store typename from query-cpu-definitions in qemuCaps
We need to create a mapping between CPU model names and their
corresponding QOM types.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
1f58d10197 conf: Drop virDomainCapsCPUModelsAddSteal
Both virDomainCapsCPUModelsAdd and virDomainCapsCPUModelsAddSteal are so
simple we can just squash the code in a single function.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
180ac4ca34 conf: Drop unused virDomainCapsCPUModelsFilter
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
bc0b22884a qemu: Switch qemuCaps to use qemuMonitorCPUDefs
We will need to keep some QEMU-specific data for each CPU model
supported by a QEMU binary. Instead of complicating the generic
virDomainCapsCPUModelsPtr, we can just directly store
qemuMonitorCPUDefsPtr returned by the capabilities probing code.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:06 +01:00
Jiri Denemark
857b88f5c3 qemu: Split virQEMUCapsFetchCPUModels
Most of the code moved to a new virQEMUCapsFetchCPUDefinitions function
and the existing virQEMUCapsFetchCPUModels just becomes a small wrapper
around virQEMUCapsFetchCPUDefinitions and virQEMUCapsCPUDefsToModels.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
76baa994b7 qemu: Rename virQEMUCaps{Get,Fetch}CPUDefinitions
The functions return virDomainCapsCPUModelsPtr and thus they should be
called *CPUModels for consistency. Functions called *CPUDefinitions will
work on qemuMonitorCPUDefsPtr.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
a8ca6b4dc4 qemu: Introduce virQEMUCapsCPUDefsToModels
The function translates qemuMonitorCPUDefsPtr (used by QEMU caps probing
code) into virDomainCapsCPUModelsPtr used by domain capabilities.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
b3ef7efaa5 qemu: Use virDomainCapsCPUUsable in qemuMonitorCPUDefInfo
While virDomainCapsCPUModel structure contains 'usable' field with
virDomainCapsCPUUsable type, the lower level structure specific to QEMU
driver used virTriStateBool for the same thing and we had to translate
between them.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
7f091cb6ed qemu: Use g_autofree in virQEMUCapsLoadCPUModels
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
ffcb39cbc1 qemu: Add qemuMonitorCPUDefsCopy
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
7e0a6ac04b qemu: Flatten qemuMonitorCPUDefs.cpus
Let's store qemuMonitorCPUDefInfo directly in the array of CPUs in
qemuMonitorCPUDefs rather then using an array of pointers.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
3aa53dcf01 qemu: Introduce qemuMonitorCPUDefs struct
It is a container for a CPU models list (qemuMonitorCPUDefInfo) and a
number of elements in this list.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
a94f67ee69 qemu: Change return type of virQEMUCapsFetchCPUDefinitions
The function would return a valid virDomainCapsCPUModelsPtr with empty
CPU models list if query-cpu-definitions exists in QEMU, but returns
GenericError meaning it's not in fact implemented. This behaviour is a
bit strange especially after such virDomainCapsCPUModels structure is
stored in capabilities XML and parsed back, which will result in NULL
virDomainCapsCPUModelsPtr rather than a structure containing nothing.

Let's just keep virDomainCapsCPUModelsPtr NULL if the QMP command is not
implemented and change the return value to int so that callers can
easily check for failure or success.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
fb35cbb329 qemu: Use g_autoptr in qemuMonitorJSONGetCPUDefinitions
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
7e3e31444c qemu: Use virQEMUCapsGetCPUDefinitions more
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
4d74990143 qemu: Filter models in virQEMUCapsGetCPUDefinitions
Some callers of virQEMUCapsGetCPUDefinitions will need to filter the
returned list of CPU models. Let's add the filtering parameters directly
to virQEMUCapsGetCPUDefinitions to avoid copying the CPU models list
twice.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
e20a11eecf qemu: Copy CPU models in virQEMUCapsGetCPUDefinitions
Rather than returning a direct pointer the list stored in qemuCaps the
function now creates a new copy of the CPU models list.

The main purpose of this seemingly useless change is to update callers
to free the result returned by virQEMUCapsGetCPUDefinitions because the
internals of this function will change significantly in the following
patches.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
de0ad11263 tests: Update 4.2.0 capabilities data on ppc64
Generated with "spapr/kvm: Set default cpu model for all machine
classes" fix for QEMU applied.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Jiri Denemark
10f07def3a tests: Add capabilities for QEMU 4.2.0 on s390x
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 17:22:05 +01:00
Daniel P. Berrangé
a5c72a0061 src: rewrite polkit ACL generator in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the genpolkit.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
a559ffec44 src: rewrite ACL rule checker in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the check-aclrules.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
c2d6e61d5a src: rewrite driver impl checker in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the check-driverimpls.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
4a5370ba41 src: rewrite driver name checker in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the check-drivername.pl tool in Python.

This was mostly a straight conversion, manually going line-by-line
to change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

In testing though it was discovered the existing code was broken
since it hadn't been updated after driver.h was split into many
files. Since the old code is being thrown away, the fix was done
as part of the rewrite rather than split into a separate commit.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
6f4f52d05f src: rewrite systemtap function generator in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the gensystemtap.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
952c018efe src: rewrite systemtap probe generator in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the dtrace2systemtap.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

The "--with-modules" flag was dropped because this functionality
is not implicitly always enabled.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
d30a1ad044 src: rewrite symfile library checker in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the check-symfile.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
31276b3b27 src: rewrite symfile sorting checker in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the check-symsorting.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
312f232b17 src: rewrite ACL permissions checker in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the check-aclperms.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
2d6f543b06 build-aux: rewrite header ifdef checker in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the header-ifdef.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Daniel P. Berrangé
b7d00249ea build-aux: rewrite mock inline checker in Python
As part of a goal to eliminate Perl from libvirt build tools,
rewrite the mock-noinline.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Tested-by: Cole Robinson <crobinso@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:45:25 +00:00
Peter Krempa
e136236158 qemu: checkpoint: Use qemuMonitorTransactionBitmapMergeSourceAddBitmap
Use the new helper in qemuCheckpointDiscard rather than constructing the
array manually.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 15:43:11 +01:00
Michal Privoznik
cdd8a6690e qemu: Forcibly mknod() even if it exists
Another weird bug appeared concerning qemu namespaces. Basically
the problem is as follows:

1) Issue an API that causes libvirt to create a node in domain's
   namespace, say /dev/nvme0n1 with 8:0 as major:minor (the API can
   be attach-disk for instance). Or simply create the node from a
   console by hand.

2) Detach the disk from qemu.

3) Do something that makes /dev/nvme0n1 change it's minor number.

4) Try to attach the disk again.

The problem is, in a few cases - like disk-detach - we don't
remove the corresponding /dev node from the mount namespace
(because it may be used by some other disk's backing chain). But
this creates a problem, because if the node changes its MAJ:MIN
numbers we don't propagate the change into the domain's
namespace. We do plain mknod() and ignore EEXIST which obviously
is not enough because it doesn't guarantee that the node has
updated MAJ:MIN pair.

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

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-20 14:05:37 +01:00
Ján Tomko
73197f9803 gnulib: remove mk*temp modules
After commits 4ac4773040 and
ef88698668, we use the GLib versions
of these functions.

Remove the corresponding gnulib modules.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-20 13:31:21 +01:00
Pavel Hrdina
f0da677956 bootstrap.conf: drop c-strcasestr gnulib module
Last usage was removed by commit
<41f88886198e231285cc813f8c0687c8ec5c9488> and commit
<0f4d31720430b4e3735064cc0d8f88a1a438e154> forgot to drop include.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 13:31:13 +01:00
Peter Krempa
2dbf7e2e6d gnulib: Remove use of 'strsep' module
We don't use strsep any more.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2019-11-20 13:31:01 +01:00
Ján Tomko
dd01eb4fd1 bootstrap: remove regex module
Now that we use GRegex everywhere, there is no need for this module.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-20 13:30:55 +01:00
Pavel Hrdina
722f55180f syntax-check: forbid usage of snprintf
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 13:30:34 +01:00
Pavel Hrdina
3c5dcf3427 syntax-check: update of sprintf rule to mention g_snprintf
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 13:30:11 +01:00
Pavel Hrdina
62aa66416a bootstrap.conf: remove usage of snprintf gnulib module
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 13:29:26 +01:00
Ján Tomko
6250accb8c gnulib: remove use of 'vsnprintf' module
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-20 13:29:06 +01:00
Ján Tomko
0ebe536144 gnulib: remove use of 'byteswap' module
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-20 13:29:00 +01:00
Peter Krempa
d7234fe317 gnulib: remove 'areadlink' module
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 13:28:52 +01:00
Peter Krempa
a4762294b9 qemu: monitor: Remove non-transaction based dirty bitmap APIs
We replaced them by use of transaction to simplify possible failure
scenarios.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 13:24:54 +01:00
Peter Krempa
cec4e32998 qemu: checkpoint: Fix rollback and access to unlocked 'vm' when deleting checkpoints
Delete/merge bitmaps when deleting checkpoints using a 'transaction' so
that we don't have to deal with halfway-failed scenarios and also fix
access to 'vm' while in the monitor lock.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 13:24:54 +01:00
Peter Krempa
2eb7c68332 tests: virschema: Propagate errors from directory traversal in testSchemaDir
testSchemaDir is a helper which invokes the schema test using virTestRun
on all schema files. Since the function itself is not called inside
virTestRun any helper function call is not dispatched to the user and
thus it's hard to debug the test. Propagate errors from the directory
traversal.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-20 12:57:50 +01:00
Peter Krempa
d154807d5b tests: utils: Introduce helper for dispatching libvirt errors
In cases when we call a libvirt helper which reports an error the error
would be hidden unless libvirt library debug is on. This produces a lot
of output and is hard to debug.

The helper provides a way to dispatch the libvirt error in specific
cases sice we do already dispatch it in case when virTestRun is used.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-20 12:57:50 +01:00
Peter Krempa
5f5542b44e tests: schema: Simplify memory handling using g_autofree
Refactor various functions to avoid multiple freeing function calls.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-20 12:57:50 +01:00
Jonathon Jongsma
7a69486c4d lib: fix documentation typo in virDomainGetGuestInfo()
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-11-20 09:13:52 +01:00
LanceLiu
8ecab214de remote_daemon_stream: Fix @client locking in daemonStreamFilter()
When dispatching a message read from client it is first passed
through registered filters. If one of the filters consumes the
message no further processing of the message is done. However,
the filter callbacks are called with the client object locked.
This breaks lock ordering in case of virStream filter, we always
acquire stream private data lock without the client object
locked. In other words, the daemonStreamFilter() does not follow
the lock ordering.

Signed-off-by: LanceLiu <liu.lance.89@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-19 16:09:53 +01:00
Daniel Henrique Barboza
3a085d221e tests: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-19 15:22:43 +01:00
Daniel Henrique Barboza
adf9c3f952 vbox: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-19 15:22:40 +01:00
Daniel Henrique Barboza
6c63adc4a0 qemu: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-19 15:22:37 +01:00
John Ferlan
f4db846c32 network: Check for QOS before blindly using it
If networkAllocatePort calls networkPlugBandwidth eventually the
port->bandwidth would be passed to virNetDevBandwidthPlug which
requires that the parameter is non-NULL.  Coverity additionally
notes that since (!port->bandwidth) is checked earlier in the
networkAllocatePort method that the subsequent call to blindly
use if for a function that requires it needs to check.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-19 07:02:08 -05:00
John Ferlan
10881fac46 network: Use local variables in networkUpdatePortBandwidth
We go through the trouble of checking {old|new}Bandwidth[->in] and
storing the result in local @old_floor and @new_floor, but then
we don't use them. Instead we make derefs to the longer name. This
caused Coverity to note dereferencing newBandwidth->in without first
checking @newBandwidth like was done for new_floor could cause a
NULL dereference.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-19 07:02:02 -05:00
John Ferlan
d70024d0a6 util: Remove unnecessary check in virFileRewrite
Since g_strdup_printf will abort, we know @newfile won't be NULL.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-19 07:01:32 -05:00
Michal Privoznik
6c37ee4da2 qemuProcessStop: Set @def early
The @def variable holds pointer to the domain defintion, but is
set only somewhere in the middle of the function. This is
suboptimal.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2019-11-19 10:25:56 +01:00
Jonathon Jongsma
78e90879fa Add news for virDomainAgentSetResponseTimeout()
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-19 08:15:56 +01:00
Ján Tomko
af5aa266ed g_mkstemp_full: pass O_RDWR
This flag is not implied by g_mkstemp_full, only by g_mkstemp.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reported-by: Bjoern Walk <bwalk@linux.ibm.com>
Fixes: 4ac4773040
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-18 18:49:02 +01:00
Daniel P. Berrangé
7909359d60 build-aux: rewrite duplicate header checker in Python
As part of an goal to eliminate Perl from libvirt build tools,
rewrite the prohibit-duplicate-header.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-18 17:24:31 +00:00
Erik Skultety
2816fe2e84 qemu: Fix NULL ptr dereference caused by qemuDomainDefFormatBufInternal
qemuDomainDefFormatBufInternal function wasn't testing whether the CPU
was actually defined in the XML and saving such a domain resulted in the
following backtrace:

0 in qemuDomainMakeCPUMigratable (cpu=0x0)
1 in qemuDomainDefFormatBufInternal()
2 in qemuDomainDefFormatXMLInternal()
3 in qemuDomainDefFormatLive()
4 in qemuDomainSaveInternal()
5 in qemuDomainSaveFlags()
6 in qemuDomainSave()
7 in virDomainSave()

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-18 14:32:49 +01:00
Pavel Hrdina
4c0398b528 qemu_process: fix starting VMs if machine group has limited cpuset.cpus
Commit <f136b83139c63f20de0df3285d9e82df2fb97bfc> reworked process
affinity setting but did not take cgroups into account which introduced
an issue when starting VM with custom cpuset.cpus for the whole machine
group.

If the machine group is limited to some pCPUs libvirt should not try to
set a VM to run on all pCPUs as it will result in permission denied when
writing to cpuset.cpus.

To fix this the affinity has to be set separately from cgroups cpuset.

Resolves: <https://bugzilla.redhat.com/show_bug.cgi?id=1746517>

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-18 10:41:44 +01:00
Michal Privoznik
02bf7cc68b virbpf: Fix typecast to __aligned_u64 type
In functions implemented here we fill this attr union (type of
bpf_attr) and just pass it to syscall(2). Thing is that some of
the union members are type of __aligned_u64. This is not regular
uint64_t. This one is explicitly aligned to 8 bytes, while
uint64_t can be aligned to 4 bytes (on 32 bits). We've used
explicit typecast to uint64_t to shut compiler which would
otherwise complain of assigning a pointer into an integer. Well,
we have uintptr_t just for that.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-18 08:59:13 +01:00
Michal Privoznik
c10b78370d vircgroupv2devices: Fix format string for size_t variable
In virCgroupV2DevicesReallocMap() we are debug printing both
arguments passed to the function. However, the @size argument is
type of size_t but '%lu' is used to format it.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-18 08:53:30 +01:00
Jonathon Jongsma
2de5e131b9 news: mention 'ramfb' mdev attribute
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-17 20:13:52 -05:00
Michal Privoznik
c07a33bef9 virbpf: Check if syscall() is available
There are some OSes which don't have syscall() nor
<sys/syscall.h>. We already check for the header file in
configure phase, so we just need to add check for
HAVE_SYS_SYSCALL_H to HAVE_DECL_BPF_PROG_QUERY.

While I'm at it, some header files we are including are not
needed, so their includes can be safely dropped.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-16 06:39:23 +01:00
Jim Fehlig
5a5e92000d spec: Remove build-time list of edk2 firmwares
Fedora now advertises supported firmwares via descriptor files.
Since the upstream spec file assumes recent Fedora, remove the
build-time list of firmwares, which can produce a warning after
commit 75597f022a.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-15 16:49:30 -07:00
Jonathon Jongsma
889cd827ae conf: validate video resolution
Ensure that both x and y are non-zero when resolution is specified for a
video device.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-15 13:30:56 -05:00
Jonathon Jongsma
026c2ffb50 conf: report errors when parsing video acceleration
Since this function is now only called when an 'acceleration' element is
present in the xml, any failure to parse the element will be considered
an error.

Previously, we detected some types of errors, but we would only log an
error (virReportError()), but still return a partially-specified accel
object to the caller. This patch returns NULL for all parsing errors and
reports that error back up to the caller.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-15 13:30:56 -05:00
Jonathon Jongsma
754e4c24ec conf: report errors when parsing video resolution
The current code doesn't properly handle errors when parsing a video
device's resolution.  We were returning a NULL structure for the case
where 'x' or 'y' were missing. But for the other error cases, we were
logging an error (virReportError()), but still returning an
under-specified structure. That under-specified structure was used by
the calling function rather than properly reporting an error.

This patch changes the parse function to return NULL on any parsing
error and changes the calling function to report an error when NULL is
returned.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-15 13:30:56 -05:00
Jonathon Jongsma
333cca0bfc conf: iterate video model children in parent function
Previously, we were passing the video "model" node to the "acceleration"
and "resolution" parsing functions and requiring them to iterate over
the children to discover and parse the appropriate node. It makes more
sense to move this responsibility up to the parent function and just
pass these functions the node that needs to be parsed.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-15 13:30:55 -05:00
Miguel Ángel Arruga Vivas
a74df786a2 vircgroup: Ensure /machine group is associated with its parent
Call first virCgroupNew on the parent group virCgroupNewPartition if
it is available on before the creation of the child group.  This
ensures that the creation of a first level group on the unified
architecture, as the check at virCgroupV2ParseControllersFile as the
parent file is there.

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

Signed-off-by: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-15 15:45:25 +01:00
Miguel Ángel Arruga Vivas
ddcb33bdc0 doc: cgroups: Remove unwanted references to systemd
The non-systemd configurations do not create system neither user
control groups.  The title of the diagram referenced systemd too.

Signed-off-by: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-15 15:45:20 +01:00
Gregor Kopka
98f931de7c Allow a zfs pool or dataset as source for zfs storage backend
Enables hosting a pool on an existing zfs pool without affecting
other datasets there.
Specify dataset instead of pool as source to use.
Parent of dataset must exist for pool-build to succeed.
Beware that pool-delete destroys the source dataset and all children.

Solves: https://www.redhat.com/archives/libvirt-users/2017-April/msg00041.html

Signed-off-by: Gregor Kopka <gregor@kopka.net>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-15 15:25:53 +01:00
Pavel Hrdina
43b01ef2d6 replace use of gnulib snprintf by g_snprintf
Glib implementation follows the ISO C99 standard so it's safe to replace
the gnulib implementation.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-15 15:07:40 +01:00
Pavel Hrdina
8addef2bef vircgroupmock: mock virCgroupV2DevicesAvailable
We need to mock virCgroupV2DevicesAvailable() in order to remove any
dependency on kernel as BPF devices might not be available.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:43 +01:00
Pavel Hrdina
c359cb9aee vircgroup: workaround devices in hybrid mode
So the issue here is that you can end up with configuration where
you have cgroup v1 and v2 enabled at the same time and the devices
controllers is enabled for cgroup v1.

In cgroup v2 there is no devices controller, the device access is
controlled using BPF and since it is not a cgroup controller both
of them can exists at the same time and both of them are applied while
resolving access to devices.

In order to avoid configuring both BPF and cgroup v1 devices we will
use BPF if possible and otherwise fallback to cgroup v1 devices.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:43 +01:00
Pavel Hrdina
884479b42b vircgroup: introduce virCgroupV2DenyAllDevices
If we want to deny all devices we just need to replace any existing
program with new program with empty map.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:42 +01:00
Pavel Hrdina
285aefb31c vircgroup: introduce virCgroupV2AllowAllDevices
If we want to allow all devices with all permissions we need to replace
any existing program that has any rule configured, otherwise we just
need to add new rule which will for example allow read access to all
devices.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:41 +01:00
Pavel Hrdina
d5b09ce5d9 vircgroup: introduce virCgroupV2DenyDevice
In order to deny device we need to check if there is any entry in BPF
map and we need to load the current value from map if there is already
entry for that device.  If both values are same we can remove that entry
but if they are different we need to update the entry because we don't
have to deny all access, but for example only write access.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:40 +01:00
Pavel Hrdina
5d49651912 vircgroup: introduce virCgroupV2AllowDevice
In order to allow device we need to create key and value which will be
used to update BPF map.  virBPFUpdateElem() can override existing
entries in BPF map so we need to check if that entry exists in order to
track number of entries in our map.

This can add rule for specific device but major and minor can be both
-1 which follows the same behavior as in cgroup v1.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:39 +01:00
Pavel Hrdina
b18b0ce609 vircgroup: introduce virCgroupV2DevicesGetKey
Device rules are stored in BPF map that is a hash type, this function
will create a key based on major and minor id of device.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:38 +01:00
Pavel Hrdina
63cfe7b84d vircgroup: introduce virCgroupV2DeviceGetPerms
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:37 +01:00
Pavel Hrdina
6a24bd75ed vircgroup: introduce virCgroupV2DevicesRemoveProg
We need to close our FD that we have for BPF program and map in order
to let kernel remove all resources once the cgroup is removed as well.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:34 +01:00
Pavel Hrdina
ef747499a5 vircgroup: introduce virCgroupV2DevicesPrepareProg
This function will be called for every virCgroup(Allow|Deny)* API in
order to prepare BPF program for guest.  Since libvirtd can be restarted
at any point we will first try to detect existing progam, if there is
none we will create a new empty BPF program and lastly if we don't have
any space left in the existing BPF map we will create a new copy of the
BPF map with more space and attach a new program with that map into the
guest cgroup.

This solution allows us to start with reasonably small BPF map consuming
only small amount of memory and if needed we can easily extend the BPF
map if there is a lot of host devices used in guest or if user wants to
hot-plug a lot of devices once the guest is running.

Since there is no way how to reallocate existing BPF map we need to
create a new copy if we run out of space in current BPF map.

This overcomes all the limitations in BPF:

    - map used in program has to be created before the program is loaded
      into kernel

    - once map is created you cannot change its size

    - you cannot replace map in existing program

    - you cannot use an array of maps because it can store FD to maps
      of one specific size so we would not be able to use it to overcome
      the second issue

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:33 +01:00
Pavel Hrdina
afa2788662 vircgroup: introduce virCgroupV2DevicesCreateProg
This function creates new BPF program with new empty BPF map with the
default size and attaches it to the guest cgroup.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:32 +01:00
Pavel Hrdina
ce11a5c59f vircgroup: introduce virCgroupV2DevicesDetectProg
This function will be called if libvirtd was restarted while some
domains were running.  It will try to detect existing programs attached
to the guest cgroup.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:31 +01:00
Pavel Hrdina
48423a0b5d vircgroup: introduce virCgroupV2DevicesAttachProg
This function loads the BPF prog with prepared map into kernel and
attaches it into guest cgroup.  It can be also used to replace existing
program in the cgroup if we need to resize BPF map to store more rules
for devices. The old program will be closed and removed from kernel.

There are two possible ways how to create BPF program:

    - One way is to write simple C-like code which can by compiled into
      BPF object file which can be loaded into kernel using elfutils.

    - The second way is to define macros which look like assembler
      instructions and can be used directly to create BPF program that
      can be directly loaded into kernel.

Since the program is not too complex we can use the second option.

If there is no program, all devices are allowed, if there is some
program it is executed and based on the exit status the access is
denied for 0 and allowed for 1.

Our program will follow these rules:

    - first it will try to look for the specific key using major and
      minor to see if there is any rule for that specific device

    - if there is no specific rule it will try to look for any rule that
      matches only major of the device

    - if there is no match with major it will try the same but with
      minor of the device

    - as the last attempt it will try to look for rule for all devices
      and if there is no match it will return 0 to deny that access

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:05 +01:00
Pavel Hrdina
30b6ddc44c vircgroup: introduce virCgroupV2DevicesAvailable
There is no exact way how to figure out whether BPF devices support is
compiled into kernel.  One way is to check kernel configure options but
this is not reliable as it may not be available.  Let's try to do
syscall to which will list BPF cgroup device programs.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:04 +01:00
Pavel Hrdina
07946d6e39 util: introduce virbpf helpers
In order to implement devices controller with cgroup v2 we need to
add support for BPF programs, cgroup v2 doesn't have devices controller.

This introduces required helpers wrapping linux syscalls.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-15 12:58:00 +01:00
Michal Privoznik
9e4445ebc3 tests: Mock access to /dev/kvm
Some of our tests try to validate domain XMLs they are working
with (not intentionally, simply because they call top level
domain XML parse function). Anyway, this implies that we build
domain capabilities also - see
virQEMUDriverGetDomainCapabilities(). And since some domain XMLs
are type of 'kvm' the control gets through
virQEMUCapsFillDomainCaps() and virHostCPUGetKVMMaxVCPUs() to
opening /dev/kvm which may be missing on the machine we're
running 'make check'.

Previously, we did not see this issue, because it was masked. If
building domain capabilities failed for whatever reason, we
ignored the failure. Only v5.9.0-207-gc69e6edea3 uncovered the
problem (it changed reval from 0 to -1 if
virQEMUDriverGetDomainCapabilities() fails). Since the referenced
commit is correct, we need to mock access to /dev/kvm in our
tests.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-15 11:56:46 +01:00
Jiri Denemark
7bd41cb62c virsh: Fix typo in the man page
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
2019-11-15 09:34:20 +01:00
Jonathon Jongsma
95f5ac9ae5 Add API to change qemu agent response timeout
Some layered products such as oVirt have requested a way to avoid being
blocked by guest agent commands when querying a loaded vm. For example,
many guest agent commands are polled periodically to monitor changes,
and rather than blocking the calling process, they'd prefer to simply
time out when an agent query is taking too long.

This patch adds a way for the user to specify a custom agent timeout
that is applied to all agent commands.

One special case to note here is the 'guest-sync' command. 'guest-sync'
is issued internally prior to calling any other command. (For example,
when libvirt wants to call 'guest-get-fsinfo', we first call
'guest-sync' and then call 'guest-get-fsinfo').

Previously, the 'guest-sync' command used a 5-second timeout
(VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT), whereas the actual command that
followed always blocked indefinitely
(VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK). As part of this patch, if a
custom timeout is specified that is shorter than
5 seconds,  this new timeout is also used for 'guest-sync'. If there is
no custom timeout or if the custom timeout is longer than 5 seconds, we
will continue to use the 5-second timeout.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-14 19:10:01 +01:00
Ján Tomko
954f36e078 syntax-check: prefer g_mkstemp_full and g_mkdtemp
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 19:02:31 +01:00
Ján Tomko
ef88698668 Use g_mkdtemp instead of mkdtemp
Prefer the GLib version to the one from gnulib.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 19:02:31 +01:00
Ján Tomko
4ac4773040 Use g_mkstemp_full instead of mkostemp(s)
With g_mkstemp_full, there is no need to distinguish between
mkostemp and mkostemps (no suffix vs. a suffix of a fixed length),
because the GLib function looks for the XXXXXX pattern everywhere
in the string.

Use S_IRUSR | S_IWUSR for the permissions and do not pass O_RDWR
in flags since it's implied.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 19:02:31 +01:00
Ján Tomko
c4ae19d1ec tests: use GRegex in vboxsnapshotxmltest
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
b96e0dbba9 util: use GRegex in virStringMatch
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
9c76dd3a2e util: use GRegex in virStringSearch
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
514b2b272b util: use GRegex for virLogRegex
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
039d26fcb0 util: use GRegex in virCommandRunRegex
This saves us from allocating vars upfront, since GLib deals with
that for us.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
70d6994679 storage: use GRegex virStorageBackendLogicalParseVolExtents
Using GRegex simplifies the code since g_match_info_fetch will
copy the matched substring for us.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
815db3ea58 libxl: remove 'ret' from xenParseSxprVifRate
Now that the cleanup section is empty, the ret variable is no longer
necessary.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
c4ac8e4168 libxl: use GRegex in xenParseSxprVifRate
Use GRegex from GLib instead of regcomp.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
5c98d442df libxl: use g_autofree in xenParseSxprVifRate
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
77d228468d libxl: use GRegex in libxlGetAutoballoonConf
Replace the use of regcomp with GRegex.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
5c89468ff2 remove unused regex.h includes
The code using regexes got moved, but the include stayed.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Ján Tomko
8aa0f8e6dc libxl: do not use G_REGEX_EXTENDED
This flag is not needed to use extended regular expression syntax
with GRegex and it makes GRegex ignore whitespace in the regex.

Remove the unintended usage, even though it should not matter in this
case.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 17:45:40 +01:00
Jonathon Jongsma
4b95738c8f qemu: add 'ramfb' attribute for mediated devices
The 'ramfb' attribute provides a framebuffer to the guest that can be
used as a boot display for the vgpu

For example, the following configuration can be used to provide a vgpu
with a boot display:

    <hostdev mode='subsystem' type='mdev' model='vfio-pci' display='on' ramfb='on'>
        <source>
            <address uuid='$UUID'/>
        </source>
    </hostdev>

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jonathon Jongsma
c66f2be6f1 qemu: use domain caps to validate video device model
As suggested by Cole, this patch uses the domain capabilities to
validate the supported video model types. This allows us to remove the
model type validation from qemu_process.c and qemu_domain.c and
consolidates it all in a single place that will automatically adjust
when new domain capabilities are added.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jonathon Jongsma
42cc3eb912 qemu: move validation of video accel to qemu_domain.c
Continue consolidation of video device validation started in previous
patch.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jonathon Jongsma
425310d1c8 qemu: validate vhost-user video backend in qemu_domain.c
The goal is to move all of the video device validation to a single place
and use domain caps to validate the supported video device models. Since
qemuDomainDeviceDefValidateVideo() is called from
qemuProcessStartValidate(), these changes should not change anny
behavior.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jonathon Jongsma
d5e9f47e76 qemu: set domain capability for video type "none"
In a follow-up commit, we will use the domain capabilities to validate
video device configurations, which means that we also need to make sure
that the domain capabilities include the "none" video device.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jonathon Jongsma
eecab2e80b qemu: set domain capability for ramfb device
commit 9bfcf0f62d added the
QEMU_CAPS_DEVICE_RAMFB capability but did not set the domain capability.
This patch sets the domain capability for the ramfb device and updates
the tests.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jonathon Jongsma
b964735609 qemu: Set capabilities properly for tests
Several tests were not specifying the necessary qemu capabilities for
what they were testing. Due to the way that the video devices are
currently validated, this is not causing any problems. But a change to
video device validation in a following patch would have exposed this
issue and resulted in multiple test failures about the domain
configuration not supporting particular video models.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jonathon Jongsma
c69e6edea3 qemu: use g_autoptr in qemuDomainDeviceDefValidate()
This allows us to simplify the function and avoid jumping to 'cleanup'.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jonathon Jongsma
ed831437af qemu: fix domain device validation
When the virDomainCapsDeviceDefValidate() function returned an error
status (-1), we were aborting the function early, but returning the
default return value (0). This patch properly returns an error in that
case.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-14 11:37:50 -05:00
Jim Fehlig
2552752f0b libxl: Fix lock manager lock ordering
The ordering of lock manager locks in the libxl driver has a flaw that was
uncovered by a migration error path. In the perform phase of migration, the
source host calls virDomainLockProcessPause to release the lock before
sending the VM to the destination host. If the send fails an attempt is made
to reacquire the lock with virDomainLockProcessResume, but that too can fail
if the destination host has not finished cleaning up the failed VM and
releasing the lock it acquired when starting to receive the VM.

This change delays calling virDomainLockProcessResume in libxlDomainStart
until the VM is successfully created, but before it is unpaused. A similar
approach is used by the qemu driver, avoiding the need to release the lock
if VM creation fails. In the migration perform phase, releasing the lock
with virDomainLockProcessPause is delayed until the VM is successfully
sent to the destination, which avoids reacquiring the lock if the send
fails.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-14 09:08:54 -07:00
Daniel Henrique Barboza
6ab3d0b9ea qemu: hotplug: remove unused cleanup labels
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-14 10:46:57 -05:00
Daniel Henrique Barboza
54c17f8498 qemu: hotplug: use g_autoptr() with virConnectPtr
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-14 10:46:57 -05:00
Michal Privoznik
1b0de07f41 virhostuptime: Wrap virHostGetBootTimeProcfs() call in an ifdef
The virHostGetBootTimeProcfs() function is defined only for Linux
and therefore it's only call should also be done if we're on
Linux.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-14 16:42:51 +01:00
Peter Krempa
ffd151d17b qemu: domcaps: Simplify adding new domaincaps based on qemu caps
Add a helper which converts qemu emulator capabilities to the domain
capability XML. This will simplify future additions of new features.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
caa6dc3b31 domaincaps: Store domain capability features in an array
Declare the capabilities as enum values and store them in an array. This
makes adding new features more straightforward and simplifies the
formatter which now doesn't require changing.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
ae92101be4 qemu: domcaps: Initialize all features
While the qemu driver currently implements all domain capability
features, we should initialize all features using the helper similarly
to how we do it in drivers which don't support any.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
5751a0b6b1 domcaps: Add function for initializing domain caps as unsupported
For future extensions of the domain caps it's useful to have a single
point that initializes all capabilities as unsupported by a driver. The
driver then can enable specific ones.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
f2316d8d26 conf: domaincaps: Use virXMLFormatElement in virDomainCapsFormatFeatures
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
8bc9131b1a conf: domaincaps: Extract formatting of the <features> subelement
Extract it to virDomainCapsFormatFeatures so that the main function does
not get so bloated over time.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
c4940317ef conf: domaincaps: Replace FORMAT_SINGLE macro by a function
Introduce qemuDomainCapsFeatureFormatSimple which does exactly the same
thing but it's a function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
38bc2e8c1b util: file: Replace use of 'strsep' with virStringSplit
Use our helper instead of the gnulib one.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
4bb2c51a9c util: file: Use more obvious logic in virFindFileInPath
Make it more obvious that the function will return NULL if the file is
not executable and stop reusing variables.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
6eac0c5436 util: file: Use g_autofree in virFindFileInPath
Simplify the final lookup loop by freeing memory automatically and thus
being able to directly return the result.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Peter Krempa
1a288c7e8a rpc: use virStringSplit instead of strsep
When parsing allowed authentication methods for the native ssh lib
transports we used strsep. Since we have virStringSplit helper let's use
that one.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:50:43 +01:00
Michal Privoznik
070d6969fe virhostuptime: Add linux stub for musl
When we want to know the boot timestamp of the host, we can call
virHostGetBootTime(). Under the hood, it uses getutxid() which is
defined by POSIX and properly check for in configure. However,
musl took a path where it declares the function but instead of
providing any useful implementation it returns NULL meaning "no
record found". If that's the case, use our second best option -
/proc/uptime and a bit of maths.

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

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-11-14 15:20:38 +01:00
Jiri Denemark
18eeb75daf conf: Drop nameLen parameter from virDomainCapsCPUModelsAdd
All callers use nameLen == -1 anyway.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:13:38 +01:00
Jiri Denemark
537768a7ca conf: Use VIR_AUTO* in virDomainCapsCPUModelsAdd
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 15:08:33 +01:00
Pino Toscano
32e84d0399 docs: mention lifted vCPUs restriction for esx
It was lifted with c92b6023e8.

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 14:55:56 +01:00
Jidong Xia
9ec64b591e qemu: cold-plug of sound
With this patch users can cold plug some sound devices.
use "virsh attach-device vm sound.xml --config" command.
Consider the following sound.xml for a domain:
    <sound model='ich6'>
         <address type='pci' domain='0x0000' bus='0x00' slot='xxx' function='0'/>
    </sound>

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jidong Xia <xiajidong@cmss.chinamobile.com>
2019-11-14 08:42:59 -05:00
Mao Zhongyi
35e1547870 qemu/qemu_migration_params: use virStringParseYesNo helper
A function virStringParseYesNo was added to convert
string 'yes' to true and 'no' to false, so use this
helper to replace 'STREQ(.*, \"yes\")' and
'STREQ(.*, \"no\")' as it allows us to drop several
repetitive if-then-else string->bool conversion blocks.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Mao Zhongyi <maozhongyi@cmss.chinamobile.com>
Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
2019-11-14 08:14:50 -05:00
Mao Zhongyi
5da6615baf conf/network_conf: use virStringParseYesNo helper
A function virStringParseYesNo was added to convert
string 'yes' to true and 'no' to false, so use this
helper to replace 'STREQ(.*, \"yes\")' and
'STREQ(.*, \"no\")' as it allows us to drop several
repetitive if-then-else string->bool conversion blocks.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Mao Zhongyi <maozhongyi@cmss.chinamobile.com>
Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
Acked-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-14 08:14:50 -05:00
Mao Zhongyi
7ae802ebb3 conf/domain_conf: use virStringParseYesNo helper
This helper performs a conversion from a "yes|no" string
to a corresponding boolean, and several conversions were
already done, but there are still some omissions.

For most of the remaining usages in domain_conf.c only
"yes" is explicitly checked for. This means all other
values are implicitly handled as 'false'. In this case,
use virStringParseYesNo to handle the conversion and
reserve the original logic of not raise an error, so
ignore the return value of helper.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Mao Zhongyi <maozhongyi@cmss.chinamobile.com>
Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
2019-11-14 08:14:50 -05:00
Ján Tomko
a8ee07e0d1 qemu: use GUINT32_SWAP_LE_BE
Use this GLib macro instead of bswap_32 from gnulib.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 14:06:49 +01:00
Ján Tomko
ec07893a5f util: use g_vsnprintf
Instead of vsnprintf from gnulib, use g_vsnprintf from GLib.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2019-11-14 14:06:49 +01:00
Peter Krempa
5ff6eb5dc7 util: pidfile: Replace 'areadlink' by 'g_file_read_link'
Use the glib function rather than gnulib.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:10 +01:00
Peter Krempa
f95ef9248a util: pidfile: Sanitize return values of virPidFileReadPathIfAlive
The callers don't actually use the returned errno for reporting errors.

Additionally virFileResolveAllLinks returns -1 rather than -errno on
error thus you'd get a spurious EPERM even on other errors.

Don't try to return errno in this case.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:10 +01:00
Peter Krempa
b13e45911d util: pidfile: Sanitize return values of virPidFileReadIfAlive
Return -1 on failure rather than -errno since none of the callers
actually cares about the return value. This specifically fixes returns
of -ENOMEM in cases of bad usage, which would report wrong error
anyways.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:09 +01:00
Peter Krempa
19cfd7e598 qemu: gpu: Sanitize error values in qemuVhostUserGPUGetPid
The caller doesn't care about the actual return value, so return -1
rather than errno.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:09 +01:00
Peter Krempa
e22d844ef7 qemu: tpm: Sanitize error values in qemuTPMEmulatorGetPid
The callers don't care about the actual return value, so return -1
rather than errno.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:09 +01:00
Peter Krempa
c3ce83678c qemu: tpm: Use g_autofree in qemuTPMEmulatorGetPid
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:09 +01:00
Peter Krempa
1900936fe6 util: file: Remove virFileReadLink
The function is unused so we can remove it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:09 +01:00
Peter Krempa
794c9ec535 qemu: domain: Use g_file_read_link instead of virFileReadLink
In an effort to remove as much gnulib usage as possible let's
reimplement virFileReadLink. Since it's used in two places only I opted
to open-code it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:09 +01:00
Peter Krempa
f6cccece48 qemu: snapshot: Fix inactive external snapshots when backing chain is present
The inactive external snapshot code replaced the file name in the
virStorageSource but did not touch the backing files. This meant that
after an inactive snapshot the backing chain recorded in the inactive
XML (which is used with -blockdev) would be incorrect.

Fix it by adding a new layer if there is an existing chain and replacing
the virStorageSource struct fully when there is no chain.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:09 +01:00
Peter Krempa
b036834eae qemu: blockjob: Transfer 'readonly' state of images after active layer block commit
When commiting a different image becomes the disk source. Since we store
the readonly flag per-image we must update it to the same state the
original image had.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-14 12:42:09 +01:00
Daniel Henrique Barboza
f46eb511a2 qemu_hotplug.c: user-friendlier setvcpus timeout error message
The current 'setvcpus' timeout message requires a deeper
understanding of QEMU/Libvirt internals to proper react to it.
One who knows how setvcpus unplug work (it is an asynchronous
operation between QEMU and guest that Libvirt can't know for
sure if it failed, unless an explicit error happened during the
timeout period) will read the message and not assume a failed
operation. But the regular user, most often than not, will read
it and believe that the unplug operation failed.

This leads to situations where the user isn't exactly relieved
when accessing the guest and seeing that the unplug operation
worked. Instead, the user feel mislead by the timeout message
setvcpus threw.

Changing the timeout message to let the user know that the
unplug status is not known, and manual inspection in the guest
is required, is not a silver bullet. But it gives a more
realistic expectation of what happened, as best as we can tell
from Libvirt side anyways.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-13 15:03:40 -05:00
Daniel Henrique Barboza
2fe78a833e qemu: Remove qemu_hotplugpriv.h and qemuDomainRemoveDeviceWaitTime
qemu_hotplugpriv.h is a header file created to share a global variable
called 'qemuDomainRemoveDeviceWaitTime', declared in qemu_hotplug.c,
to other files that would want to change the timeout value
(currently, only tests/qemuhotplugtest.c).

Previous patch deprecated the variable, using qemu_driver->unplugTimeout
to set the timeout instead. This means that the header file is now
unused, and can be safely discarded.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-13 15:03:40 -05:00
Daniel Henrique Barboza
e03e27ee08 qemu_hotplug.c: adding qemuDomainGetUnplugTimeout
For some architectures and setups, device removal can take
longer than the default 5 seconds. This results in commands
such as 'virsh setvcpus' to fire timeout messages even if
the operation were successful in the guest, confusing the
user.

This patch sets a new 10 seconds unplug timeout for PPC64
guests. All other archs will keep the default 5 seconds
timeout.

Instead of putting 'if PPC64' conditionals inside qemu_hotplug.c
to set the new timeout value, a new function called
qemuDomainGetUnplugTimeout was added. The timeout value is then
retrieved when needed, by passing the correspondent DomainDef
object. This approach allows for different guest architectures
to have distint unplug timeout intervals, regardless of the
host architecture. This design also makes it easier to
modify/enhance the unplug timeout logic in the future
(allow for special timeouts for TCG domains, for example).

A new mock file was created to work with qemuhotplugtest.c,
given that the test timeout is significantly shorter than
the actual timeout value in qemu_hotplug.c.

The now unused 'qemuDomainRemoveDeviceWaitTime' global can't
be simply erased from qemu_hotplug.c though. Next patch will
remove it properly.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Suggested-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-13 15:03:40 -05:00
Jonathon Jongsma
4670f062c2 conf: use glib allocation when parsing video props
In preparation for some other improvements, switch to using glib
allocation and g_autofree when parsing the 'acceleration' and
'resolution' properties of the video device.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-13 13:10:47 -05:00
Jonathon Jongsma
90c737bbd9 conf: remove unnecessary NULL checks
Just above in the function, we return from the function if either x or y
are NULL, so there's no need to re-check whether x or y are NULL.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-13 13:10:46 -05:00
Jonathon Jongsma
cda4d4d212 qemu: fix documentation for video resolution
The video resolution support that was introduced in
7286279797 is specified as a <resolution>
sub-element of <model>, not optional attributes of model.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-13 13:08:33 -05:00
Julio Faracco
52d805117a conf: Fix memory leak caused by missing VIR_FREE for video resolution.
Commit 72862797 introduced resolution settings for QEMU video drivers.
It includes a new structure inside video definition. So, the code needs
to clear pointer allocation for that structure into clear function
virDomainVideoDefClear(). This commit adds this missing VIR_FREE().

Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
2019-11-13 13:08:25 -05:00
Ján Tomko
fa061c92ec Remove VIR_STRNDUP usage that subtracts from a non-NULL pointer
Use g_strndup in all the cases where we check upfront whether a pointer
is non-NULL and then use it to calculate the copied length.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-13 17:01:38 +01:00
Ján Tomko
05e33d4f54 Remove VIR_STRNDUP usage that passes -1
Replace all the usage of
  VIR_STRNDUP(dest, b, p ? p - b : -1)
with separate calls to g_strndup/g_strdup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-13 17:01:38 +01:00
Ján Tomko
9985679c0a Remove VIR_STRDUP usage that snuck in
Fixes: 224d269f19

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-13 17:01:38 +01:00
Ján Tomko
54dd093837 locking: fix build with older sanlock
../../src/locking/lock_driver_sanlock.c:106:17: error: incompatible pointer types
assigning to 'char **' from 'char *' [-Werror,-Wincompatible-pointer-types]
        message = g_strdup_printf(_("sanlock error %d"), err);
                ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fixes: b1d58418aa

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 09:52:37 +01:00
Peter Krempa
48b68470c8 util: buffer: remove virBufferSetChildIndent
Promote usage of separate buffers for separate formatting passes by
removing the now unused virBufferSetChildIndent.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 09:10:30 +01:00
Peter Krempa
e8bed23d15 conf: domain: Convert child buffers to use VIR_BUFFER_INIT_CHILD
Use the new helper to initialize child XML element buffers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 09:10:30 +01:00
Peter Krempa
619fac2ea6 conf: cpu: Convert child buffers to use VIR_BUFFER_INIT_CHILD
Use the new helper to initialize child XML element buffers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 09:10:30 +01:00
Peter Krempa
4a0ccab772 conf: caps: sysinfo: Convert child buffers to use VIR_BUFFER_INIT_CHILD
Use the new helper to initialize child XML element buffers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 09:10:30 +01:00
Peter Krempa
186e247b4c util: sysinfo: Convert child buffers to use VIR_BUFFER_INIT_CHILD
Use the new helper to initialize child XML element buffers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 09:10:30 +01:00
Peter Krempa
107f7a2d16 qemu: domain: Convert child buffers to use VIR_BUFFER_INIT_CHILD
Use the new helper to initialize child XML element buffers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 09:10:30 +01:00
Peter Krempa
15dc77082d util: buffer: Add init macro for automatically setting child XML indent
Add a new macro which initializes a virBuffer on the stack and also sets
the indent level to be used for child XML element formatting.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 09:10:29 +01:00
Peter Krempa
9a2ca9c947 conf: capabilities: Refactor API for setting guest capability features
Remove the need to pass around strings and switch to the enum values
instead.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 08:19:37 +01:00
Peter Krempa
7a6e7bad1c conf: Refactor storage of guest capabilities
The capabilities are declared in the XML schema so passing feature names
as strings from hypervisor drivers makes no sense.

Additionally some of the features expose so called 'toggles' while
others not. This knowledge was encoded by a bunch of 'STREQ's in the
formatter.

Change all of this by declaring the features as an enum and use it
instead of a dynamically allocated array.

Presence of 'toggles' is encoded together with the conversion strings
rather than in the formatter directly.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 08:16:04 +01:00
Peter Krempa
2936a7517e schema: capabilities: Add 'hap' feature flag
The libxl driver exposes a 'hap' feature in the capability XML but our
schema didn't cover it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-13 08:16:04 +01:00
Peter Krempa
09afb14a82 qemu: driver: Remove unused 'driver' from qemuDomainSnapshotFSFreeze/Thaw
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-13 08:15:02 +01:00
Jiri Denemark
9cd03f7957 cpu_map: Drop pconfig from Icelake-Server CPU model
The pconfig feature was enabled in QEMU by accident in 3.1.0. All other
newer versions do not support it and it was removed from the
Icelake-Server CPU model in QEMU.

We don't normally change our CPU models even when QEMU does so to avoid
breaking migrations between different versions of libvirt. But we can
safely do so in this specific case. QEMU never supported enabling
pconfig so any domain which was able to start has pconfig disabled.

With a small compatibility hack which explicitly disables pconfig when
CPU model equals Icelake-Server in migratable domain definition, only
one migration scenario stays broken (and there's nothing we can do about
it): from any host to a host with libvirt < 5.10.0 and QEMU > 3.1.0.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 20:14:16 +01:00
Jiri Denemark
6b4cc15730 cputest: Add data for Ice Lake Server CPU
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 20:14:16 +01:00
Jiri Denemark
ca1a5d041e cpu_map: Drop comments about ospke
QEMU does not support setting this feature on the command line anymore.
We don't need to explain why it is not included in CPU models then.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 20:14:16 +01:00
Jiri Denemark
ac34e14159 qemu: Drop disabled CPU features unknown to QEMU
When a CPU definition wants to explicitly disable some features that are
unknown to QEMU, we can safely drop them from the definition before
starting QEMU. Naturally QEMU won't enable such features implicitly.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 20:14:16 +01:00
Jiri Denemark
ae793ecbcb qemuxml2*test: Add tests for Icelake-Server,-pconfig
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 20:14:15 +01:00
Jiri Denemark
668797dc5c cpu_conf: Pass policy to CPU feature filtering callbacks
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 20:14:15 +01:00
Daniel Henrique Barboza
2f7d81497b bhyve_device.c: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
10d6290f1c tools: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
c0666eb7c8 suspend.c: remove unneeded cleanup label
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
77e6f13c1e bridge_driver.c: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
775f34c8bf libxl_driver.c: remove unneeded cleanup label
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
e19f6cb7f2 libvirt.c: remove unneeded cleanup label
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
93af79fba3 util: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
5b05d99dab vz_sdk.c: remove unneeded cleanup label
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
2d13431d45 rpc: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
215007f24f qemu_monitor_json.c: remove unneeded cleanup label
qemuMonitorJSONBlockIoThrottleInfo uses a macro called
GET_THROTTLE_STATS that's defined outside of the function,
which references a 'cleanup' label. GET_THROTTLE_STATS is
only used inside qemuMonitorJSONBlockIoThrottleInfo (in fact,
the macro is undef right after it) thus it is safe to erase
the 'cleanup' reference inside the macro, then proceed
with the usual cleanup label removal inside
qemuMonitorJSONBlockIoThrottleInfo.

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
9c3748d3c2 secret_driver.c: remove unneeded cleanup label
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
5231b480d4 node_device: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
64b8d27e9a lxc: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
c5d86a9834 remote: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
7868643275 nwfilter: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
abd2899d73 storage: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Daniel Henrique Barboza
3814e767d5 conf: remove unneeded cleanup labels
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 17:54:01 +01:00
Ján Tomko
26791f39c0 docs: hacking: add missing code element
Wrap the 'g_renew()' call for VIR_SHRINK_N in <code>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:46:29 +01:00
Bjoern Walk
3666d7ac69 qemu: hotplug: ensure address generation for vfio-ccw
When attaching a mediated host device of model vfio-ccw without
specifying a guest-address, none is generated by libvirt. Let's fix this
and make sure to generate a device address during live-hotplug.

Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:43:14 +01:00
Michal Privoznik
816bd3e8ac virpcimock: Make @fakerootdir static
Since we are not passing the @fakerootdir variable to any inline function
anymore, we can make the variable static.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
33ed622106 Drop virVasprintf()
Now that function is no longer used, it can be dropped.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
a067916975 virstring: Drop virVasprintfQuiet()
This macro is no longer used and therefore can be dropped.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
dd98a6edb9 Drop virAsprintf()
Now that function is no longer used, it can be dropped.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
a028630620 virstring: Drop virAsprintfQuiet()
This macro is no longer used and therefore can be dropped.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
8eaa708991 Use g_strdup_vprintf() instead of virVasprintf() everywhere
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
d36a15f963 Use g_strdup_printf instead of virAsprintf everywhere
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
26a137093b tools: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
4fa804c0c7 tests: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:59 +01:00
Michal Privoznik
06030f05bb vz: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
3bfb359944 vmx: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
adca67448e vmware: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
24d213b03c vbox: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
837f5619e7 secret: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
91d88aaf23 util: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
ad1118ebd2 test: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
930cae510b storage: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
2e9fe8b9a7 security: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
c684b3c7e8 rpc: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
2b41a017ab remote: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
d4e5b98330 qemu: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
183a60aa75 phyp: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
e5caed83bd openvz: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
c09b0fe7a7 nwfilter: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
7847f011b0 node_device: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
52a6b45e18 network: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
c2d0db54df lxc: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
862d06df94 logging: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
b1d58418aa locking: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
f9d6b01262 libxl: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
9a2454bbc4 interface: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
5858950a85 hyperv: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
8cc297932a esx: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
2b3061f2a1 cpu: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
daeeb3603d conf: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
89b6825189 bhyve: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
87af7ff8b7 access: Use g_strdup_printf() instead of virAsprintf()
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 16:15:58 +01:00
Michal Privoznik
492d7cb47a src: Wrap long lines in Makefiles
In my previous commit of v5.9.0-83-g4ae7181376 I've fixed
check-aclrules but whilst doing so, I forgot to wrap long
lines that I've added.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-12 16:07:41 +01:00
Pavel Hrdina
0c59ca9eae spec: fix vpath build on RHEL 7
Macro _vpath_builddir is not defined so we have to define it ourselves.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 15:21:56 +01:00
Michal Privoznik
f4eb27a9b4 make check-driverimpls work again
Previously we generated all source files into $srcdir which is no
longer true. This means that we can't just blindly prepend each
source file with $srcdir.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 15:00:01 +01:00
Michal Privoznik
4ae7181376 src: Make check-aclrules work again
Previously we generated all source files into $srcdir which is no
longer true. This means that we can't just blindly prepend each
source file with $srcdir.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 15:00:01 +01:00
Peter Krempa
6245296f05 conf: capabilities: Modernize virCapabilitiesFormatMemoryBandwidth
Use virXMLFormatElement and the automatic memory handlers to simplfy the
code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 14:37:59 +01:00
Peter Krempa
3ca2bdefa5 conf: caps: Modernize virCapabilitiesFormatCaches
Use automatic memory freeing and use virXMLFormatElement instead of open
coding it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 14:37:59 +01:00
Peter Krempa
fa7e8bb824 conf: turn virDomainMemtuneFormat void
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 14:37:59 +01:00
Peter Krempa
a06c856d43 conf: domain: Split up formatting of <memtune> and <memoryBacking>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 14:37:59 +01:00
Peter Krempa
7596df34b4 conf: caps: Automaticaly free 'cpus_str'
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 14:37:59 +01:00
Peter Krempa
d95eded4bb conf: Rename virDomainCapsFeature to virDomainProcessCapsFeature
The enum name sounds too generic. It in fact describes the capabilities
of the process, thus add 'Process' to the name.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 14:37:59 +01:00
Peter Krempa
2ac56edbf8 conf: storagecaps: Fix broken attempt at being const-correct
The code formatting storage capabilities faithfully copied the wrong use
of 'const' from domain capabilities.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 14:37:57 +01:00
Peter Krempa
f118a00342 conf: domaincaps: Fix broken attempt at being const-correct
'virBlahPtr const blah' results into modification to the value of 'blah'
triggering compilation error rather than the modification of the virBlah
struct the pointer points to.

All of the domain capability formatting code was broken in this regard.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 14:37:56 +01:00
Peter Krempa
6b9f2e8847 qemu: caps: Make capability filler functions void
Most of them don't have anything to report so we can simplify the logic.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 14:37:55 +01:00
Peter Krempa
e60174fb3a qemu: caps: Rework memory allocation in virQEMUCapsFillDomainFeatureSEVCaps
Use g_new0 instead of VIR_ALLOC to avoid error cases.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 14:37:49 +01:00
Yi Li
94af82b936 storage: improve the while loop virStorageBackendFileSystemIsMounted
Move virStorageBackendFileSystemGetPoolSource outside of the while loop

Signed-off-by: Yi Li <yili@winhong.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 13:56:47 +01:00
Mao Zhongyi
f62f729b42 qemu: remove duplicate header files
"#include vircgroup.h" appears in both qemu_cgroup.h and
qemu_cgroup.c, and qemu_cgroup.c contains qemu_cgroup.h,
so remove the duplicate declarations.

Signed-off-by: Mao Zhongyi <maozhongyi@cmss.chinamobile.com>
Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 13:45:31 +01:00
Mao Zhongyi
d4aecbf1ff lxc: remove duplicate header files
"#include vircgroup.h" appears in both lxc_cgroup.h and
lxc_cgroup.c, and lxc_cgroup.c contains lxc_cgroup.h,
so remove the duplicate declarations.

Signed-off-by: Mao Zhongyi <maozhongyi@cmss.chinamobile.com>
Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-12 13:45:31 +01:00
Peter Krempa
8a2c37c4f6 qemu: snapshot: split out preparation of a snapshot with blockdev
Separate the blockdev code since it makes the original function lengthy.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-11-12 08:51:50 +01:00
Peter Krempa
3e2e627287 qemu: command: Use XML based disk bus convertor in error message
The qemu driver has an internal implementation for converting disk bus
to string for use with qemu. This should not be used in error messages
though as we want to report the string based on the XML value.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-11-12 08:51:50 +01:00
Peter Krempa
53b402f70c syms: Add 'global:' keyword to LIBVIRT_5.8 section
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 08:51:50 +01:00
Peter Krempa
ec8f0d387c datatypes: Fix comment for the _virNetwork struct
The comment was copied form the domain and the object type was not
changed.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 08:51:50 +01:00
Michal Privoznik
75597f022a qemu: Warn verbosely if using old loader:nvram pairs
There are two ways for specifying loader:nvram pairs:

  1) --with-loader-nvram configure option
  2) nvram variable in qemu.conf

Since we have FW descriptors, using this old style is
discouraged, but not as strong as one would expect. Produce more
warnings:

  1) produce a warning if somebody tries the configure option
  2) produce a warning if somebody sets nvram variable and at
     least on FW descriptor was found

The reason for producing warning in case 1) is that package
maintainers, who set the configure option in the first place
should start moving towards FW descriptors and abandon the
configure option. After all, the warning is printed into config
output only in this case.

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

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-12 08:34:37 +01:00
Peter Krempa
e39d3424e3 util: pci: Remove always-false condition
Commit d19c21429f modified the condition so that it checks whether the
value is more than 0xFFFFFFFF. Since addr->domain is an unsigned int, it
will never be more than that.

Remove the whole check

src/util/virpci.c:1291:22: error: result of comparison 'unsigned int' > 4294967295 is always false [-Werror,-Wtautological-type-limit-compare]
    if (addr->domain > 0xFFFFFFFF) {
        ~~~~~~~~~~~~ ^ ~~~~~~~~~~

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2019-11-11 16:48:26 +01:00
Peter Krempa
63d604088c tests: make domaincapstest less anoying to debug
Since 6a077cf2b3 domaincapstest does not run through all cases on
failure but terminates right away. This makes it super annoying to debug
or use in combination with VIR_TEST_REGENERATE_OUTPUT.

Fix it by remembering failure and still running through all cases.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-11-11 16:46:40 +01:00
Daniel P. Berrangé
d64f31dc1f build: fix substitution of RUNSTATEDIR in man pages
When RUNSTATEDIR was introduced

  commit d29c917ef4
  Author: Daniel P. Berrangé <berrange@redhat.com>
  Date:   Tue Aug 20 16:05:12 2019 +0100

    src: honour the RUNSTATEDIR variable in all code

The makefile rules for man pages were accidentally not updated for the
new variablle name.

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:25:47 +00:00
Daniel P. Berrangé
07943d35ea build: comment on why we're not adopting certain flake8 rules
Simplify the list of ignored warnings now that we only have two left,
and document why we're not honouring them.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:24:19 +00:00
Daniel P. Berrangé
3df69e628f python: sanitize indentation after line continuations
Line continuations should be 4 space indented unless a previous opening
brace required different alignment.

docs/apibuild.py:2014:24: E126 continuation line over-indented for hanging indent
                       token[0], token[1]))
                       ^
docs/apibuild.py:74:3: E121 continuation line under-indented for hanging indent
  "ATTRIBUTE_UNUSED": (0, "macro keyword"),
  ^
...more...

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:24:19 +00:00
Daniel P. Berrangé
43d29cb40b python: sanitize spaces either side of operators
There should be a single space either side of operators. Inline
comments should have two spaces before the '#'

src/hyperv/hyperv_wmi_generator.py:130:45: E261 at least two spaces before inline comment
            source += '    { "", "", 0 },\n' # null terminated
                                            ^
src/esx/esx_vi_generator.py:417:25: E221 multiple spaces before operator
    FEATURE__DESERIALIZE  = (1 << 6)
                        ^
tests/cputestdata/cpu-cpuid.py:187:78: E225 missing whitespace around operator
                f.write("  <msr index='0x%x' edx='0x%08x' eax='0x%08x'/>\n" %(
                                                                             ^
docs/apibuild.py:524:47: E226 missing whitespace around arithmetic operator
                            self.line = line[i+2:]
                                              ^
...more...

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:24:19 +00:00
Daniel P. Berrangé
bc59247df9 python: sanitize blank line usage
Coding style expects 1 blank line between each method and 2 blank lines
before each class.

docs/apibuild.py:171:5: E303 too many blank lines (2)
    def set_header(self, header):
    ^
docs/apibuild.py:230:1: E302 expected 2 blank lines, found 1
class index:
^
docs/apibuild.py:175:5: E301 expected 1 blank line, found 0
    def set_module(self, module):
    ^
...more...

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:24:19 +00:00
Daniel P. Berrangé
2ba699cbd5 python: avoid bare 'except:' clause
Exception catching statements should always match on a class name, the
most specific one possible. Rather than analyse the code to look at what
the most specific one is, this just uses the base Exception class.

docs/apibuild.py:255:9: E722 do not use bare 'except'
        except:
        ^
docs/apibuild.py:279:9: E722 do not use bare 'except'
        except:
        ^
...more...

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:24:19 +00:00
Daniel P. Berrangé
cfdd871f26 python: avoid variable named 'l'
Python code style recommends avoiding a variable named 'l' as it is
visually similar to '1'.

docs/apibuild.py:482:13: E741 ambiguous variable name 'l'
            l = len(line)
            ^
docs/apibuild.py:503:21: E741 ambiguous variable name 'l'
                    l = len(line)
                    ^
...more...

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:24:19 +00:00
Daniel P. Berrangé
d5c5d8af45 python: mark regex strings with 'r' prefix
When writing regexes special regex matches like "\d" can get
misinterpreted as normal string escape sequences:

docs/apibuild.py:1359:51: W605 invalid escape sequence '\d'
                        value = value + re.sub("^(\d+)U$", "\\1", token[1])
                                                  ^
docs/apibuild.py:2134:31: W605 invalid escape sequence '\('
                m = re.match("\(?1<<(\d+)\)?", info[0])
                              ^
docs/apibuild.py:2134:38: W605 invalid escape sequence '\d'
                m = re.match("\(?1<<(\d+)\)?", info[0])
                                     ^
docs/apibuild.py:2134:42: W605 invalid escape sequence '\)'
                m = re.match("\(?1<<(\d+)\)?", info[0])
                                         ^

To avoid this probem all regexes should use the r"...." syntax for their
strings, which disables normal string escape sequences.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:24:19 +00:00
Daniel P. Berrangé
524b377e9e python: fix use of undeclared variables in python scripts
docs/apibuild.py:2436:65: F821 undefined name 'first_letter'
                        chunks.append(["chunk%s" % (chunk - 1), first_letter, letter])
                                                                ^
src/hyperv/hyperv_wmi_generator.py:415:57: F821 undefined name 'number'
        report_error("line %d: invalid block header" % (number))
                                                        ^

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:24:19 +00:00
Daniel P. Berrangé
3a5fea6062 build: change flake8 to use blacklist instead of whitelist
The current flake8 check only looks at one item (semicolons at end of
line). This means that our code quality will continue to get worse,
violating an increasing number of checks.

Switching to a whitelist means that we freeze the badness at its
current level & can incrementally fix things up.

We are excluding the following...

Indentation:

  E114 indentation is not a multiple of four (comment)
  E115 expected an indented block (comment)
  E116 unexpected indentation (comment)
  E121 continuation line under-indented for hanging indent
  E125 continuation line with same indent as next logical line
  E126 continuation line over-indented for hanging indent
  E127 continuation line over-indented for visual indent
  E128 continuation line under-indented for visual indent
  E129 visually indented line with same indent as next logical line
  E131 continuation line unaligned for hanging indent

Whitespace:

  E211 whitespace before ‘(‘
  E221 multiple spaces before operator
  E222 multiple spaces after operator
  E225 missing whitespace around operator
  E226 missing whitespace around arithmetic operator
  E231 missing whitespace after ‘,’, ‘;’, or ‘:’
  E261 at least two spaces before inline comment

Blank lines

  E301 expected 1 blank line, found 0
  E302 expected 2 blank lines, found 0
  E303 too many blank lines (3)
  E305 expected 2 blank lines after end of function or class

Line length

  E501 line too long (82 > 79 characters)

Statements

  E722 do not use bare except, specify exception instead
  E741 do not use variables named ‘l’, ‘O’, or ‘I’

Errors:

  F821 undefined name 'name'

Warnings:

  W504 line break after binary operator
  W605 invalid escape sequence ‘x’

Later commits will enable most of these exclusions.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 14:23:50 +00:00
Daniel P. Berrangé
55cbe0fb5c docs: remove some dead code in apibuild.py
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-11 11:18:40 +00:00
Pavel Hrdina
c41929603a spec: fix rpm build with VPATH
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
2019-11-11 11:49:18 +01:00
Michal Privoznik
6e57fa0141 src: lxc: Fix typo in a Makefile variable
In commit 0985a9597b we stopped
distributing generated source file. This is done by prepending
binary_SOURCES variable with "nodist_". However, there is a typo
- the prefix is "nodst_" instead of "nodist_".

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-10 11:06:19 +01:00
Pavel Hrdina
70218e10bc src: add missing include access path for bhyve and vz drivers
Commit <b98f90cf913965243c6e2c49a52aa170a48093ef> forgot to update
bhyve and vz Makefile files as well.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
2019-11-08 21:24:42 +01:00
Laine Stump
3016a2a64c docs: update news file
with info about support for using precreated tap/macvtap devices in
unprivileged libvirtd.

Signed-off-by: Laine Stump <laine@redhat.com>
2019-11-08 11:41:41 -05:00
Pavel Hrdina
137f71486c tools: stop distributing generated source files
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
0985a9597b src: stop distributing generated source files
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
4753fd0553 src: remote: generate source files into build directory
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
ae98112a85 src: lxc: generate source files into build directory
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
775d08f8c6 src: logging: generate source files into build directory
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
787ea47680 src: locking: generate source files into build directory
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
29b4dda5f5 src: hyperv: generate source files into build directory
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
11a865b9f9 src: esx: generate source files into build directory
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
d6be9e7f65 src: admin: generate source files into build directory
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
b98f90cf91 src: access: generate source files into build directory
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
7b9cd113dc src: generate source files into build directory
This affects more than src/Makefile.am as the rule to generate source
files for protocols is generic for all sub-directories.

Affected files are:
    src/admin/admin_protocol.{h,c}
    src/locking/lock_protocol.{h,c}
    src/logging/log_protocol.{h,c}
    src/lxc/lxc_monitor_protocol.{h,c}
    src/remote/{lxc,qemu,remote}_protocol.{h,c}
    src/rpc/{virkeepalive,virnet}protocol.{h,c}

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
eda04022ca remote: unify rpc server dispatch generated files
Our naming was not consistent.  Use the protocol name as prefix for all
generated files.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
afd89b1135 po: README.md: add a note about which Zanata client is required
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
8beb7fdd0e po: rewrite the way how we generate files
There was no need to handle files for translation from build directory
but that will change with following patches where we will stop
generating source files into source directory.

In order to have them included for translation we have to prefix each
file with SRCDIR or BUILDDIR.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:57 +01:00
Pavel Hrdina
8c9ca8a284 po: generate files into build directory
Historically we did not support VPATH builds and everything was
generated into source directory.  The introduction of VPATH builds
did not changed the way how our translation files are handled.

This patch changes the rules to generate everything into build
directory and stops distributing generated files in order to have
properly separated VPATH builds.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:51 +01:00
Pavel Hrdina
f4fd068c4e syntax-check.mk: cleanup generated_files list for sc_po_check
Move generated_files variable closer to the sc_po_check rule and
remove non-existent gnulib internal path.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:50 +01:00
Pavel Hrdina
0c4eefe4ad syntax-check.mk: cleanup sc_po_check dependencies
Introduce new rule 'generated-sources' as a helper for PO files check
to make sure that all generated files are prepared and to not duplicate
the list on different places.  This will be used as a dependency for
sc_po_check rule instead of duplicated list of generated files.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:50 +01:00
Pavel Hrdina
c647107922 syntax-check.mk: fix sc_po_check rule
Commit <22d8e27ccd5faf48ee2bf288a1b9059aa7ffd28b> introduced our
syntax-check.mk file based on gnulib rules. However, the rule was
completely ignored as we don't have POTFILES.in file.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:50 +01:00
Pavel Hrdina
f7114e61db .gitignore: cleanup old and obsolete ignores
Now that we forbid builds in source directory we can remove a lot of
ignores that are created during build time.  To make the cleanup easier
in the future create a sections in our .gitignore file.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:50 +01:00
Pavel Hrdina
f96395e78e build: mandate use of a build dir != src dir
Historically we've allowed builds in the main src dir, but meson does
not support this. Explicitly force separate build dir in autotools to
align with meson. We must re-enable dependency tracking which the RPM
%configure macro turns off. Without this, the build dir doesn't get
the source directory tree mirrored.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-08 17:07:35 +01:00
Michal Privoznik
3d46d684d1 qemu: Check for job being set when getting iothread stats
The qemuDomainGetStatsIOThread() accesses the monitor by calling
qemuDomainGetIOThreadsMon(). And it's also marked as "need
monitor" in qemuDomainGetStatsWorkers[]. However, it's not
checking if acquiring job was successful.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-08 16:25:51 +01:00
Michal Privoznik
1faf74050f qemu: Warn on possibly incorrect usage of EnterMonitor*
The qemuDomainObjEnterMonitor() should not be called without a
job set. Catch this error and produce a warning message if such
call occurred.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-11-08 16:25:46 +01:00
Wang Yechao
ebd004299a util: Set SIGPIPE to a no-op handler in virFork
Libvirtd has set SIGPIPE to ignored, and virFork resets all signal
handlers to the defaults. But child process may write logs to
stderr/stdout, that may generate SIGPIPE if journald has stopped.

So set SIGPIPE to a dummy no-op handler before unmask signals in
virFork(), and the handler will get reset to SIG_DFL when execve()
runs. Now we can delete sigaction() call entirely in virExec().

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Wang Yechao <wang.yechao255@zte.com.cn>
2019-11-08 10:53:30 +00:00
Laine Stump
13ec827052 util: set bridge device MAC address explicitly during virNetDevBridgeCreate
When libvirt first implemented a stable and configurable MAC address
for the bridges created for libvirt virtual networks (commit
5754dbd56d, in libvirt v0.8.8) most distro stable releases didn't
support explicitly setting the MAC address of a bridge; the bridge
just always assumed the lowest numbered MAC of all attached
interfaces. Because of this, we stabilized the bridge MAC address by
creating a "dummy" tap interface with a MAC address guaranteed to be
lower than any of the guest tap devices' MACs (which all started with
0xFE, so it's not difficult to do) and attached it to the bridge -
this was the inception of the "virbr0-nic" device that has confused so
many people over the years.

Even though the linux kernel had recently gained support for
explicitly setting a bridge MAC, we deemed it unnecessary to set the
MAC that way, because the other (indirect) method worked everywhere.

But recently there have been reports that the bridge MAC address was
not following the setting in the network config, and mismatched the
MAC of the dummy tap device (which was still correct). It turns out
that this is due to a change in systemd-242 that persists whatever MAC
address is set for a bridge when it's initially started. According to
the systemd NEWS file entry for version 242
(https://github.com/systemd/systemd/blob/master/NEWS):

  "if a bridge interface is created without any slaves, and gains
   a slave later, then now the bridge does not inherit slave's MAC."

This change was the result of:

  https://github.com/systemd/systemd/issues/3374

(apparently if there is no MAC saved for a bridge by the name of a
bridge being created, the random MAC generated during creation is
saved, and then that same MAC is used to explicitly set the MAC each
time it is created). Once a bridge has an explicitly set MAC, the "use
the lowest numbered MAC of attached devices" rule is ignored, so our
dummy tap device is like the goggles - it does nothing! (well, almost).

We could whine about changes in default behavior, etc. etc., but
because the change was in response to actual user problems, that seems
likely a fruitless task. Fortunately, time has marched on, and even
distro releases that are old enough that they are no longer supported
by upstream libvirt (e.g. RHEL6) have support for explicitly setting a
bridge device MAC address, either during creation or with a separate
ioctl after creation, so we can now do that.

To enable explicitly setting the mac during bridge creation, we add a
mac arg to virNetDevBridgeCreate().  In the case of platforms where
the bridge is created with a netlink RTM_NEWLINK message, we just add
that mac to the message. For platforms that still use an ioctl (either
SIOCBRADDBR or SIOCIFCREATE2), we make a separate call to
virNetDevSetMAC() after creating the bridge.

(NB: I was unable to test the calling of virNetDevSetMAC() from the
SIOCIFCREATE2 (BSD) version of virNetDevBridgeCreate(); even though I
managed to get a FreeBSD system setup and libvirt built there, when I
tried to start the default network the SIOCIFCREATE2 ioctl itself
failed, so it never even got to the virNetDevSetMAC(). That leaves the
FreeBSD implementation untested.)

This makes the dummy tap pointless for purposes of setting the MAC
address, but it is still useful for IPv6 DAD initialization (which
apparently requires at least one interface to be attached to the
bridge and online), as well as for setting an initial MTU for the
bridge, so it hasn't been removed.

(NB: we can safely *always* call virNetDevBridgeCreate() with
&def->mac from the network driver because, in spite of the existence
of a "mac_specified" bool in the config suggesting that it may not
always be present, in reality a mac address will always be added to
any network that doesn't have one - this is guaranteed in all cases by
commit a47ae7c004)

https://bugzilla.redhat.com/show_bug.cgi?id=1760851
Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-11-07 22:09:19 -05:00
Laine Stump
b596d6c106 util: allow sending mac addr to virNetNewLink without ifindex
Although until now, any use of the extra_args argument (a pointer to a
struct containing extra attributes to add the the RTM_NEWLINK message)
would always have the ifindex and mac set, so the code could assume it
was safe to add both to the message if extra_args != NULL. There is
now a use for setting a MAC address in the RTM_NEWLINK without setting
the ifindex, so we should check each of these separately.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-11-07 22:08:55 -05:00
Andrea Bolognani
0de541bfc5 cpu_map: Ship arm_features.xml
The file was introduced in be03587a34, but it was not added
to $(cpumap_DATA) at the time and so it didn't show up in the
distribution archive.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2019-11-07 18:09:39 +01:00
Laine Stump
47a7b8a96b qemu: avoid double reservation of PCI address for interface type='hostdev'
Commit 01ca4010d8 (libvirt v5.1.0) moved address reservation for
hotplugged interface devices up to an earlier point in
qemuDomainAttachNetDevice(), because that function calls
qemuDomainSupportsNicdev() (in the case of
VIR_DOMAIN_NET_TYPE_VHOSTUSER), and qemuDomainSupportsNicdev() needs
to know the address type (for ARM machinetypes) and returns incorrect
results when the address type is "none".

This bugfix unfortunately caused a regression, because it also made PCI
address reservation happen before we noticed that the device was a
*hostdev* interface. Those interfaces are hotplugged by just calling
out to qemuDomainAttachHostdevDevice() - that function would then also
attempt to reserve the *same PCI address* that had just been reserved
in qemuDomainAttachNetDevice().

The solution is to move the bit of code that short-circuits out to
virDomainHostdevAttach() up *even earlier* so that no PCI address has
been allocated by the time it's called.

https://bugzilla.redhat.com/show_bug.cgi?id=1744523
Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-11-07 11:30:55 -05:00
Andrea Bolognani
cf915455e4 news: Update for ARM CPU features
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:25 +01:00
Andrea Bolognani
bd735350c5 tests: Introduce tests for ARM CPU features
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:22 +01:00
Andrea Bolognani
54f60ef9af qemu: Validate ARM CPU features
This introduces semantic validation for SVE-related features,
preventing the user from combining them in invalid ways; it also
automatically enables overall SVE support if any SVE vector
length has been enabled by the user to make sure QEMU behaves
correctly.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:20 +01:00
Andrea Bolognani
ea6c107a5f cpu: Validate ARM CPU features
For now we only perform very basic validation, such as making sure
that the user is not trying to enable/disable unknown CPU features
and the like.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:18 +01:00
Andrea Bolognani
be03587a34 cpu_map: Introduce ARM CPU features
The only feature we care about for the moment is SVE, which can
be controlled both with a coarse granularity by turning it on/off
completely and with a finer granularity by enabling/disabling
individual vector lengths.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:16 +01:00
Andrea Bolognani
25c52cb32f qemu: Perform full expansion on ARM
The ARM implementation of query-cpu-model-expansion only
supports full expansion, so we have to make sure we're using
that expansion mode if we want to obtain any useful data.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:14 +01:00
Andrea Bolognani
62e7d1fdc4 qemu: Update query-cpu-model-expansion check
CPU features are available on ARM only wherever the
query-cpu-model-expansion QMP command is available, same as
on s390. Update qemuBuildCpuModelArgStr() to reflect this
fact.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:11 +01:00
Andrea Bolognani
42bc9d9a9a qemu: Query max-arm-cpu properties
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:09 +01:00
Andrea Bolognani
d1b5c2c5ba qemu: Introduce QEMU_CAPS_ARM_MAX_CPU
Mirrors the existing QEMU_CAPS_X86_MAX_CPU.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:07 +01:00
Andrea Bolognani
29830b75af qemu: Rename virQEMUCapsObjectPropsMaxX86CPU
We're going to use it on non-x86 soon, so it needs a more
generic name: virQEMUCapsObjectPropsMaxCPU.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:09:05 +01:00
Andrea Bolognani
448b7f81fc tests: Update capabilities for QEMU 4.2.0 on aarch64
Unfortunately this results in a lot of churn because of the eigth
hundred and change QEMU commits since the file was last touched,
but the only part we actually care about is the fact that the
query-cpu-model-expansion QMP command is now available on aarch64.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Tested-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-11-07 16:08:44 +01:00
John Ferlan
3f3f74dbc7 tests: Fix logic to not have possible NULL deref
It's possible that virBitmapNewString returns NULL with an error
string (and not an allocation failure that would abort); however, if
virBitmapToString is called with a NULL @bitmap, then it will fail
in an ugly manner. So rather than have if (!map && !str) logic, split
the checks for each variable.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-06 11:27:12 -05:00
John Ferlan
77180d0f70 tests: Add return value check in checkUserInfo
Commit 1c8113f9c added the call to virTypedParamsGetString without
a return value check which caused Coverity to complain especially
since other checks for the same function are made.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-06 11:27:12 -05:00
John Ferlan
11e8d37c4b qemu: Fix possible NULL deref in qemuDomainSaveImageStartVM
Commit 075523438 added a direct reference to @cookie even though
it may be NULL as shown by a comment a few lines previous - so add
the check here as well.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-06 11:27:12 -05:00
John Ferlan
a6ce760f6b tests: Remove _NULLABLE in virNetDevExists mock
The @ifname is listed as an ATTRIBUTE_NONNULL(1) parameter, so
checking for _NULLABLE causes a coverity build failure - remove
that and if it's NULL for the test let's fail miserably.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-06 11:27:12 -05:00
John Ferlan
a3ed78490c lxc: Remove unnecessary comment
Commit 66e2adb2ba moved the code and the coverity comment which now
was useless since the context was in lxcContainerSetupPivotRoot.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-06 11:27:12 -05:00
John Ferlan
2669edabd3 tests: Fix memory leak in mymain
Commit 944a35d7f0 added @fakerootdir; however, there are multiple
paths out of mymain that didn't free the memory - so just use the
g_autofree to resolve the potential leak.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-06 11:27:12 -05:00
John Ferlan
d343e8203d conf: Remove ATTRIBUTE_NONNULL for virDomainQemuMonitorEventNew
Commit 17561eb36 modified the logic to check "if (!event)" for an
attribute that was not supposed to be passed as NULL.  This causes
the static checker/Coverity build to fail. Since the check is made,
alter the header.

Also add an error message since returning -1 without some sort of
error message as previously would have happened with the failed
VIR_STRDUP so that the eventual error doesn't get the default
for some reason message.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-06 11:27:12 -05:00
John Ferlan
18a1ce77b6 vbox: Fix possible NULL deref
The @valueTypeUtf8 references need to use the STREQ_NULLABLE since
they're variantly filled in by @valueTypeUtf16.

Found by Coverity.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-11-06 11:27:12 -05:00
Andrea Bolognani
f5420e60f2 maint: Post-release version bump to 5.10.0
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
2019-11-06 15:49:10 +01:00
Daniel Veillard
a6dfa6ee99 Release of libvirt-5.9.0
* doc/news.xml: update for release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
2019-11-06 15:39:52 +01:00
Andrea Bolognani
58fe17e383 gitdm: Add missing entries
A few new companies and individuals contributed to libvirt since
the last time the gitdm configuration was updated.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
2019-11-05 12:12:14 +01:00
Andrea Bolognani
fed5f4d04d gitdm: Fix sorting
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
2019-11-05 12:12:08 +01:00
Andrea Bolognani
78a342441e news: Update for 5.9.0 release
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Laine Stump <laine@redhat.com>
2019-11-04 17:50:10 +01:00
Andrea Bolognani
d041071a04 news: Document more possible sections
The "Security" section has been used in the past, so we're only
documenting existing behavior; the "Packaging changes" will be
used in the next commit, as well as in future releases when we
make more changes that are relevant to packagers, such as the
switch to Meson.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Laine Stump <laine@redhat.com>
2019-11-04 17:49:51 +01:00
Jim Fehlig
962647cac6 docs: Fix attribute names in filesystem/driver example
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
2019-11-01 11:46:55 -06:00
Jim Fehlig
73f91d659b news: Add entry for ACPI firmware support in Xen
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-01 08:24:09 -06:00
Jim Fehlig
cbff7c37f2 docs: Fix version that introduced Xen support for ACPI firmware
Xen support for specifying ACPI firmware path was introduced in the
5.9.0 dev cycle, not 5.8.0 as currently indicated by the docs.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-11-01 08:23:08 -06:00
Peter Krempa
bf0e7bdeeb util: xml: Make virXMLFormatElement void
Now that we don't have to deal with errors of virBuffer we can also make
this function void.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
0967708b81 util: buffer: Remove virBufferCheckError
The function now does not return an error so we can drop it fully.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
205d6a2af7 util: buffer: Remove virBufferError
The function now does not return an error so we can drop it fully.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
418aa809fd util: buffer: Remove error handling internals
Now that there are no errors reported and tracked in virBuffer, remove
all the internals which were used to track them.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
244f906b16 util: buffer: Reimplement virBuffer internals using glib's GString
GString is surprisingly similar to what libvirt was doing painstakingly
manually. Yet it doesn't support the automatic indentation features we
use for XML so we rather keep those in form of virBuffer using GString
internally.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
c721cc1670 util: buffer: Encode URIs with upper case hex characters
rfc3986 uses uppercase characters so switch to using them as well.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
5fdad0db2c util: buffer: Properly URLencode strings
According to rfc3986:

2.3.  Unreserved Characters

   Characters that are allowed in a URI but do not have a reserved
   purpose are called unreserved.  These include uppercase and lowercase
   letters, decimal digits, hyphen, period, underscore, and tilde.

      unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

   URIs that differ in the replacement of an unreserved character with
   its corresponding percent-encoded US-ASCII octet are equivalent: they
   identify the same resource.  However, URI comparison implementations
   do not always perform normalization prior to comparison (see Section
   6).  For consistency, percent-encoded octets in the ranges of ALPHA
   (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E),
   underscore (%5F), or tilde (%7E) should not be created by URI
   producers and, when found in a URI, should be decoded to their
   corresponding unreserved characters by URI normalizers.

Thus we must not include few other characters which don't match
c_isalpha to conform to the rules.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
5e8551fbc0 util: virbuffer: Remove @dynamic from virBufferGetIndent
After the conversion of all callers that would pass true as @dynamic to
a different function we can remove the unused argument now.

Additionally modify the return type to 'size_t' as indentation can't be
negative and remove checks whether @buf is passed as it's caller's duty
to do so.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
c7ccb159ef util: sysinfo: Use virXMLFormatElement and infrastructure in virSysinfoFormat
It basically implements almost the same thing, so we can replace it with
existing helpers with a few tweaks.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
673f5e04da util: buffer: Split getting of effective indent out of virBufferGetIndent
The function basically does two very distinct things depending on a
bool. As a first step of conversion split out the case when @dynamic is
true and implement it as a new function and convert all callers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
32ff9baf68 tests: virbuffer: Remove unused test data struct
The DO_TEST macro initializes 'struct testInfo' but it's not used by any
of the tests. Remove it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
599e30c8b7 tests: virbuffer: Drop 'infinite loop' tests
The tests are deeply based on internals of virBuffer which will be
replaced in an upcoming patch with glib's GString. Remove the tests.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
e154e01ead util: buffer: Simplify handling of indent overflows
Rather than setting usage error truncate the indentation level. Having
the output string misformated is way more useful to figure out where the
error lies rather than reporting an error after a giant formatter
function.

In testBufAutoIndent we now validate that the indentation is truncated
and testBufAddBuffer2 is removed since it became bogus.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
49037f94d2 util: buffer: Don't treat missing truncation in virBufferTrim as usage error
Usage errors in the virBuffer are hard to track anyways. Just trim
noting if the user requests the trimming string to be used without
providing it.

The change in the test proves that it's a no-op now.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
65d748fac6 util: alloc: drop xalloc_oversized macro
We've now got rid of all the uses.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
b2814b6a6f virsh: Reimplement _vshCalloc using g_malloc0_n
Drop the dead code by using glib's allocator.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
241057681a util: buffer: Simplify escape buffer allocations
Replace combinations of xalloc_oversized and VIR_ALLOC_N_QUIET by using
g_malloc0_n which does the checking internally.

This conversion is done with a semantic difference and slightly higher
memory requirements as I've opted to allocate one chunk more than
necessary rather than trying to accomodate the NUL byte separately.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
ff06e83407 util: buffer: Use 'cleanup' as label name in virBufferAddBuffer
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
a5217cd7c0 util: buffer: Simplify convoluted condition
Spare a few more lines rather than having a condition with a nested
ternary.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
27bab9cac4 internal: Use g_strcmp0 in STR(N)EQ_NULLABLE
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
634dbd936b remote: Serialize typed parameters earlier
Move calls to virTypedParamsSerialize earlier in the event dispatch
functions so that we don't have to call 'xdr_free' afterwards.

This is possible as virTypedParamsSerialize cleans up after itself if it
fails.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
6fc8504293 remote: Use g_new0 to allocate 'remote_string' in event RPC handlers
Few events emit optional strings. We need to allocate the container for
it first. Note that remote_nonnull_string is used as the type as the
internal part of the string is nonnull if the container is present.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
d89544f672 remote: Replace VIR_ALLOC_N with g_new0 in remoteRelayDomainEventGraphics
Allocate the array of graphics identity objects using g_new0 to allow
dropping the 'error' label.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
694323bbb2 remote: dispatch: Remove return value from make_nonnull_* helpers
After conversion to g_strdup, the helpers now always return success.
Remove the return value to simplify the callers.

Note that many occurrences of these is in the code generated by
gendispatch.pl. Since gendispatch aggregates many cases together an
incremental conversion would require more invasive changes to
gendispatch for the time of conversion which doesn't make sense.

Also in many cases the helper was the last place where the 'error:'
label was used and thus also those conversions must be included in this
patch.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
509c6e5140 qemu: blockjob: Use 'g_free' in qemuBlockJobDataDispose
Prepare the function for addition of new members to clean.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
0b82b13adc qemu: blockjob: Refactor qemuBlockJobEventProcessConcludedTransition
Use only one switch case selecting job type and decide what's successful
outcome on a case-by-case basis.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
bac02e396d qemu: monitor: Add helper for generating data for block bitmap merging
Introduce qemuMonitorTransactionBitmapMergeSourceAddBitmap which adds
the appropriate entry into a virJSONValue array to be used with
qemuMonitorTransactionBitmapMerge. Bitmap merging supports two possible
formats and this new helper implements the more universal one specifying
also the source node name.

In addition use the new helper in the testQemuMonitorJSONTransaction
test.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
cbaee2199b qemu: checkpoint: Extract finalizing steps of checkpoint creation
Extract the linking and saving bits of checkpoint creation into
qemuCheckpointCreateFinalize so that qemuCheckpointCreateXML is a bit
simpler and also makes it reusable in the backup code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
0ebc74d3e1 qemu: checkpoint: Split out checkpoint creation code
Separate out individual steps of creating a checkpoint from
qemuCheckpointCreateXML into separate functions. This makes the function
more readable and understandable and also some of the new functions will
be reusable when we will be creating a checkpoint along with a backup
in the upcoming patches.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
fefb2d743a qemu: checkpoint: Enforce that 'bitmap' name must match checkpoint name
Prevent insane configurations by enforcing that disk bitmap for a
checkpoint must match the name of the checkpoint.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
d374389974 conf: checkpoint: Don't clear current checkpoint when redefining
If we are updating the current checkpoint when redefining by mentioning
the current checkpoint as a parent of the newly redefined one we don't
have to clear it first.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
a8f92d2d7f conf: checkpoint: Don't clear current checkpoint when redefining an existing one
There's no point in clearing the current checkpoint when we are just
changing the definition of the current checkpoint as by the virtue of the
'update_current' flag the same checkpoint would become current in
qemuCheckpointCreateXML.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
4d60e7fdd4 conf: Don't reuse variable for different object in virDomainCheckpointRedefinePrep
The 'other' variable was used to store the parent of the redefined
checkpoint and then the existing version of the currently redefined
checkpoint. Make it less confusing by adding a 'parent' variable for the
first case.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
e0a4a011c1 conf: snapshot: Remove 'update_current' parameter from virDomainSnapshotRedefinePrep
The variable is unused so we can drop it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
551dde9256 conf: snapshot: Don't clear current snapshot when redefining an existing one
There's no point in clearing the current snapshot when we are just
changing the definition of the current snapshot as by the virtue of the
'update_current' flag the same snapshot would become current in
qemuDomainSnapshotCreateXML.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-24 19:35:34 +02:00
Peter Krempa
639d6e7045 tests: domaincaps: Fix build when WITH_QEMU is disabled
doTestQemuInternal and doTestQemu are used only when WITH_QEMU is
enabled.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2019-10-24 19:33:52 +02:00
Andrea Bolognani
6a077cf2b3 tests/domaincaps: Use testQemuCapsIterate()
Now that the only data we need for fully testing a QEMU binary is
the (version, arch) combo, we can stop providing that information
ourselves and instead rely on testQemuCapsIterate() automatically
picking up new input files as they are added to the repository,
the same way the qemucapabilities and qemucaps2xml tests already
behave.

Unsurprisingly, this change results in a bunch of extra output
files being created, significantly expanding our test coverage.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:29 +02:00
Andrea Bolognani
79a14412b2 tests/domaincaps: Make test matrix programmatic
For each QEMU version there are usually several different,
architecture-dependedn scenarios that we're interested in testing;
however, since the test matrix has to be explicitly created by
calling DO_TEST_QEMU() multiple times with different arguments, we
end up with spotty coverage.

Fix this by implementing the arch-specific rules in code, which
result in the full coverage for a (version, arch) combo being
automatically achieved with a single call to DO_TEST_QEMU().

Unsurprisingly, this change results in a bunch of extra output
files being created.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:26 +02:00
Andrea Bolognani
5457af097d tests/domaincaps: Don't require redundant information
The full name of the test case, as well as the name of the QEMU
binary and corresponding capabilities file, can all be derived
from other information passed to the test, so there's no point in
asking the user to provide them.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:24 +02:00
Andrea Bolognani
12e42f1b2b tests/domaincaps: Move most of DO_TEST_QEMU() into a function
Macros become less and less appealing the more work you perform
inside them: DO_TEST_QEMU() has arguably already crossed that
threshold, and we're going to add even more code later on.

While factoring the code out of the macro, convert it to use the
GLib string manipulation functions and take advantage of autofree.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:22 +02:00
Andrea Bolognani
63d5a597ea tests/domaincaps: Don't mess with test name
Requiring the user to provide the final string themselves will
make subsequent changes easier to implement.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:20 +02:00
Andrea Bolognani
fa20e7b1bc tests: Rename domaincapsschemadata/ -> domaincapsdata/
The usual convention is to use ${foo}test.c for the test program
itself and either ${foo}data/ or ${foo}outdata/, depending on
whether it contains both input and output files or only the latter,
for the corresponding data directory.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:16 +02:00
Andrea Bolognani
c4d6465aa7 tests: testQemuCapsIterate: Pass prefix and version to callback
Right now we're passing a "base" string that contains both,
separated by an underscore. Some changes that we're going to
introduce later will require us to have the version number on its
own, and instead of delegating the task of splitting the two apart
to the callback it make more sense to perform it upfront.

This change results in quite a bit of churn because we're now
using the version number only, without the prefix, to calculate
the dummy microcodeVersion.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:14 +02:00
Andrea Bolognani
5a45ed9c96 tests: testQemuCapsIterate: Pass suffix to callback
Right now users need to hardcode the suffix, which is not a big
deal since they're the ones who passed it to testQemuCapsIterate()
in the first place; however, since we're already passing most of
the information to the callback and we're going to add more later
on, it makes sense to be consistent and pass the suffix too.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:12 +02:00
Andrea Bolognani
51495a4d73 tests: testQemuCapsIterate: Pass inputDir to callback
Right now users need to know input file live inside
TEST_QEMU_CAPS_PATH, which is bad layering.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:10 +02:00
Andrea Bolognani
29795544fd tests: testQemuCapsIterate: Validate suffix
We're going to depend on the fact that the suffix starts with a
dot later on, so we better ensure that it does.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:08 +02:00
Andrea Bolognani
85394f676d tests: testQemuCapsIterate: Don't ignore malformed file names
If files whose name doesn't follow the expected format are added
to the repository, it's better to make the test suite fail than to
silently ignore them.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:21:05 +02:00
Andrea Bolognani
dea6c10946 tests/qemucapabilities: Separate inputDir and outputDir
We'll need this later.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-24 17:20:49 +02:00
Pavel Hrdina
b5bb62a64d build: src: fix libtool dependency issue
Libtool gets a wrong order of arguments of libraries to install and it
fails when installing libvirt-admin.so that libvirt.so is not yet
installed.  Caused by commit <3097282d8668693eb4b7c3fb1b4fe5b474996b9c>.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-24 12:40:45 +02:00
Michal Privoznik
3b4df5d350 Drop needless ret variable
In few places we have the following code pattern:

  int ret;
  ... /* @ret is not accessed here */
  ret = f(...);
  return ret;

This pattern can be written less verbose:

  ...
  return f(...);

This patch was generated with following coccinelle spatch:

  @@
  type T;
  constant C;
  expression f;
  identifier ret;
  @@
  -T ret = C;
   ... when != ret
  -ret = f;
  -return ret;
  +return f;

Afterwards I needed to fix a few places, e.g. comment in
virDomainNetIPParseXML() was removed too because coccinelle
thinks it refers to @ret while in fact it doesn't. Also in few
places it replaced @ret declaration with a few spaces instead of
removing the line. But nothing terribly wrong.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-24 08:10:37 +02:00
Michal Privoznik
b3739aa63f .gitignore: Ignore src/admin/libvirt_admin.{def,syms}
In v5.8.0-332-g3097282d86 the libvirt-admin.so was moved into
src/admin/ directory. However, corresponding .gitignore change
was left out.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-23 15:10:56 +02:00
Michal Privoznik
307a04671b qemu_command: Change logic in qemuVirCommandGet{FDSet,GetDevSet}
These two functions have pattern that's preventing us from
simpler virAsprintf() -> g_strdup_printf() transition. Modify
their logic a bit.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:56:57 +02:00
Michal Privoznik
9e9d78057d src: Don't rely on virAsprintf() returning string length
In a few places our code relies on the fact that virAsprintf()
not only prints to allocated string but also that it returns the
length of that string. Fortunately, only few such places were
identified:

  https://www.redhat.com/archives/libvir-list/2019-September/msg01382.html

In case of virNWFilterSnoopLeaseFileWrite() and virFilePrintf()
we can use strlen() right after virAsprintf() to calculate the
length. In case of virDoubleToStr() it's only caller checks for
error case only, so we can limit the set of returned values to
just [-1, 0].

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:56:51 +02:00
Pavel Hrdina
67a61a1bf6 docs: generate files into build dir and stop distributing them
Historically we did not support VPATH builds and everything was
generated into source directory.  The introduction of VPATH builds did
not changed the way how our documentation is handled.

This patch changes the rules to generate everything into build
directory and stops distributing generated files in order to have
properly separated VPATH builds.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:46:26 +02:00
Pavel Hrdina
2b2c3361b6 docs: apibuild: remove old code paths
There is no need to keep old compatibility code around as it it will
never be used in our current source tree.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:46:26 +02:00
Pavel Hrdina
17f2187e06 include: stop distributing generated source files
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:45:56 +02:00
Pavel Hrdina
82a643a671 src: move nodist_libvirt_driver_remote_la_SOURCES into remote Makefile
Commit <124f06534c65618b1eeeee07bb26182ab8e30119> moved remote related
build rules into separate makefile but forgot to move this part as well.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:31:00 +02:00
Pavel Hrdina
3097282d86 build: move admin code into admin directory
There is no need to have the libvirt-admin.so library definition in the
src directory.  In addition the library uses directly code from admin
sub-directory so move the remaining bits there as well.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:30:58 +02:00
Pavel Hrdina
32ea231b21 logging: separate log driver code into libvirt_driver_log.la
Follow the same pattern as for other sub-directories where we create a
static library that is linked into libvirt.so.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:30:56 +02:00
Pavel Hrdina
f5cf2f7566 locking: separate lock driver code into libvirt_driver_lock.la
Follow the same pattern as for other sub-directories where we create a
static library that is linked into libvirt.so.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:30:54 +02:00
Pavel Hrdina
5f92046b77 m4: virt-selinux: remove obsolete checks
All OSes that we support have libselinux >= 2.5 except for Ubuntu 16.04
where the version is 2.4.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:30:50 +02:00
Pavel Hrdina
3365cdf8a8 m4: virt-netcf: bump minimal version to 0.1.8
This version is available on all supported OSes and includes the
transaction APIs.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:30:49 +02:00
Pavel Hrdina
c7f8a66b22 m4: virt-libnl: drop libnl-1.0 support
All supported OSes have libnl-3.0 and netcf uses it so there is no need
to keep libnl-1.0 compatibility code.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:30:47 +02:00
Pavel Hrdina
18981877d2 m4: virt-driver-libxl: remove Fedora 28 check
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-23 14:30:34 +02:00
Michal Privoznik
c8007fdc5d domain_conf: Relax SCSI addr used check
In domain_conf.c we have virDomainSCSIDriveAddressIsUsed()
function which returns true or false if given drive address is
already in use for given domain config or not. However, it also
takes a shortcut and returns true (meaning address in use) if the
unit number equals 7. This is because for some controllers this
is reserved address. The limitation comes mostly from vmware and
applies to lsilogic, buslogic, spapr-vscsi and vmpvscsi models.
On the other hand, we were not checking for the maximum unit
number (aka LUN number) which is also relevant and differs from
model to model.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-23 10:29:52 +02:00
Michal Privoznik
9cddc6e8ee domain_conf: Make virDomainDeviceFindSCSIController accept virDomainDeviceDriveAddress struct
So far, the virDomainDeviceFindSCSIController() takes
virDomainDeviceInfo structure which is an overkill. It assumes
that the passed structure is type of
VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE which is not obvious.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-23 10:27:43 +02:00
Ján Tomko
8e09cf1d5a docs: hacking: fix typo
s/verca/versa/

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:15:02 +02:00
Ján Tomko
71aadcd764 docs: hacking: amend push-without-review rules
Include the 'semi-automatic' updates in the list of patches pushed
at maintainers' discretion to match current practice.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:15:02 +02:00
Ján Tomko
5516311426 docs: hacking: extend goto documentation
Replace reference to VIR_FREE with g_free and mention the use
of g_auto cleanup attributes that eliminate most of label use.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:15:02 +02:00
Ján Tomko
6cc9b74e0e docs: hacking: remove reference to ATTRIBUTE_FORMAT
Prefer G_GNUC_PRINTF.

Also, pick another example than virAsprintf since it may get
removed in the future.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:15:02 +02:00
Ján Tomko
2d0b8560ce docs: hacking: document string concatenations
Recommend GString for generic strings and virBuffer for strings
that need helpers for other uses, like XML or command line
formatting.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:15:02 +02:00
Ján Tomko
da5c733524 docs: hacking: document preferred strdup alternatives
Recommend g_str(n)dup instead of VIR_STRDUP.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:15:02 +02:00
Ján Tomko
95f3a1fe3c docs: hacking: mention GLib alternatives of libvirt string allocation macros
Document the preferred alternatives to existing libvirt macros for
allocating strings. These cannot be deleted just yet because
converting them will require a lot of work.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:15:02 +02:00
Ján Tomko
48f48b27af docs: hacking: mention GLib alternatives of libvirt allocation macros
Document the preferred alternatives to existing libvirt macros for
memory allocation. These cannot be deleted just yet because
converting them will require a lot of work.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:09:48 +02:00
Ján Tomko
e30c787a0c docs: hacking: mention compiler annotations
Mention all the __attribute__ annotations we use to make the compiler
and/or the static analysis tools understand the code better.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:09:14 +02:00
Ján Tomko
16eed88666 docs: hacking: extend the table of removed libvirt macros
Mention the various ATTRIBUTE* macros and ARRAY_CARDINALITY
that were removed earlier.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:09:14 +02:00
Ján Tomko
fe9b3e1cdc docs: hacking: demonstrate the powers of VIR_TEST_RANGE
Mention a more complex example.

Invoke the test without 'make' since the mentioned example
does not seem to be working anymore.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:09:13 +02:00
Ján Tomko
1e8446024a docs: hacking: remove notes about -Werror
Our HACKING file is clear about requiring submission from a git
checkout, which automatically enables -Werror.

Remove the mentions of explicitly enabling it to alleviate
the collective cognitive encumbrance.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:09:13 +02:00
Ján Tomko
136d907ff6 docs: hacking: emphasize some sections
Namely:
* holding up the first-time patch submissions for moderation,
  which might cause first-time submitters to question the process
* not CC-ing individual developers

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:09:13 +02:00
Ján Tomko
2825803477 docs: hacking: mention git-publish prominently
This tool takes care of many of the tedious parts of submitting
a patch. Mention it first, above the "manual" way using
git send-email.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:09:13 +02:00
Ján Tomko
fd082e16c9 docs: hacking: remove note about rename detection
It has been enabled by default for over three years now:

commit 5d2a30d7d8777319c745804f040fa405d02169ce
Author:     Junio C Hamano <gitster@pobox.com>
CommitDate: 2016-04-03 10:29:22 -0700

    Merge branch 'mm/diff-renames-default'

5d2a30d7d8

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 22:09:13 +02:00
Michal Privoznik
bb647fd714 libxl_domain: Use g_autoptr for libxlDriverConfig
This simplifies some functions, but mostly
libxlDomainManagedSavePath() which is going to be modified in
future commits.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-22 15:49:53 +02:00
Maya Rashish
417bd1e716 m4: Improve portability for non-bash shells
= and == are both operators to test for string equality in bash,
but only = is required by POSIX.

Signed-off-by: Maya Rashish <coypu@sdf.org>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-22 11:39:38 +02:00
Michal Privoznik
7530ebc7b4 bhyve: Ignore test_libvirtd_bhyve.aug
The file is generated during build, but not ignored.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-22 08:58:31 +02:00
Michal Privoznik
3357500af2 bhyve_conf: Drop unused 'error' label in virBhyveDriverConfigNew()
There's unused 'error' label left after transition from
VIR_STRDUP() to g_strdup (v5.8.0-255-g652cdbe364).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-22 08:52:04 +02:00
Peter Krempa
2cff65e4c6 qemu: block: Don't query monitor in qemuBlockStorageSourceCreateDetectSize
Calling the monitor was convenient for the implementation in
qemuDomainBlockCopyCommon, but causes the snapshot code to call
query-named-block-nodes for every disk.

Fix this by removing the monitor call from
qemuBlockStorageSourceCreateDetectSize so that the data can be reused in
loops.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-21 16:53:42 +02:00
Peter Krempa
86bf7ded3e qemu: monitor: Introduce new interface to query-named-block-nodes
Retrieve data for individual block nodes in a hash table. Currently only
capacity and allocation data is extracted but this will be extended in
the future.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-21 16:53:42 +02:00
Peter Krempa
36d934e7ae util: hash: Introduce virHashHasEntry
Add a helper that checks whether an entry with given name exists but
does not touch the userdata.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-21 16:53:42 +02:00
Peter Krempa
defd31358e util: hash: Add new constructor 'virHashNew'
Add a simpler constructor for hash tables which specifically does not
require specifying the initial hash size and uses simpler freeing
function.

The initial hash table size usually is not important as the hash table
is growing when it reaches certain number of entries in one bucket.
Additionally many callers pass in a random small number for ad-hoc table
use so using a central one will simplify things.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-21 16:53:42 +02:00
Peter Krempa
49288fac96 util: hash: Add possibility to use simpler data free function in virHash
Introduce a new type virHashDataFreeSimple which has only a void * as
argument for cases when knowing the name of the entry when freeing the
hash entry is not required.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-21 16:53:42 +02:00
Peter Krempa
5bf573f62b Replace virDomainDiskByName by virDomainDiskByTarget in appropriate cases
In many cases we used virDomainDiskByName to solely look up disk by
target. We have a new helper now so we can replace it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-21 16:29:18 +02:00
Peter Krempa
7c21e38d38 conf: Remove unused virDomainDiskFindByBusAndDst
Previous commit removed last use of this function so we can get rid of
it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-21 16:29:05 +02:00
Peter Krempa
704edb1b70 qemu: Replace use of virDomainDiskFindByBusAndDst with virDomainDiskByTarget
In both replaced cases we have other code that verifies that the bus
can't be changed or that the target is unique, so limiting the search to
disks with same bus makes no sense.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-21 16:29:05 +02:00
Peter Krempa
22335e9ed0 conf: Introduce virDomainDiskByTarget
Introduce a simpler replacement for virDomainDiskByName when looking up
by disk target.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-21 16:29:05 +02:00
Peter Krempa
40bfdb1ea9 conf: Remove virDomainDiskPathByName
Last use was removed in 29682196d8.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-21 16:29:05 +02:00
Peter Krempa
ec042d3731 qemu: domain: Tolerate NULL @disk in qemuDomainPrepareDiskSourceData
In some cases we want to prepare a @src which is not meant to belong to
a disk and thus does not require us to copy the data. Allow passing in
NULL @disk into qemuDomainPrepareDiskSourceData.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-21 16:29:05 +02:00
Peter Krempa
b663201b23 qemu: domain: clarify sematics of qemuDomainPrepareDiskSourceData
Note in the comment that this function prepares the storage source based
on the configuration of the disk.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-21 16:29:05 +02:00
Peter Krempa
08e0ffe8f5 qemu: domain: Remove pointless return value in qemuDomainPrepareDiskSourceData
The function does not do anything that could fail. Remove the return
value.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-21 16:29:05 +02:00
Peter Krempa
aef87271be qemu: domain: Split out setup of virStorageSource from qemu driver config
qemuDomainPrepareDiskSourceData historically prepared everything but
we've split out the majority of the functionality so that it sets up
predominately only according to the configuration of the disk. There
was one leftover bit of setting the gluster debug level from the config.

Split this out into a separate function so that
qemuDomainPrepareDiskSourceData only prepares based on the disk.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
ACKed-by: Eric Blake <eblake@redhat.com>
2019-10-21 16:28:02 +02:00
Peter Krempa
e1b5a7b383 tests: Add test case for empty 'network' cdrom
We don't allow such config in the schema but the code can handle that so
add a test case supporting it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 15:59:52 +02:00
Peter Krempa
2c37dc7bda conf: Reset disk type if <source> element is completely missing
The disk type is not part of source and thus it's parsed earlier. This
bypasses the checks when parsing a disk type='network' if it's
completely missing the source.

Since there are possible active users of this (it was reported as a
problem with openstack) fix it by resetting the disk type to '_FILE' for
an empty cdrom which is handled correctly.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 15:59:52 +02:00
Michal Privoznik
224d269f19 qemuDomainGetHostdevPath: Drop @freeTmpPath
The @freeTmpPath boolean is used to determine if @tmpPath holds
an allocated memory or is a pointer to a constant string and
therefore if it needs to be freed or not when returning from the
function. Well, we can unify the way we set @tmpPath so that it
always holds an allocated memory and thus always must be freed.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-21 13:50:24 +02:00
Michal Privoznik
69a66f1319 qemu_domain: Drop few useless checks in qemuDomainGetHostdevPath
There are three cases where vir*DeviceGetPath() returns a const
string. In these cases, the string is initialized in
corresponding vir*DeviceNew() calls which fail if string couldn't
be allocated. There's no point in checking the second time if the
string is NULL.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-21 13:50:24 +02:00
Michal Privoznik
90200667b9 qemu_cgroup: Teardown Cgroup for more host device types
Since its introduction in v1.0.5-rc1-19-g6e13860cb4 the
qemuTeardownHostdevCgroup() does nothing unless the passed
hostdev is a PCI device with VFIO backend. This seems
unnecessary.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-21 13:50:24 +02:00
Michal Privoznik
78f0f2d273 qemu: Introduce qemuDomainNeedsVFIO
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-21 13:50:24 +02:00
Michal Privoznik
f988128cc1 qemu_hostdev: Introduce qemuHostdevNeedsVFIO()
There are two types of host devices that require /dev/vfio/vfio
access:

  1) PCI devices with VFIO backend
  2) Mediated devices

Introduce a simple helper that returns true if passed @hostdev
falls in either of the categories.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-21 13:50:24 +02:00
Michal Privoznik
0dfc7c6059 conf: Introduce virDomainDefHasMdevHostdev
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-21 13:50:24 +02:00
Michal Privoznik
82a2486236 virhostdev: Introduce and use virHostdevIsVFIODevice
In some places we need to check if a hostdev has VFIO backend.
Because of how complicated virDomainHostdevDef structure is, the
check consists of three lines. Move them to a function and
replace all checks with the function call.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-21 13:50:23 +02:00
Michal Privoznik
72cbc1800b virhostdev: Fix const correctness of virHostdevIs{PCINet,SCSI,Mdev}Device()
These functions do not change any of the passed hostdevs. They
just read them.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-21 13:50:23 +02:00
Ján Tomko
d63f91648e Use g_strdup instead of VIR_STRDUP everywhere
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:59 +02:00
Ján Tomko
506d313fa1 tools: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:59 +02:00
Ján Tomko
29b1e859e3 tests: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:59 +02:00
Ján Tomko
ddb99ca516 vbox: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:59 +02:00
Ján Tomko
18f377178a util: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:59 +02:00
Ján Tomko
8212e5e4ab vircgroup: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:58 +02:00
Ján Tomko
5a101469fc virstorage: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:58 +02:00
Ján Tomko
7d9f7e1731 test: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:58 +02:00
Ján Tomko
a7fb30e358 storage: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:58 +02:00
Ján Tomko
25d3fc7ada security: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:58 +02:00
Ján Tomko
45bf10ba1d rpc: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:58 +02:00
Ján Tomko
b2d079c113 remote: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:58 +02:00
Ján Tomko
ce36e33c10 qemu: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:57 +02:00
Ján Tomko
a0bb136929 nwfilter: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:57 +02:00
Ján Tomko
7f1f0453fc node_device: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:57 +02:00
Ján Tomko
4d81b800e2 network: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:57 +02:00
Ján Tomko
380bc1bec7 lxc: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:57 +02:00
Ján Tomko
620cd4d0c8 logging: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:57 +02:00
Ján Tomko
9e96101d40 locking: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:57 +02:00
Ján Tomko
b11457158e libxl: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:56 +02:00
Ján Tomko
2f3b7a5555 interface: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:56 +02:00
Ján Tomko
07ef88935a esx: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:56 +02:00
Ján Tomko
923ab677b2 datatypes: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:56 +02:00
Ján Tomko
df753c85db cpu: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:56 +02:00
Ján Tomko
17561eb362 conf: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:56 +02:00
Ján Tomko
652cdbe364 bhyve: use g_strdup instead of VIR_STRDUP
Replace all occurrences of
  if (VIR_STRDUP(a, b) < 0)
     /* effectively dead code */
with:
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:56 +02:00
Ján Tomko
7b48bb8ca0 Use g_strdup to fill in default values
Replace:
  if (!s && VIR_STRDUP(s, str) < 0)
    goto;
with:
  if (!s)
    s = g_strdup(str);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:55 +02:00
Ján Tomko
3cbd4351de Use g_strdup where VIR_STRDUP's return value was propagated
All the callers of these functions only check for a negative
return value.

However, virNetDevOpenvswitchGetVhostuserIfname is documented
as returning 1 for openvswitch interfaces so preserve that.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:55 +02:00
Ján Tomko
94c98eb550 drivers: use g_strdup in probe functions
The callers expect '1' on a successful probe,
so return 1 just like VIR_STRDUP would.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:55 +02:00
Ján Tomko
ea5bb994cb Use g_strdup instead of ignoring VIR_STRDUP_QUIET's value
Replace all the occurrences of
  ignore_value(VIR_STRDUP_QUIET(a, b));
with
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:55 +02:00
Ján Tomko
64023f6d21 Use g_strdup instead of ignoring VIR_STRDUP's value
Replace all the occurrences of
  ignore_value(VIR_STRDUP(a, b));
with
  a = g_strdup(b);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:55 +02:00
Ján Tomko
d74067c07b conf: use g_strdup in virDomainDiskSet
Use a temporary variable to allow copying from the
currently set source.

Always return 0 since none of the callers distinguishes
between 0 and 1 propagated from VIR_STRDUP.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:54 +02:00
Ján Tomko
cb756a9914 util: fix check for iscsi initiator copy
virStorageSourceInitiatorCopy propagates the return
value from VIR_STRDUP, which returns 1 on a successful
copy.

Only error out on < 0, not non-zero values.

Fixes: 9ea3fdc6e9

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:54 +02:00
Ján Tomko
5f9c062546 scripts: introduce a macro file for coccinelle
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-21 12:51:54 +02:00
Daniel P. Berrangé
d46734e7bf qemu: fix CPU model error probing capabilities for ppc
The CPU driver only supports CPU models for PPC64 architecture, not
plain PPC.

  Failed to probe capabilities for /usr/bin/qemu-system-ppc:
  this function is not supported by the connection driver:
  'ppc' architecture is not supported by CPU driver

This fixes a bug in

  commit db873ab3bc
  Author: Jiri Denemark <jdenemar@redhat.com>
  Date:   Thu May 17 17:08:42 2018 +0200

    qemu: Adapt to changed ppc64 CPU model names

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-21 10:25:15 +01:00
Julio Faracco
f019049111 gitdm: Add other emails into IBM company
Some people from IBM does not use 'ibm.com' domain emails.
They use personal or other domains.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-21 11:12:18 +02:00
Ján Tomko
fbc5a15372 vsh: mark ctl as unused in vshReadline
My commit removed the last use in the version for platforms
without readline.

Fixes: c937c1d23d

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-10-21 11:11:04 +02:00
Ján Tomko
f31bdc7ced tools: delete vshStrdup
Now that we use g_strdup everywhere, delete vshStrdup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:17 +02:00
Ján Tomko
c937c1d23d tools: prefer g_strdup to vshStrdup
Remove all the uses of vshStrdup in favor of GLib's g_strdup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Ján Tomko
7863f1547a tools: vshCommandArgvGetArg: prefer g_strdup
Remove the use of vshStrdup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Ján Tomko
df329e94cb tools: vshCommandArgvGetArg: one parameter per line
Split the parameters to make changes more readable.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Ján Tomko
fc941b2c54 virsh: getSignalNumber: use g_strdup
Eliminate the use of vshStrdup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Ján Tomko
5c808a09a7 virsh: getSignalNumber: use g_autofree
Mark the 'str' variable as g_autofree and avoid the need for
a separate cleanup label.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Ján Tomko
b6a8c9df4d virsh: getSignalNumber: rename variables
Use 'str' for the allocated copy of the string and 'p'
for the pointer into that string.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Ján Tomko
76b4cd88f5 virsh: use g_strdup in virshDomainGetEditMetadata
Prefer GLib's g_strdup to vshStrdup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Ján Tomko
d20f55c0f3 virsh: use g_strdup in cmdDomblkinfoGet
Prefer GLib's g_strdup to vshStrdup.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Ján Tomko
4e66c38655 tools: cmdDomblkinfoGet: reindent parameters
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-20 14:37:16 +02:00
Malina Salina
313a71ee7b network: allow DHCP/DNS/TFTP explicitly in OUTPUT rules
While the default iptables setup used by Fedora/RHEL distros
only restricts traffic on the INPUT and/or FORWARD rules,
some users might have custom firewalls that restrict the
OUTPUT rules too.

These can prevent DHCP/DNS/TFTP responses from dnsmasq
from reaching the guest VMs. We should thus whitelist
these protocols in the OUTPUT chain, as well as the
INPUT chain.

Signed-off-by: Malina Salina <malina.salina@protonmail.com>

Initial patch then modified to add unit tests and IPv6
support

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 18:49:54 +01:00
Daniel Henrique Barboza
80f45e65c0 gitdm: add 'ibm' file
Some people from IBM does not use 'ibm.com' domain emails.

Suggested-by: Leonardo Augusto Guimarães Garcia <lagarcia@br.ibm.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
2019-10-18 17:32:52 +02:00
Daniel P. Berrangé
5722e26ec5 util: drop logging filter/output flags
With the removal of support for log message stack traces, there is
nothing using the logging filter/output flags and they can be removed.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 16:25:17 +01:00
Daniel P. Berrangé
9b80e0c12a util: drop support for stack traces with logging
The log filters have supported the use of a "+" before the source match
string to request that a stack trace be emitted for every log message:

  commit 548563956e
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Wed May 9 15:18:56 2012 +0100

    Allow stack traces to be included with log messages

    Sometimes it is useful to see the callpath for log messages.
    This change enhances the log filter syntax so that stack traces
    can be show by setting '1:+NAME' instead of '1:NAME'.

With the huge & ever increasing number of logging statements per file,
this will be incredibly verbose and have a major performance penalty.
This makes the feature impractical to use widely and as such it is not
worth the code maint cost.

Removing this seldom used feature allows us to drop the 'execinfo'
module in gnulib which provides the backtrace() function which doesn't
exist on non-Linux.

Users who want to get stack traces of parts of libvirt can use GDB,
or systemtap for live tracing with minimal perf impact.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 16:25:17 +01:00
Daniel P. Berrangé
afbdc8495e util: add stdlib.h include for abort() prototype
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 15:43:39 +01:00
Michal Privoznik
9706476254 glibcompat: Reimplement g_strdup_printf() and g_strdup_vprintf()
These functions don't really abort() on OOM. The fix was merged
upstream, but not in the minimal version we require. Provide our
own implementation which can be removed once we bump the minimal
version.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 15:32:04 +02:00
Daniel P. Berrangé
b2c2a3ae91 build-aux: rewrite po file minimizer in Python
As part of an goal to eliminate Perl from libvirt build tools,
rewrite the minimize-po.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 13:54:03 +01:00
Daniel P. Berrangé
17bbdef5cb build-aux: rewrite augeas test generator in Python
As part of an goal to eliminate Perl from libvirt build tools,
rewrite the augeas-gentest.pl tool in Python.

This was a straight conversion, manually going line-by-line to
change the syntax from Perl to Python. Thus the overall structure
of the file and approach is the same.

The use of $(AUG_GENTEST) as a dependancy in the makefiles needed
to be fixed, because this was assumed to be the filename of the
script, but is in fact a full shell command line.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 13:54:03 +01:00
Daniel P. Berrangé
b36b20a1b3 build: fix use of $(AUG_GENTEST) as a dependency
The use of $(AUG_GENTEST) as a dependency in the makefiles is
a problem because this was assumed to be the filename of the
script, but is in fact a full shell command line.

Split it into two variables, so it can be correctly used for
dependencies.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 13:54:03 +01:00
Daniel P. Berrangé
c2219efd06 po: refresh translations from zanata
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-18 13:57:53 +01:00
Michal Privoznik
0ad79c1d01 m4: Don't suggest attribute malloc
With glib inclusion, some of its functions have
__attribute__((__malloc__)) which make compiler realize we want
to use the same attribute for some trivial functions of ours. For
instance qemuDomainManagedSavePath(). I don't see any real
benefit into using the attribute, so disable that suggestion.

In fact, wrong use of the attribute may lead to mysterious bugs:

  https://gitlab.gnome.org/GNOME/glib/issues/1465

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
2019-10-18 10:55:36 +02:00
Julio Faracco
71519d4638 qemu: Generate 'xres' and 'yres' for QEMU video devices
This commit let QEMU command line define 'xres' and 'yres' properties
if XML contains both properties from video model: based on resolution
fields 'x' and 'y'. There is a conditional structure inside
qemuDomainDeviceDefValidateVideo() that validates if video model
supports this feature. This commit includes the necessary changes to
cover resolution for 'video-qxl-resolution' test cases too.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
2019-10-17 16:18:34 -04:00
Julio Faracco
7286279797 conf: Add 'x' and 'y' resolution into video XML definition
This commit adds resolution element with parameters 'x' and 'y' into video
XML domain group definition. Both, properties were added into an element
called 'resolution' and it was added inside 'model' element. They are set
as optional. This element does not follow QEMU properties 'xres' and
'yres' format. Both HTML documentation and schema were changed too. This
commit includes a simple test case to cover resolution for QEMU video
models. The new XML format for resolution looks like:

    <model ...>
      <resolution x='800' y='600'/>
    </model>

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
2019-10-17 16:18:34 -04:00
Cole Robinson
fbf7c23c2d qemu: caps: Use unique key for domCaps caching
When searching qemuCaps->domCapsCache for existing domCaps data,
we check for a matching pair of arch+virttype+machine+emulator. However
for the hash table key we only use the machine string. So if the
cache already contains:

  x86_64 + kvm + pc + /usr/bin/qemu-kvm

But a new VM is defined with

  x86_64 + qemu + pc + /usr/bin/qemu-kvm

We correctly fail to find matching cached domCaps, but then attempt
to use a colliding key with virHashAddEntry

Fix this by building a hash key from the 4 values, not just machine

Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-17 14:59:41 -04:00
Daniel Henrique Barboza
b83884d1a0 qemu_driver.c: use g_strdup_printf
This patch changes all virAsprintf calls to use the GLib API
g_strdup_printf in qemu_driver.c

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 13:56:46 +02:00
Daniel Henrique Barboza
89026383d3 qemu_driver.c: remove unused 'cleanup' labels after g_auto*() changes
The g_auto*() changes made by the previous patches made a lot
of 'cleanup' labels obsolete. Let's remove them.

Suggested-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 13:56:46 +02:00
Daniel Henrique Barboza
0108deb944 qemu_driver.c: use g_autofree when possible
String and other scalar pointers an be auto-unref, sparing us
a VIR_FREE() call.

This patch uses g_autofree whenever possible with strings and
other scalar pointer types.

Suggested-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 13:56:46 +02:00
Daniel Henrique Barboza
c00d13450f qemu_driver.c: use g_autoptr() when possible
Several pointer types can be auto-unref for the great majority
of the uses made in qemu_driver, sparing us a virObjectUnref()
call.

This patch uses g_autoptr() in the following pointer types inside
qemu_driver.c, whenever possible:

- qemuBlockJobDataPtr
- virCapsPtr
- virConnect
- virDomainCapsPtr
- virNetworkPtr
- virQEMUDriverConfigPtr

Suggested-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 13:56:46 +02:00
Daniel Henrique Barboza
af6e383e4b qemu_driver.c: use g_auto* in some functions
This patch changes qemuDomainSnapshotLoad, qemuDomainCheckpointLoad and
qemuStateInitialize to use g_autoptr() and g_autofree, cleaning up
some virObjectUnref() and VIR_FREE() calls on each.

The reason this is being sent separately is because these are not
trivial search/replace cases. In all these functions some strings
declarations are moved inside local loops, where they are in fact
used, allowing us to erase VIR_FREE() calls that were made inside
the loop and in 'cleanup' labels.

Following patches with tackle more trivial cases of g_auto* usage
in all qemu_driver.c file.

Suggested-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 13:56:46 +02:00
Ján Tomko
813510f95c docs: hacking: add a conversion table for removed libvirt macros
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 12:45:32 +02:00
Ján Tomko
6a73c8f2c1 docs: hacking: use <code> for functions/names
Use the <code> element more in the GLib section.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 12:45:32 +02:00
Ján Tomko
e4943fce3b docs: hacking: separate section about already deleted macros
Move the recently deleted libvirt macros into a separate section.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 12:44:55 +02:00
Carlos Santos
8e0c590c14 storage: fix build with musl libc
On musl _PATH_MOUNTED is defined in paths.h, not in mntent.h, which
causes compilation errors:

storage/storage_backend_fs.c: In function 'virStorageBackendFileSystemIsMounted':
storage/storage_backend_fs.c:255:23: error: '_PATH_MOUNTED' undeclared (first use in this function); did you mean 'XPATH_POINT'?
     if ((mtab = fopen(_PATH_MOUNTED, "r")) == NULL) {
                       ^~~~~~~~~~~~~
                       XPATH_POINT

Fix this including paths.h if _PATH_MOUNTED is still not defined after
including mntent.h. This also works with glibc and uClibc-ng.

Signed-off-by: Carlos Santos <casantos@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 10:59:26 +02:00
Carlos Santos
44d63ad997 qemu: fix build with musl libc
On musl libc "stderr" is a preprocessor macro whose expansion leads to
compilation errors:

In file included from qemu/qemu_process.c:66:
qemu/qemu_process.c: In function 'qemuProcessQMPFree':
qemu/qemu_process.c:8418:21: error: expected identifier before '(' token
     VIR_FREE((proc->stderr));
                     ^~~~~~

Prevent this by renaming the homonymous field in the _qemuProcessQMP
struct to "stdErr".

Signed-off-by: Carlos Santos <casantos@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-17 10:54:32 +02:00
Ján Tomko
be2d71f325 qemu: remove unused cfg variables
These functions got a reference to the driver config
without actually using it:
  processNicRxFilterChangedEvent
  qemuConnectDomainXMLToNative

Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-10-17 10:04:10 +02:00
John Ferlan
88669478e9 tools: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:41 -04:00
John Ferlan
29565c5013 vz: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:41 -04:00
John Ferlan
5af7c72c9c util: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:41 -04:00
John Ferlan
7c47becf76 storage: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:41 -04:00
John Ferlan
28805f3d86 remote: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:41 -04:00
John Ferlan
7fb2d1339a qemu: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:41 -04:00
John Ferlan
0daec35370 lxc: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:40 -04:00
John Ferlan
57a9d2fe01 libxl: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:40 -04:00
John Ferlan
532e9a349b src: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:40 -04:00
John Ferlan
4e7b3b1ebd conf: Use consistent error preservation and restoration calls
Provide some consistency over error message variable name and usage
when saving error messages across possible other errors or possibility
of resetting of the last error.

Instead of virSaveLastError paired up with virSetError and virFreeError,
we should use the newer virErrorPreserveLast and virRestoreError.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:24:40 -04:00
Laine Stump
382c762c45 conf: remove parse code for long-extinct "<state devaddr='d🅱️s'/>
Back in July 2009, in the days before libvirt supported explicitly
assigning a PCI address to every device, code was added to save the
PCI addresses of hotplugged network, disk, and hostdevs in the domain
status with this XML element:

   <state devaddr='domain🚌slot'/>

This was added in commits 4e21a95a, 01654107, in v0.7.0, and 0c5b7b93
in v0.7.1.

Then just a few months later, in November 2009, The code that actually
formatted the "devaddr='blah'" into the status XML was removed by
commit 1b0cce7d3 (which "introduced a standardized data structure for
device addresses"). The code to *parse* the devaddr from the status
was left in for backward compatibility though (it just parses it into
the "standard" PCI address).

At the time the devaddr attribute was added, a few other attributes
already existed in the <state> element for network devices, and these
were removed over time (I haven't checked the exact dates of this),
but 10 years later, in libvirt v5.8.0, we *still* maintain code to
parse <state devaddr='blah'/> from the domain status.

In the meantime, even distros so old that we no longer support them in
upstream libvirt are using a libvirt new enough that it doesn't ever
write <state devaddr='blah'/> to the domain status XML.

Since the only way a current libvirt would ever encounter this element
would be if someone was upgrading directly from libvirt <= v0.7.5 with
running guests, it seems safe to finally remove the code that parses it.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-16 13:48:30 -04:00
Ján Tomko
8d42211881 internal: delete VIR_STEAL_PTR
Delete the macro to prevent its usage in new code.

The GLib version should be used instead:
    p = g_steal_pointer(&ptr);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:42 +02:00
Ján Tomko
b6108a04ea Use g_steal_pointer instead of VIR_STEAL_PTR everywhere
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:42 +02:00
Ján Tomko
a3931b4996 util: use g_steal_pointer instead of VIR_STEAL_PTR
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:42 +02:00
Ján Tomko
4f7c65da27 tools: use g_steal_pointer instead of VIR_STEAL_PTR
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:42 +02:00
Ján Tomko
72a1bb8e4c qemu: use g_steal_pointer instead of VIR_STEAL_PTR
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:42 +02:00
Ján Tomko
efc266883f conf: use g_steal_pointer instead of VIR_STEAL_PTR
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:42 +02:00
Ján Tomko
636b8a4b5f internal: delete VIR_RETURN_PTR
Remove the macro definition to prevent its usage in new code.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:41 +02:00
Ján Tomko
483a14f871 Remove all usage of VIR_RETURN_PTR
Prefer:
    return g_steal_pointer(&ptr);

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:41 +02:00
Ján Tomko
d402e71901 util: delete VIR_AUTOFREE
Commit 1e2ae2e311 deleted the last use
of VIR_AUTOFREE but forgot to delete the macro definition.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 15:59:41 +02:00
Ján Tomko
68fb03c7c0 Remove virautoclean.h
Now that we no longer use any of the macros from this file, remove it.

This also removes a typo.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:44 +02:00
Ján Tomko
9665fbb22a Delete virObjectAutoUnref
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:44 +02:00
Ján Tomko
2b390b97b4 Use g_autoptr instead of VIR_AUTOUNREF
Now that all the types using VIR_AUTOUNREF have a cleanup func defined
to virObjectUnref, use g_autoptr instead of VIR_AUTOUNREF.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:44 +02:00
Ján Tomko
df4986b51b Define G_DEFINE_AUTOPTR_CLEANUP_FUNC for virDomainCheckpointDef
Allow g_autoptr to be used instead of VIR_AUTOUNREF.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:44 +02:00
Ján Tomko
45678bd70a Use g_autoptr instead of VIR_AUTOPTR
Since commit 44e7f02915
    util: rewrite auto cleanup macros to use glib's equivalent

VIR_AUTOPTR aliases to g_autoptr. Replace all of its use by the GLib
macro version.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:43 +02:00
Ján Tomko
8334203f91 Use G_DEFINE_AUTOPTR_CLEANUP_FUNC instead of VIR_DEFINE_AUTOPTR_FUNC
Since commit 44e7f02915
    util: rewrite auto cleanup macros to use glib's equivalent

VIR_AUTOPTR aliases to g_autoptr. Replace all uses of VIR_DEFINE_AUTOPTR_FUNC
with G_DEFINE_AUTOPTR_CLEANUP_FUNC in preparation for replacing the
rest.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:43 +02:00
Ján Tomko
1e2ae2e311 Use g_autofree instead of VIR_AUTOFREE
Since commit 44e7f02915
    util: rewrite auto cleanup macros to use glib's equivalent

VIR_AUTOFREE is just an alias for g_autofree. Use the GLib macros
directly instead of our custom aliases.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:43 +02:00
Ján Tomko
2b2c67b401 virbuffer: use g_auto directly for virBuffer
Since commit 44e7f02915
    util: rewrite auto cleanup macros to use glib's equivalent

VIR_AUTOCLEAN is just an alias for g_auto. Use the GLib macros
directly instead of our custom aliases.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:43 +02:00
Ján Tomko
3372c16aa5 util: xml: use g_auto directly for VIR_XPATH_NODE_AUTORESTORE
Since commit 44e7f02915
    util: rewrite auto cleanup macros to use glib's equivalent

VIR_AUTOCLEAN is just an alias for g_auto. Use the GLib macros
directly instead of our custom aliases.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-16 12:06:43 +02:00
Ján Tomko
67e72053c1 Use G_N_ELEMENTS instead of ARRAY_CARDINALITY
Prefer the GLib version of the macro.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 16:14:19 +02:00
Ján Tomko
d99f17a502 examples: Use G_N_ELEMENTS instead of ARRAY_CARDINALITY
We try to keep the example programs independent of libraries
other than libvirt.

Rename the locally defined ARRAY_CARDINALITY macro to G_N_ELEMENTS
which GLib provides, even though we don't actually include GLib.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 16:14:19 +02:00
Ján Tomko
88131931b8 Use G_GNUC_FALLTHROUGH instead of ATTRIBUTE_FALLTHROUGH
Also define the macro for building with GLib older than 2.60

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 16:14:19 +02:00
Ján Tomko
dd3738acc4 Document the ATTRIBUTE_FALLTHROUGH macro
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 16:14:19 +02:00
Ján Tomko
da367c0f9b Use G_GNUC_PRINTF instead of ATTRIBUTE_FMT_PRINTF
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 16:14:18 +02:00
Ján Tomko
d54153fde3 Use G_GNUC_NO_INLINE instead of ATTRIBUTE_NOINLINE
Define the macro for older GLib versions.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 16:14:18 +02:00
Ján Tomko
ec96b74041 syntax-check: prohibit_attribute_macros: generalize error
Instead of enumerating every single macro variant, just emit
a more generic error.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 16:14:18 +02:00
Ján Tomko
81077d6e8a syntax-check: mock-noinline: fix after G_GNUC attribute invocations
We started using G_GNUC macros instead of ATTRIBUTE for some attributes.
Adjust this syntax-check accordingly.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 16:14:18 +02:00
Pavel Mores
b5308a1205 qemu: fix EFI nvram removal on domain undefine
When undefining a UEFI domain its nvram file has to be properly handled as
well.  It's mandatory to use one of --nvram and --keep-nvram options when
'virsh undefine <domain>' is issued for a UEFI domain.  To fix the bug as
reported, virsh should return an error message if neither option is used
and the nvram file should be removed when --nvram is given.

The cause of the problem is that when qemuDomainUndefineFlags() is invoked
on an inactive domain the path to its nvram file is empty.  This commit
aims to fix this by formatting and filling in the path in time for the
nvram removal code to run properly.

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

Signed-off-by: Pavel Mores <pmores@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 13:39:54 +02:00
Ján Tomko
a4f979c06e syntax-check: forbid ATTRIBUTE macros with a GLib replacement
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:26 +02:00
Ján Tomko
bda2cced34 internal: remove no longer used ATTRIBUTE macros
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:26 +02:00
Ján Tomko
9415a072c2 gendispatch: generate G_GNUC_UNUSED instead of ATTRIBUTE_UNUSED
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:26 +02:00
Ján Tomko
6afbb7cf5c syntax-check: check for G_GNUC_UNUSED instead of ATTRIBUTE_UNUSED
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:26 +02:00
Ján Tomko
059cf394ce Use G_GNUC_UNUSED everywhere
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:25 +02:00
Ján Tomko
adfa096bf2 vz: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:25 +02:00
Ján Tomko
b2060e2942 vbox: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:25 +02:00
Ján Tomko
679f8b3994 util: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:25 +02:00
Ján Tomko
123196aa05 tools: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:25 +02:00
Ján Tomko
0d94f02455 tests: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:25 +02:00
Ján Tomko
7c655468e8 test: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:25 +02:00
Ján Tomko
cdf7be47c0 storage: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:24 +02:00
Ján Tomko
bfefd2cb09 security: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:24 +02:00
Ján Tomko
8b5ef0a6b8 rpc: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:24 +02:00
Ján Tomko
6727ca6b2a remote: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:24 +02:00
Ján Tomko
ada7596b92 qemu: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:24 +02:00
Ján Tomko
2f3989ed15 openvz: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:24 +02:00
Ján Tomko
5693bc87a3 nwfilter: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:24 +02:00
Ján Tomko
1bfa9fb3bc node_device: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:23 +02:00
Ján Tomko
adf76a7f11 network: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:23 +02:00
Ján Tomko
aa9a313a72 lxc: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:23 +02:00
Ján Tomko
227d405d1d logging: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:23 +02:00
Ján Tomko
da24875847 locking: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:23 +02:00
Ján Tomko
a10c678ca6 libxl: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:23 +02:00
Ján Tomko
07e802993b esx: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:23 +02:00
Ján Tomko
670d339e87 cpu: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:23 +02:00
Ján Tomko
ca15e6b6c1 conf: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:22 +02:00
Ján Tomko
db7b6172a4 bhyve: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:22 +02:00
Ján Tomko
cf4befa1c3 admin: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:22 +02:00
Ján Tomko
96013d0dcf access: use G_GNUC_UNUSED
Use G_GNUC_UNUSED from GLib instead of ATTRIBUTE_UNUSED.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:22 +02:00
Ján Tomko
c3211e0ba4 examples: use G_GNUC_UNUSED
Name the macro G_GNUC_UNUSED instead of ATTRIBUTE_UNUSED
to match the rest of libvirt code.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:22 +02:00
Ján Tomko
2dec8c4760 Use G_GNUC_WARN_UNUSED_RESULT instead of ATTRIBUTE_RETURN_CHECK
Introduced in GLib 2.10.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:22 +02:00
Ján Tomko
426f396198 use G_GNUC_NULL_TERMINATED instead of ATTRIBUTE_SENTINEL
Prefer G_GNUC_NULL_TERMINATED which was introduced in GLib 2.8.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:22 +02:00
Ján Tomko
5d1c4a35ec use G_GNUC_NORETURN instead of ATTRIBUTE_NORETURN
Remove all usage of ATTRIBUTE_NORETURN in favor of GLib's
G_GNUC_NORETURN.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:22 +02:00
Ján Tomko
f3f583e9e4 apibuild: ignore GLib macros too
Add an exception for the GLib versions of the macros we already ignore.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:21 +02:00
Ján Tomko
14a5993d32 util: remove MIN and MAX macros
They are already defined in glib.h.

(libxml2 also has them defined)

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-15 11:25:21 +02:00
Michal Privoznik
9d03e9adf1 security_stack: Perform rollback if one of stacked drivers fails
In order to have multiple security drivers hidden under one
virSecurity* call, we have virSecurityStack driver which holds a
list of registered security drivers and for every virSecurity*
call it iterates over the list and calls corresponding callback
in real security drivers. For instance, for
virSecurityManagerSetAllLabel() it calls
domainSetSecurityAllLabel callback sequentially in NOP, DAC and
(possibly) SELinux or AppArmor drivers. This works just fine if
the callback from every driver returns success. Problem arises
when one of the drivers fails. For instance, aforementioned
SetAllLabel() succeeds for DAC but fails in SELinux in which
case all files that DAC relabelled are now owned by qemu:qemu (or
whomever runs qemu) and thus permissions are leaked. This is even
more visible with XATTRs which remain set for DAC.

The solution is to perform a rollback on failure, i.e. call
opposite action on drivers that succeeded.

I'm providing rollback only for set calls and intentionally
omitting restore calls for two reasons:

1) restore calls are less likely to fail (they merely remove
XATTRs and chown()/setfilecon() file - all of these operations
succeeded in set call),

2) we are not really interested in restore failures - in a very
few places we check for retval of a restore function we do so
only to print a warning.

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

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-14 17:23:19 +02:00
Michal Privoznik
cd355a526f security_stack: Turn list of nested drivers into a doubly linked list
In near future we will need to walk through the list of internal
drivers in reversed order. The simplest solution is to turn
singly linked list into a doubly linked list.
We will not need to start from the end really, so there's no tail
pointer kept.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-14 17:21:59 +02:00
Michal Privoznik
3f968a8706 security: Introduce virSecurityManagerGetDriver()
This function returns the name of the secdriver. Since the name
is invariant we don't really need to lock the manager - it won't
change.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-14 17:20:30 +02:00
Michal Privoznik
81dbceea65 security: Rename virSecurityManagerGetDriver() to virSecurityManagerGetVirtDriver()
This function is in fact returning the name of the virtualization
driver that registered the security manager/driver.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-14 17:19:12 +02:00
Michal Privoznik
458d0a8c52 security: Pass @migrated to virSecurityManagerSetAllLabel
In upcoming commits, virSecurityManagerSetAllLabel() will perform
rollback in case of failure by calling
virSecurityManagerRestoreAllLabel(). But in order to do that, the
former needs to have @migrated argument so that it can be passed
to the latter.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-14 17:14:13 +02:00
Daniel P. Berrangé
27cb4c1a53 build: remove use of usleep gnulib module in favour of g_usleep
The usleep function was missing on older mingw versions, but we can rely
on it existing everywhere these days. It may only support times upto 1
second in duration though, so we'll prefer to use g_usleep instead.

The commandhelper program is not changed since that can't link to glib.
Fortunately it doesn't need to build on Windows platforms either.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
c4d18e8b3e util: replace strerror/strerror_r with g_strerror
g_strerror is offers the safety/correctness benefits of strerror_r, with
the API design convenience of strerror.

Use of virStrerror should be eliminated through the codebase in favour
of g_strerror.

commandhelper.c is a special case as its a tiny single threaded test
program, not linked to glib, so it just uses traditional strerror().

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
71efb59a4d conf: convert over to use GRegex for regular expressions
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
9c999bf804 libxl: convert over to use GRegex for regular expressions
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
16121a88a7 util: convert virIdentity class to use GObject
Converting from virObject to GObject is reasonably straightforward,
as illustrated by this patch for virIdentity

In the header file

 - Remove

     typedef struct _virIdentity virIdentity

 - Add

     #define VIR_TYPE_IDENTITY virIdentity_get_type ()
     G_DECLARE_FINAL_TYPE (virIdentity, vir_identity, VIR, IDENTITY, GObject);

   Which provides the typedef we just removed, and class
   declaration boilerplate and various other constants/macros.

In the source file

 - Change 'virObject parent' to 'GObject parent' in the struct
 - Remove the virClass variable and its initializing call
 - Add

      G_DEFINE_TYPE(virIdentity, vir_identity, G_TYPE_OBJECT)

   which declares the instance & class constructor functions

 - Add an impl of the instance & class constructors
   wiring up the finalize method to point to our dispose impl

In all files

 - Replace VIR_AUTOUNREF(virIdentityPtr) with g_autoptr(virIdentity)

 - Replace virObjectRef/Unref with g_object_ref/unref. Note
   the latter functions do *NOT* accept a NULL object where as
   libvirt's do. If you replace g_object_unref with g_clear_object
   it is NULL safe, but also clears the pointer.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
b74a95d6a2 remote: convert methods using virIdentityPtr to auto free macros
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
7c9a1dcba8 rpc: convert methods using virIdentityPtr to auto free macros
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
29ef351db6 admin: convert admin server code to use auto free macros
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
f80c8dab85 access: convert polkit driver to auto free memory
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
c6825d8813 util: convert virIdentity implementation and test suite to g_autoptr
To simplify the later conversion from virObject to GObject, introduce
the use of g_autoptr to the virIdentity implementnation and test suite.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
6c748c8e2d util: use glib base64 encoding/decoding APIs
Replace use of the gnulib base64 module with glib's own base64 API family.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
c87cfa1310 conf: convert virSecretObj APIs to use autofree
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
667ff797e8 src: add support for g_autoptr with virObject instances
Libvirt currently uses the VIR_AUTOUNREF macro for auto cleanup of
virObject instances. GLib approaches things differently with GObject,
reusing their g_autoptr() concept.

This introduces support for g_autoptr() with virObject, to facilitate
the conversion to GObject.

Only virObject classes which are currently used with VIR_AUTOREF are
updated. Any others should be converted to GObject before introducing
use of autocleanup.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
44e7f02915 util: rewrite auto cleanup macros to use glib's equivalent
To facilitate porting over to glib, this rewrites the auto cleanup
macros to use glib's equivalent.

As a result it is now possible to use g_autoptr/VIR_AUTOPTR, and
g_auto/VIR_AUTOCLEAN, g_autofree/VIR_AUTOFREE interchangably, regardless
of which macros were used to declare the cleanup types.

Within the scope of any single method, code must remain consistent
using either GLib or Libvirt macros, never mixing both. New code
must preferentially use the GLib macros, and old code will be
converted incrementally.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
74d9326795 util: convert virSystemdActivation to use VIR_DEFINE_AUTOPTR_FUNC
Using the standard macro will facilitate the conversion to glib's
auto cleanup macros.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
bb9a1a14e2 util: use glib string allocation/formatting functions
Convert the string duplication APIs to use the g_strdup family of APIs.

We previously used the 'strdup-posix' gnulib module because mingw does
not set errno to ENOMEM on failure

We previously used the 'strndup' gnulib module because this function
does not exist on mingw.

We previously used the 'vasprintf' gnulib module because of many GNU
supported format specifiers not working on non-Linux platforms. glib's
own equivalent standardizes on GNU format specifiers too.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
e85e34f3af util: use glib memory allocation functions
Convert the VIR_ALLOC family of APIs with use of the g_malloc family of
APIs. Use of VIR_ALLOC related functions should be incrementally phased
out over time, allowing return value checks to be dropped. Use of
VIR_FREE should be replaced with auto-cleanup whenever possible.

We previously used the 'calloc-posix' gnulib module because mingw does
not set errno to ENOMEM on failure.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
cfbe9f1201 build: link to glib library
Add the main glib.h to internal.h so that all common code can use it.

Historically glib allowed applications to register an alternative
memory allocator, so mixing g_malloc/g_free with malloc/free was not
safe.

This was feature was dropped in 2.46.0 with:

      commit 3be6ed60aa58095691bd697344765e715a327fc1
      Author: Alexander Larsson <alexl@redhat.com>
      Date:   Sat Jun 27 18:38:42 2015 +0200

        Deprecate and drop support for memory vtables

Applications are still encourged to match g_malloc/g_free, but it is no
longer a mandatory requirement for correctness, just stylistic. This is
explicitly clarified in

    commit 1f24b36607bf708f037396014b2cdbc08d67b275
    Author: Daniel P. Berrangé <berrange@redhat.com>
    Date:   Thu Sep 5 14:37:54 2019 +0100

        gmem: clarify that g_malloc always uses the system allocator

Applications can still use custom allocators in general, but they must
do this by linking to a library that replaces the core malloc/free
implemenentation entirely, instead of via a glib specific call.

This means that libvirt does not need to be concerned about use of
g_malloc/g_free causing an ABI change in the public libary, and can
avoid memory copying when talking to external libraries.

This patch probes for glib, which provides the foundation layer with
a collection of data structures, helper APIs, and platform portability
logic.

Later patches will introduce linkage to gobject which provides the
object type system, built on glib, and gio which providing objects
for various interesting tasks, most notably including DBus client
and server support and portable sockets APIs, but much more too.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Daniel P. Berrangé
58e7c9bc05 build: probe for glib-2 library in configure
Prepare for linking with glib by probing for it at configure
time. Per supported platforms target, the min glib versions on
relevant distros are:

  RHEL-8: 2.56.1
  RHEL-7: 2.50.3
  Debian (Buster): 2.58.3
  Debian (Stretch): 2.50.3
  OpenBSD (Ports): 2.58.3
  FreeBSD (Ports): 2.56.3
  OpenSUSE Leap 15: 2.54.3
  SLE12-SP2: 2.48.2
  Ubuntu (Xenial): 2.48.0
  macOS (Homebrew): 2.56.0

This suggests that a minimum glib of 2.48 is a reasonable target.
This aligns with the minimum version required by qemu too.

We must disable the bad-function-cast warning as various GLib APIs
and macros will trigger this.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-14 10:54:42 +01:00
Cole Robinson
36138eaecf security: selinux: Label externalDataStore
We mirror the labeling strategy that was used for its top image

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
dbdf150b45 security: selinux: break out SetImageLabelRelative
This will be used for recursing into externalDataStore

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
bbdf85d63a security: selinux: Restore image label for externalDataStore
Rename the existing virSecuritySELinuxRestoreImageLabelInt
to virSecuritySELinuxRestoreImageLabelSingle, and extend the new
ImageLabelInt handle externalDataStore

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
a36d3b88d6 security: selinux: Add is_toplevel to SetImageLabelInternal
This will simplify future patches and make the logic easier to follow

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
65181d419e security: selinux: Drop !parent handling in SetImageLabelInternal
The only caller always passes in a non-null parent

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
6f1cd0a54e security: selinux: Simplify SetImageLabelInternal
All the SetFileCon calls only differ by the label they pass in.
Rework the conditionals to track what label we need, and use a
single SetFileCon call

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
efe3575e60 security: dac: Label externalDataStore
We mirror the labeling strategy that was used for its sibling
image

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
aa736c098e security: dac: break out SetImageLabelRelative
This will be used for recursing into externalDataStore

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
ee5a367d06 security: dac: Restore image label for externalDataStore
Rename the existing virSecurityDACRestoreImageLabelInt
to virSecurityDACRestoreImageLabelSingle, and extend the new
ImageLabelInt handle externalDataStore

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
c1f0b31267 security: dac: Add is_toplevel to SetImageLabelInternal
This will simplify future patches and make the logic easier to follow

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
a7262a664d security: dac: Drop !parent handling in SetImageLabelInternal
The only caller always passes in a non-null parent

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
527f377a92 storagefile: Fill in meta->externalDataStore
Add virStorageSourceNewFromExternalData, similar to
virStorageSourceNewFromBacking and use it to fill in a
virStorageSource for externalDataStore

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
884cc9d615 storagefile: Add externalDataStore member
Add the plumbing to track a externalDataStoreRaw as a virStorageSource

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
8863c03d7d storagefile: Split out virStorageSourceNewFromChild
Future patches will use this for external data file handling

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
f57336358c storagefile: Don't access backingStoreRaw directly in FromBackingRelative
For the only usage, the rel == parent->backingStoreRaw, so drop
the direct access

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
556f7c68a0 storagefile: Fill in meta->externalDataStoreRaw
Call qcow2GetExtensions to actually fill in the virStorageSource
externalDataStoreRaw member

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
b50adb40b2 storagefile: Add externalDataStoreRaw member
Add the plumbing to track a qcow2 external data file path in
virStorageSource

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:59 -04:00
Cole Robinson
9f0d364755 storagefile: Fix backing format \0 check
From qemu.git docs/interop/qcow2.txt

  == String header extensions ==

  Some header extensions (such as the backing file format name and
  the external data file name) are just a single string. In this case,
  the header extension length is the string length and the string is
  not '\0' terminated. (The header extension padding can make it look
  like a string is '\0' terminated, but neither is padding always
  necessary nor is there a guarantee that zero bytes are used
  for padding.)

So we shouldn't be checking for a \0 byte at the end of the backing
format section. I think in practice there always is a \0 but we
shouldn't depend on that.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 14:25:53 -04:00
Cole Robinson
c87784be89 storagefile: Rename qcow2GetExtensions 'format' argument
To backingFormat, which makes it more clear. Move it to the end of
the argument list which will scale nicer with future patches

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:22 -04:00
Cole Robinson
125dbad3af storagefile: Rename qcow2GetBackingStoreFormat
...to qcow2GetExtensions. We will extend it for more extension
parsing in future patches

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:22 -04:00
Cole Robinson
16fffd8257 storagefile: Push extension_end calc to qcow2GetBackingStoreFormat
This is a step towards making this qcow2GetBackingStoreFormat into
a generic qcow2 extensions parser

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:22 -04:00
Cole Robinson
bd6b4646c7 storagefile: Push 'start' into qcow2GetBackingStoreFormat
This is a step towards making this qcow2GetBackingStoreFormat into
a generic qcow2 extensions parser

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:22 -04:00
Cole Robinson
242e7ac590 storagefile: Use qcowXGetBackingStore directly
The qcow1 and qcow2 variants are identical, so remove the wrappers

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:22 -04:00
Cole Robinson
6017e7b3b8 storagefile: Drop now unused isQCow2 argument
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:21 -04:00
Cole Robinson
253f2cae4a storagefile: Check version to determine if qcow2 or not
Rather than require a boolean to be passed in

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:21 -04:00
Cole Robinson
8699899692 storagefile: qcow1: Let qcowXGetBackingStore fill in format
Letting qcowXGetBackingStore fill in format gives the same behavior
we were opencoding in qcow1GetBackingStore

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:21 -04:00
Cole Robinson
b00616870b storagefile: qcow1: Fix check for empty backing file
From f772b3d91f the intention of this code seems to be to set
format=NONE when the image does not have a backing file. However
'buf' here is the whole qcow1 file header. What we want to be
checking is 'res' which is the parsed backing file path.
qcowXGetBackingStore sets this to NULL when there's no backing file.

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:21 -04:00
Cole Robinson
9f508ec7ca storagefile: qcow1: Check for BACKING_STORE_OK
Check explicitly for BACKING_STORE_OK and not its 0 value

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:21 -04:00
Cole Robinson
285adba549 storagefile: Make GetMetadataInternal static
It is only used in virstoragefile.c

Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 13:41:21 -04:00
Daniel Henrique Barboza
65ec10e83f tests: add a test for driver.c:virConnectValidateURIPath()
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-11 12:20:08 -04:00
Michal Privoznik
4e95cdcbb3 security: Don't remember labels for TPM
https://bugzilla.redhat.com/show_bug.cgi?id=1755803

The /dev/tpmN file can be opened only once, as implemented in
drivers/char/tpm/tpm-dev.c:tpm_open() from the kernel's tree. Any
other attempt to open the file fails. And since we're opening the
file ourselves and passing the FD to qemu we will not succeed
opening the file again when locking it for seclabel remembering.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 17:05:55 +02:00
Michal Privoznik
2b44cf8c32 security_dac: Allow selective remember/recall for chardevs
While in most cases we want to remember/recall label for a
chardev, there are some special ones (like /dev/tpm0) where we
don't want to remember the seclabel nor recall it. See next
commit for rationale behind.

While the easiest way to implement this would be to just add new
argument to virSecurityDACSetChardevLabel() this one is also a
callback for virSecurityManagerSetChardevLabel() and thus has
more or less stable set of arguments. Therefore, the current
virSecurityDACSetChardevLabel() is renamed to
virSecurityDACSetChardevLabelHelper() and the original function
is set to call the new one.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 17:05:41 +02:00
Michal Privoznik
1a84a1ced1 security: Try to lock only paths with remember == true
So far all items on the chown/setfilecon list have the same
.remember value.  But this will change shortly. Therefore, don't
try to lock paths which we won't manipulate XATTRs for.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 17:01:08 +02:00
Cole Robinson
4dfc4d525e security: apparmor: Allow RO /usr/share/edk2/
On Fedora, already whitelisted paths to AAVMF and OVMF binaries
are symlinks to binaries under /usr/share/edk2/. Add that directory
to the RO whitelist so virt-aa-helper-test passes

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-11 10:52:54 -04:00
Andrea Bolognani
4d95f557d6 tests: Add capabilities for QEMU 4.2.0 on aarch64
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-11 09:37:33 +02:00
Andrea Bolognani
c5330fcefa tests: Add capabilities for QEMU 4.2.0 on ppc64
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-11 09:37:25 +02:00
Marek Marczykowski-Górecki
668dc9fe8c libxl: add slic_table <-> acpi_firmware conversion
This isn't exactly equivalent setting (acpi_firmware may point to
non-SLIC ACPI table), but it's the most behavior preserving option.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
2019-10-10 21:02:09 -06:00
Marek Marczykowski-Górecki
f2899e44d9 tests: libxl: ACPI slic table test
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
2019-10-10 21:02:03 -06:00
Ivan Kardykov
03e98a52d2 libxl: add acpi slic table support
Libxl driver did not support setup additional acpi firmware to xen
guest. It is necessary to activate OEM Windows installs. This patch
allow to define in OS section acpi table param (which supported domain
common schema).

Signed-off-by: Ivan Kardykov <kardykov@tabit.pro>
[added info to docs/formatdomain.html.in]
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
2019-10-10 21:01:54 -06:00
Daniel Henrique Barboza
37b565c000 src/driver.c: remove duplicated code in virGetConnect* functions
All the 6 virGetConnect* functions in driver.c shares the
same code base. This patch creates a new static function
virGetConnectGeneric() that contains the common code to
be used with all other virGetConnect*.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-10 13:51:18 -04:00
Daniel P. Berrangé
fd3b8fe7ad tests: delete objectlocking test code
The object locking test code is not run by any CI tests and has
bitrotted to the point where it isn't worth the effort to try to
fix it.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-10 12:49:52 +01:00
Michal Privoznik
b626e652a6 qemu_process: Initialize domain definition for QMP query
When constructing QMP capabilities we allocate a dummy domain
object to pass to qemuMonitorOpen(). However, after 75dd595861
the function also expects domain definition to be allocated for
the domain object. The referenced commit already fixed
qemumonitortestutils.c but forgot to fix the other caller:
qemuProcessQMPConnectMonitor().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-10 09:50:08 +02:00
Daniel Henrique Barboza
8958b47fab news: Update for the ccf-assist pSeries feature
Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-09 17:51:47 -04:00
Daniel Henrique Barboza
cab3ea2303 qemu: Implement the ccf-assist pSeries feature
This patch adds the implementation of the ccf-assist pSeries
feature, based on the QEMU_CAPS_MACHINE_PSERIES_CAP_CCF_ASSIST
capability that was added in the previous patch.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-09 17:51:47 -04:00
Daniel Henrique Barboza
86a8e5a84c qemu: Add capability for the ccf-assist pSeries feature
Linux kernel 5.1 added a new PPC KVM capability named
KVM_PPC_CPU_CHAR_BCCTR_FLUSH_ASSIST, which is exposed to the QEMU guest
since QEMU commit 8ff43ee404d under a new sPAPR capability called
SPAPR_CAP_CCF_ASSIST. This cap indicates whether the processor supports
hardware acceleration for the count cache flush workaround, which
is a software workaround that flushes the count cache on context
switch. If the processor has this hardware acceleration, the software
flush can be shortened, resulting in performance gain.

This hardware acceleration is defaulted to 'off' in QEMU. The reason
is that earlier versions of the Power 9 processor didn't support
it (it is available on Power 9 DD2.3 and newer), and defaulting this
option to 'on' would break migration compatibility between the Power 9
processor class.

However, the user running a P9 DD2.3+ hypervisor might want to create
guests with ccf-assist=on, accepting the downside of only being able
to migrate them only between other P9 DD2.3+ hosts running upstream
kernel 5.1+, to get a performance boost.

This patch adds this new capability to Libvirt, with the name of
QEMU_CAPS_MACHINE_PSERIES_CAP_CCF_ASSIST.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-09 17:45:09 -04:00
Jonathon Jongsma
fd03d0e692 qemu: add a new video device model 'ramfb'
This device is a very simple framebuffer device supported by qemu that
is mostly intended to use as a boot framebuffer in conjunction with a
vgpu. However, there is also a standalone ramfb device that can be used
as a primary display device and is useful for e.g. aarch64 guests where
different memory mappings between the host and guest can prevent use of
other devices with framebuffers such as virtio-vga.

https://bugzilla.redhat.com/show_bug.cgi?id=1679680 describes the
issues in more detail.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-10-09 14:52:49 -04:00
Jonathon Jongsma
9bfcf0f62d qemu: add ramfb capability
Add a qemu capbility to see if the standalone ramfb device is available.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-10-09 14:46:30 -04:00
Jonathon Jongsma
f2fd684849 qemu: validate bochs-display capability
When the bochs display type was added, the capability was never checked.
Add that check in the same place as the other video device capability
checks.

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
2019-10-09 14:45:42 -04:00
Cole Robinson
3a15c47253 security: apparmor: Make storage_source_add_files recursively callable
This will simplify adding support for qcow2 external data_file

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-09 14:17:16 -04:00
Cole Robinson
b2b003db74 security: apparmor: Use only virStorageSource for disk paths
This is closer to what security_selinux.c does, and will help add
support for qcow2 external data_files

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-09 14:17:16 -04:00
Cole Robinson
c7eea3f559 security: apparmor: Push virStorageSource checks to add_file_path
This mirrors the code layout in security_selinux.c. It will also make
it easier to share the checks for qcow2 external data_file support
eventually

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-09 14:17:16 -04:00
Cole Robinson
7c0bf48bc9 security: apparmor: Pass virStorageSource to add_file_path
The virStorageSource must have everything it needs

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-09 14:17:16 -04:00
Cole Robinson
488fce1220 security: apparmor: Drop disk_foreach_iterator
There's only one caller, so open code the file_add_path behavior

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-09 14:17:16 -04:00
Cole Robinson
780f8c94ca security: apparmor: Remove unused ignoreOpenFailure
true is always passed here, so delete the unused code path and
adjust the associated comment

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-09 14:17:14 -04:00
Cole Robinson
cb757f9d32 conf: Move -virDomainDiskDefForeachPath to virt-aa-helper
It is the only user. Rename it to match the local style

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
2019-10-09 14:16:53 -04:00
Daniel P. Berrangé
22d8e27ccd build: merge all syntax-check logic into one file
The gnulib syntax-check rules are spread across GNUmakefile, cfg.mk and
maint.mk. This made sense when we were getting two of the files from the
gnulib submodule. Now that we own all files though, we can at least
merge maint.mk and cfg.mk together. GNUmakefile can be eliminated when
we switch to meson.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-09 13:36:54 +01:00
Daniel P. Berrangé
1b4217b995 build: delete all syntax check rules we're skipping
If we've marked rules as skipped, there's no sense keeping them in the
maint.mk file.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-09 13:36:48 +01:00
Daniel P. Berrangé
2931761f27 build: remove all logic unrelated to syntax-check
The standard maint.mk from gnulib provides alot more than just the
'syntax-check' target. This can all be purged to give a more minimal
file.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-09 13:36:46 +01:00
Daniel P. Berrangé
de744894bb build: move syntax-check code into build-aux directory
The syntax-check rules are the one bit of make usage that will
stay around for a while after the meson conversion. Move them
into the build-aux directory in preparation for refactoring
to make them independent from automake.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-09 13:36:43 +01:00
Daniel P. Berrangé
56bd0665c7 build: import gnulib's syntax-check make rules
We're going to be eliminating autotools and gnulib, but we still wish to
have the 'make syntax-check' functionality.

This imports the minimal set of gnulib files required to keep this
working.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-09 13:36:29 +01:00
Michal Privoznik
8e4aa7c560 Revert "qemu: Obtain reference on monConfig"
This reverts commit a5a777a8ba.

After previous commit the domain won't disappear while connecting
to monitor. There's no need to ref monitor config then.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-09 10:38:05 +02:00
Michal Privoznik
75dd595861 qemu: Fix @vm locking issue when connecting to the monitor
When connecting to qemu's monitor the @vm object is unlocked.
This is justified - connecting may take a long time and we don't
want to wait with the domain object locked. However, just before
the domain object is locked again, the monitor's FD is registered
in the event loop. Therefore, there is a small window where the
event loop has a chance to call a handler for an event that
occurred on the monitor FD but vm is not initalized properly just
yet (i.e. priv->mon is not set). For instance, if there's an
incoming migration, qemu creates its socket but then fails to
initialize (for various reasons, I'm reproducing this by using
hugepages but leaving the HP pool empty) then the following may
happen:

1) qemuConnectMonitor() unlocks @vm

2) qemuMonitorOpen() connects to the monitor socket and by
   calling qemuMonitorOpenInternal() which subsequently calls
   qemuMonitorRegister() the event handler is installed

3) qemu fails to initialize and exit()-s, which closes the
   monitor

4) The even loop sees EOF on the monitor and the control gets to
   qemuProcessEventHandler() which locks @vm and calls
   processMonitorEOFEvent() which then calls
   qemuMonitorLastError(priv->mon). But priv->mon is not set just
   yet.

5) qemuMonitorLastError() dereferences NULL pointer

The solution is to unlock the domain object for a shorter time
and most importantly, register event handler with domain object
locked so that any possible event processing is done only after
@vm's private data was properly initialized.

This issue is also mentioned in v4.2.0-99-ga5a777a8ba.

Since we are unlocking @vm and locking it back, another thread
might have destroyed the domain meanwhile. Therefore we have to
check if domain is still active, and we have to do it at the
same place where domain lock is acquired back, i.e. in
qemuMonitorOpen(). This creates a small problem for our test
suite which calls qemuMonitorOpen() directly and passes @vm which
has no definition. This makes virDomainObjIsActive() call crash.
Fortunately, allocating empty domain definition is sufficient.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
2019-10-09 10:32:13 +02:00
Jiri Denemark
db873ab3bc qemu: Adapt to changed ppc64 CPU model names
QEMU 2.11 for ppc64 changed all CPU model names to lower case. Since
libvirt can't change the model names for compatibility reasons, we need
to translate the matching lower case models to the names known by
libvirt.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-09 09:53:41 +02:00
Jiri Denemark
b979ec355d Revert "domcaps: Treat host models as case-insensitive strings"
This reverts commit 2d8721e260.

This fix was both incomplete and too general. It only fixed domain
startup, but libvirt would still report empty list of supported CPU
models with recent QEMU for ppc64. On the other hand, while ppc64 QEMU
ignores case when looking up CPU model names, x86_64 QEMU does case
sensitive lookup. Without reverting this patch, libvirt could happily
accept CPU model names which are not supported by QEMU.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2019-10-09 09:53:41 +02:00
Daniel P. Berrangé
412cc0f403 build: stop clang complaining about redefined typedefs
Clang's gnu99 mode is not quite the same as GCC's. It will complain
about redefined typedefs being a C11 feature, while GCC does not
complain and allows them in gnu99 mode.

Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-08 17:00:35 +01:00
Michal Privoznik
897d8b34c8 Revert "src: Document autostart for session demon"
This reverts commit 61b4e8aaf1.

After previous commits this is no longer needed.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-08 16:42:19 +02:00
Michal Privoznik
19b1b14f17 news: Document autostart fix
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-08 16:42:19 +02:00
Michal Privoznik
bab464f8ea lib: autostart objects exactly once
https://bugzilla.redhat.com/show_bug.cgi?id=1755303

With the recent work in daemon split and socket activation
daemons can come and go. They can and will be started many times
during a session which results in objects being autostarted
multiple times. This is not optimal. Use
virDriverShouldAutostart() to determine if autostart should be
done or not.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-08 16:42:19 +02:00
Michal Privoznik
ee16a195d9 driver: Introduce virDriverShouldAutostart()
Some of objects we manage can be autostarted on libvirtd startup
(e.g. domains, network, storage pools). The idea was that when
the host is started up these objects are started too without need
of user intervention. However, with the latest daemon split and
switch to socket activated, short lived daemons (we put --timeout
120 onto each daemon's command line) this doesn't do what we want
it to. The problem is not new though, we already had the session
daemon come and go and we circumvented this problem by
documenting it (see v4.10.0-92-g61b4e8aaf1). But now that we meet
the same problem at all fronts it's time to deal with it.

The solution implemented in this commit is to have a file (one
per each driver) that:

  1) if doesn't exist, is created and autostart is allowed for
     given driver,

  2) if it does exist, then autostart is suppressed for given
     driver.

All the files live in a location that doesn't survive host
reboots (/var/run/ for instance) and thus the file is
automatically not there on fresh host boot.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-08 16:42:19 +02:00
Michal Privoznik
e0b90162c9 qemu_driver: Fix comment of qemuStateCleanup()
The comment says that the function kills domains and networks.
This is obviously not the case.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-08 16:42:19 +02:00
Daniel P. Berrangé
4d2b96655f m4: fix setting of warning flags
When adding the -std=gnu99 flag, we set $wantwarn instead
of appending to it. This meant all the compiler warnings
were accidentally discarded.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-08 13:41:19 +01:00
Daniel P. Berrangé
23605f58bf build: ask for -std=gnu99 explicitly
We previously got -std=gnu99 secretly enabled as a side-effect
of requesting the 'stdarg' gnulib module. We rely on some
extensions from c99/gnu99 and while RHEL-7 supports this, it
still defaults to gnu89.  RHEL-7 also supports some newer
standards but declares them experimental/incomplete, so sticking
with gnu99 is best bet for now & matches historical usage.

Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 15:50:57 +01:00
Daniel P. Berrangé
8ab67fb64f build: force -Werror for distcheck target
The 'make distcheck' target validates that a tarball builds and
is ready for release. We expect that libvirt builds cleanly on
all supported platforms, so we should be enabling -Werror when
running distcheck.

This ensures that our CI systems in turn also use -Werror.

Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 15:50:57 +01:00
Daniel P. Berrangé
058269e41a build: remove the sched gnulib module
The 'sched' module provides a sched.h header file for platforms which
lack it. We already check for the functions we need in configure, and
protect the use of sched.h where relevant, so don't need the compat
header in libvirt.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 13:39:50 +01:00
Daniel P. Berrangé
735a05dddf build: drop the isatty gnulib module
The isatty gnulib module adds a fix for Win32 platforms where it doesn't
work correctly with character devices like NUL. This is not a compelling
enough problem for libvirt to be concerned with.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 13:39:46 +01:00
Daniel P. Berrangé
09fe607b4d build: drop the ldexp gnulib module
The ldexp gnulib module adds "-lm" to the $LIBS variable if-and-only-if
the ldexp() function require linking to libm. There is no harm in
linking to libm even if it isn't required for ldexp(), so simply drop
the gnulib module.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 13:39:43 +01:00
Daniel P. Berrangé
a605dde1f5 build: drop the ignore-value gnulib module
We don't need to care about very old GCC versions, so implementing the
ignore_value macro directly is not a significant burden.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 13:39:40 +01:00
Daniel P. Berrangé
d5d6dbcfb5 build: remove all gnulib bit manipulation modules
We're using gnulib to get ffs, ffsl, rotl32, count_one_bits,
and count_leading_zeros. Except for rotl32 they can all be
replaced with gcc/clangs builtins. rotl32 is a one-line
trivial function.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 13:39:26 +01:00
Pavel Mores
5be0d28b3e fixed handling of sourceless disks in 'domblkinfo' cmd
virDomainGetBlockInfo() returns error if called on a disk with no
source (a sourceless disk might be a removable media drive with no
media in it, for instance an empty CDROM or floppy drive).

So far this caused the virsh domblkinfo --all command to abort and
ignore any remaining (not yet displayed) disk devices.  This patch
fixes the problem by first checking for existence of a <source>
element in the corresponding XML.  If none is found, we avoid calling
virDomainGetBlockInfo() altogether as we know it's bound to fail in
that case.

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

Signed-off-by: Pavel Mores <pmores@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
2019-10-07 14:13:06 +02:00
Peter Krempa
2de75faa28 tests: qemuxml2argv: Make use of versioned cpu-tsc-frequency and cpu-host-model-cmt tests
Commit fb973cfbb4 added versioned test outputs for the above mentioned
tests but didn't actually enable them. Fix that mistake and fix the
output of the tsc-frequency test.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-07 13:46:38 +02:00
Peter Krempa
b86946c269 tests: qemuxml2argv: Remove unused output of 'mlock-on' legacy test
The test data was modernized to use actual caps but commit 4dadcaa98e
forgot to delete this test data.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-07 13:46:38 +02:00
Peter Krempa
df24cba98f tests: qemuxml2argv: Remove unused data for s390 keywrap
The last use was removed in 7b604379ba when we deleted the old
commandline parser.

The argv generator tests are provided by:
machine-aeskeywrap-on-caps
machine-aeskeywrap-on-cap
machine-aeskeywrap-off-caps
machine-aeskeywrap-off-cap
machine-deakeywrap-on-caps
machine-deakeywrap-on-cap
machine-deakeywrap-off-caps
machine-deakeywrap-off-cap

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-07 13:46:38 +02:00
Peter Krempa
1c58616b02 tests: qemuxml2argv: Remove unused data for 'pseries-disk'
The last use was removed in 7b604379ba when we deleted the old
commandline parser. The same functionality is tested by many tests for
pseries guests.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-07 13:46:38 +02:00
Peter Krempa
c42a779df8 tests: qemuxml2argv: Remove unused data for 'serial-pty'
The last use was removed in 7b604379ba when we deleted the old
commandline parser. The same functionality is tested by
'serial-pty-chardev'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-07 13:46:37 +02:00
Daniel P. Berrangé
5c3575206e build: drop the pthread gnulib module
This was fixing a problem with old versions of mingw which had a
pthread.h that polluted the namespace with random symbols. This is no
longer relevant on our mingw platform targets.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
dcc0e54b25 build: drop the perror gnulib module
This fixes a problem on mingw where it doesn't know how to report
certain errnos defined by POSIX, but not used on Windows. These are
not a real problem for libvirt.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
019fc5c85b build: drop the gitlog-to-changelog gnulib module
The use of this script was discontinued when we stopped providing a full
ChangeLog in the dist with:

  commit ce97c33a79
  Author: Andrea Bolognani <abologna@redhat.com>
  Date:   Mon Apr 1 17:33:03 2019 +0200

    maint: Stop generating ChangeLog from git

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
93e22664bd build: drop the stdarg gnulib module
gnulib fixes a portability problem on AIX which is a platform we have
never targetted.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
80830cb34d Revert "build: use autobuild module to make build logs nicer"
This reverts commit 83aca30f1e.

While the motivation of the original commit is fine, we are intending to
drop autoconf in favour of meson, and similarly wish to drop use of
gnulib. Removing this feature is part of that conversion work.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
cc7cc5b092 util: drop the stpcpy gnulib module
stpcpy returns a pointer to the end of the string just copied
which in theory makes it easier to then copy another string
after it. We only use stpcpy in one place though and that
is trivially rewritten to avoid stpcpy with no loss in code
clarity or efficiency.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
a45fa8000a build: drop the mktempd gnulib module
The mktempd module in gnulib provides an equivalent to 'mktemp -d' on
platforms which lack this shell command. All platforms on which libvirt
runs the affected tests have 'mktemp -d' support, so the gnulib module
is not required.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
a88cfcf64f build: drop the inet_pton gnulib module
All use of this function was purged a long time ago in favour
of getaddrinfo

  commit a8ae7d19f4
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Thu Oct 21 11:13:05 2010 +0100

    Remove all use of inet_pton and inet_ntop

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
de3c1d2f53 build: drop the getopt-posix gnulib module
The getopt-posix module fixes a problem with optind being incorrectly
set after a failed option parse. It was also previously used to allow
the bhyve driver to access a private internal reentrant getopt impl.
None of this matters to libvirt code any more.

This partially reverts

  commit b436a8ae5c
  Author: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
  Date:   Thu Jun 9 00:50:35 2016 +0000

    gnulib: add getopt module

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Daniel P. Berrangé
6894ba88b8 bhyve: stop using private gnulib _getopt_internal_r func
The _getopt_internal_r func is not intended for public use, it is an
internal function shared between the gnulib getopt and argp modules.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-10-07 11:34:24 +01:00
Fabiano Fidêncio
371cff5789 qemu: capabilities: Fill in bochs-display info
086c19d69 added bochs-display capability but didn't fill in the info for
domain capabilities.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2019-10-07 11:40:48 +02:00
Collin Walling
47a1edaa46 qemu_driver: hook up query-cpu-model-comparison
This command is hooked into the virsh hypervisor-cpu-compare command.
As such, the CPU model XML provided to the command will be compared
to the hypervisor CPU contained in the QEMU capabilities file for the
appropriate QEMU binary (for s390x, this CPU definition can be observed
via virsh domcapabilities).

QMP will report that the XML CPU is either identical to, a subset of,
or incompatible with the hypervisor CPU. s390 can also report that
the XML CPU is a "superset" of the hypervisor CPU. This response is
presented as incompatible, as this CPU model would not be able to run
on the hypervisor.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielh413@gmail.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Message-Id: <1568924706-2311-15-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:10:17 +02:00
Collin Walling
d11c4ddbfb cpu_conf: xml to cpu definition parse helper
Implement an XML to virCPUDefPtr helper that handles the ctxt
prerequisite for virCPUDefParseXML.

This does not alter any functionality.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielh413@gmail.com>
Message-Id: <1568924706-2311-14-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:10:17 +02:00
Collin Walling
adb689bc2a qemu_capabilities: introduce QEMU_CAPS_QUERY_CPU_MODEL_COMPARISON
This capability enables comparison of CPU models via QMP.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielh413@gmail.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Message-Id: <1568924706-2311-13-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:10:17 +02:00
Collin Walling
8b28fd74a0 qemu_monitor: implement query-cpu-model-comparison
Interfaces with QEMU to compare CPU models. The command takes two CPU
models, A and B, that are given a model name and an optional list of
CPU features. Through the query-cpu-model-comparison command issued
via QMP, a result is produced that contains the comparison evaluation
string (identical, superset, subset, incompatible).

The list of properties (aka CPU features) that is returned from the QMP
response is ignored.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielh413@gmail.com>
Message-Id: <1568924706-2311-12-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:10:17 +02:00
Collin Walling
aa797c6625 qemu_driver: expand cpu features after baseline
Perform a full CPU model expansion on the result of the baselined
model name when the features flag is present.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Message-Id: <1568924706-2311-11-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:10:17 +02:00
Collin Walling
09d23faac1 qemu_driver: hook up query-cpu-model-baseline
This command is hooked into the virsh hypervisor-cpu-baseline command.
The CPU models provided in the XML sent to the command will be baselined
via the query-cpu-model-baseline QMP command. The resulting CPU model
will be reported.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielh413@gmail.com>
Message-Id: <1568924706-2311-10-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:10:11 +02:00
Collin Walling
db8bd39f6b qemu_capabilities: introduce QEMU_CAPS_QUERY_CPU_MODEL_BASELINE
This capability enables baselining of CPU models via QMP.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielh413@gmail.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Message-Id: <1568924706-2311-9-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:09:49 +02:00
Collin Walling
b0b582263d qemu_monitor: implement query-cpu-model-baseline
Interfaces with QEMU to baseline CPU models. The command takes two
CPU models, A and B, that are given a model name and an optional list
of CPU features. Through the query-cpu-model-baseline command issued
via QMP, a result is produced that contains a new baselined CPU model
that is guaranteed to run on both A and B.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielh413@gmail.com>
Message-Id: <1568924706-2311-8-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:09:49 +02:00
Collin Walling
a9e723c885 qemu_monitor: make qemuMonitorJSONParseCPUModelData command-agnostic
Modify the error messages in qemuMonitorJSONParseCPUModelData to print
the command name provided to the function.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Message-Id: <1568924706-2311-7-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:09:49 +02:00
Collin Walling
afd222684e qemu_monitor: allow cpu props to be optional
Some older s390 CPU models (e.g. z900) will not report props as a
response from query-cpu-model-expansion. As such, we should make the
props field optional when parsing the return data from the QMP response.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Message-Id: <1568924706-2311-6-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:09:49 +02:00
Collin Walling
708f48525a qemu_monitor: add features to CPU model for QMP command
query-cpu-model-baseline/comparison will accept a list of features
as part of the command. Since CPUs may be defined with CPU feature
policies, let's parse it to the appropriate boolean that the QMP
command expects.

A feature that is set to required, force, or if it is a hypervisor
CPU feature (-1), then set the property value to true. Otherwise
(optional, disabled) set the value to false.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Message-Id: <1568924706-2311-5-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:09:49 +02:00
Collin Walling
67a4dcc151 qemu_monitor: use cpu def instead of char for expansion
When expanding a CPU model via query-cpu-model-expansion, any features
that were a part of the original model are discarded. For exmaple,
when expanding modelA with features f1, f2, a full expansion may reveal
feature f3, but the expanded model will not include f1 or f2.

Let's pass a virCPUDefPtr to the expansion function in preparation for
taking features into consideration.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Message-Id: <1568924706-2311-4-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:09:49 +02:00
Collin Walling
0a0be9b34d qemu_monitor: expansion cleanups
With refactoring most of the expansion function, let's take care of
some additional cleanups.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Message-Id: <1568924706-2311-3-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:09:49 +02:00
Collin Walling
3bfa3f11e6 qemu_monitor: refactor cpu model expansion
Refactor some code in qemuMonitorJSONGetCPUModelExpansion to be later
used for the comparison and baseline functions.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Message-Id: <1568924706-2311-2-git-send-email-walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
2019-10-07 10:09:49 +02:00
Peter Krempa
ba17721db1 maint: Post-release version bump to 5.9.0
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
2019-10-07 08:00:47 +02:00
Daniel Veillard
d20983ff63 Release of libvirt-5.8.0
* docs/news.xml: updated for the release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
2019-10-05 09:45:29 +02:00
1255 changed files with 133375 additions and 44779 deletions

286
.gitignore vendored
View File

@@ -1,270 +1,44 @@
# vim related ignores
*.swp
.lvimrc
# emacs related ignores
*#*#
*.#*#
*.[187]
*.[187].in
*.a
*.cov
*.exe
*.exe.manifest
*.gcda
*.gcno
*.gcov
*.html
*.i
*.la
*.lo
*.loT
*.o
*.orig
*.pem
*.pyc
*.rej
*.s
*.service
*.socket
*.swp
*~
.#*
.color_coded
.deps
.dirstamp
.gdb_history
.git
.git-module-status
.libs
.lvimrc
.memdump
.sc-start-sc_*
.ycm_extra_conf.py
# autotools related ignores
!/m4/virt-*.m4
*.cov
/AUTHORS
/GNUmakefile
/INSTALL
/NEWS
/aclocal.m4
/autom4te.cache
/build-aux/*
/build/
/ci/scratch/
/confdefs.h
/config.cache
/config.guess
/config.h
/build-aux/.gitignore
/build-aux/compile
/build-aux/depcomp
/build-aux/missing
/build-aux/test-driver
/config.h.in
/config.log
/config.rpath
/config.status
/config.sub
/configure
/configure.lineno
/conftest.*
/docs/aclperms.htmlinc
/docs/apibuild.py.stamp
/docs/devhelp/libvirt.devhelp
/docs/hvsupport.html.in
/docs/libvirt-admin-*.xml
/docs/libvirt-api.xml
/docs/libvirt-lxc-*.xml
/docs/libvirt-qemu-*.xml
/docs/libvirt-refs.xml
/docs/news.html.in
/docs/todo.html.in
/examples/c/admin/client_close
/examples/c/admin/client_info
/examples/c/admin/client_limits
/examples/c/admin/list_clients
/examples/c/admin/list_servers
/examples/c/admin/logging
/examples/c/admin/threadpool_params
/examples/c/domain/dommigrate
/examples/c/domain/domtop
/examples/c/domain/info1
/examples/c/domain/rename
/examples/c/domain/suspend
/examples/c/misc/event-test
/examples/c/misc/hellolibvirt
/examples/c/misc/openauth
/m4/*
Makefile.in
# gnulib related ignores
!/gnulib/lib/Makefile.am
!/gnulib/tests/Makefile.am
*.rej
*~
/gnulib/lib/*
/gnulib/m4/*
/gnulib/tests/*
/include/libvirt/libvirt-common.h
/libtool
/libvirt-*.tar.xz
/libvirt-[0-9]*
/libvirt*.pc
/libvirt.spec
/ltconfig
/ltmain.sh
/m4/*
/maint.mk
/mingw-libvirt.spec
/mkinstalldirs
/po/*gmo
/po/*po
!/po/*.mini.po
/po/*pot
/proxy/
/python/
/run
/sc_*
/src/.*.stamp
/src/*.pc
/src/access/org.libvirt.api.policy
/src/access/viraccessapicheck.c
/src/access/viraccessapicheck.h
/src/access/viraccessapichecklxc.c
/src/access/viraccessapichecklxc.h
/src/access/viraccessapicheckqemu.c
/src/access/viraccessapicheckqemu.h
/src/admin/admin_client.h
/src/admin/admin_protocol.[ch]
/src/admin/admin_server_dispatch_stubs.h
/src/bhyve/test_virtbhyved.aug
/src/bhyve/virtbhyved.aug
/src/bhyve/virtbhyved.conf
/src/esx/*.generated.*
/src/hyperv/*.generated.*
/src/interface/test_virtinterfaced.aug
/src/interface/virtinterfaced.aug
/src/interface/virtinterfaced.conf
/src/libvirt*.def
/src/libvirt.syms
/src/libvirt_access.syms
/src/libvirt_access.xml
/src/libvirt_access_lxc.syms
/src/libvirt_access_lxc.xml
/src/libvirt_access_qemu.syms
/src/libvirt_access_qemu.xml
/src/libvirt_admin.syms
/src/libvirt_*.stp
/src/libvirt_*helper
/src/libvirt_*probes.h
/src/libvirt_lxc
/src/libvirtd
/src/libvirtd*.logrotate
/src/libxl/test_libvirtd_libxl.aug
/src/libxl/test_virtxend.aug
/src/libxl/virtxend.aug
/src/libxl/virtxend.conf
/src/locking/libxl-lockd.conf
/src/locking/libxl-sanlock.conf
/src/locking/lock_daemon_dispatch_stubs.h
/src/locking/lock_protocol.[ch]
/src/locking/qemu-lockd.conf
/src/locking/qemu-sanlock.conf
/src/locking/test_libvirt_sanlock.aug
/src/locking/test_libvirt_lockd.aug
/src/locking/test_virtlockd.aug
/src/logging/log_daemon_dispatch_stubs.h
/src/logging/log_protocol.[ch]
/src/logging/test_virtlogd.aug
/src/lxc/lxc_controller_dispatch.h
/src/lxc/lxc_monitor_dispatch.h
/src/lxc/lxc_monitor_protocol.c
/src/lxc/lxc_monitor_protocol.h
/src/lxc/lxc_protocol.[ch]
/src/lxc/test_libvirtd_lxc.aug
/src/lxc/test_virtlxcd.aug
/src/lxc/virtlxcd.aug
/src/lxc/virtlxcd.conf
/src/network/test_virtnetworkd.aug
/src/network/virtnetworkd.aug
/src/network/virtnetworkd.conf
/src/node_device/test_virtnodedevd.aug
/src/node_device/virtnodedevd.aug
/src/node_device/virtnodedevd.conf
/src/nwfilter/test_virtnwfilterd.aug
/src/nwfilter/virtnwfilterd.aug
/src/nwfilter/virtnwfilterd.conf
/src/qemu/test_libvirtd_qemu.aug
/src/qemu/test_virtqemud.aug
/src/qemu/virtqemud.aug
/src/qemu/virtqemud.conf
/src/remote/*_client_bodies.h
/src/remote/*_protocol.[ch]
/src/remote/*_stubs.h
/src/remote/libvirtd.aug
/src/remote/libvirtd.conf
/src/remote/test_libvirtd.aug
/src/remote/test_virtproxyd.aug
/src/remote/virtproxyd.aug
/src/remote/virtproxyd.conf
/src/rpc/virkeepaliveprotocol.[ch]
/src/rpc/virnetprotocol.[ch]
/src/secret/test_virtsecretd.aug
/src/secret/virtsecretd.aug
/src/secret/virtsecretd.conf
/src/storage/test_virtstoraged.aug
/src/storage/virtstoraged.aug
/src/storage/virtstoraged.conf
/src/test*.aug
/src/util/virkeycodetable*.h
/src/util/virkeynametable*.h
/src/vbox/test_virtvboxd.aug
/src/vbox/virtvboxd.aug
/src/vbox/virtvboxd.conf
/src/virt-aa-helper
/src/virtbhyved
/src/virtinterfaced
/src/virtxend
/src/virtlockd
/src/virtlogd
/src/virtlxcd
/src/virtnetworkd
/src/virtnodedevd
/src/virtnwfilterd
/src/virtproxyd
/src/virtqemud
/src/virtsecretd
/src/virtstoraged
/src/virtvboxd
/src/virtvzd
/src/virt-guest-shutdown.target
/src/vz/test_virtvzd.aug
/src/vz/virtvzd.aug
/src/vz/virtvzd.conf
/tests/*.log
/tests/*.pid
/tests/*.trs
/tests/*test
/tests/commandhelper
/tests/qemucapsprobe
!/tests/virsh-self-test
!/tests/virt-aa-helper-test
!/tests/virt-admin-self-test
/tests/objectlocking
/tests/objectlocking-files.txt
/tests/objectlocking.cm[ix]
/tests/reconnect
/tests/ssh
/tests/test_file_access.txt
/tests/test_conf
/tools/libvirt-guests.sh
/tools/virt-login-shell
/tools/virt-login-shell-helper
/tools/virsh
/tools/virsh-*-edit.c
/tools/virt-admin
/tools/virt-*-validate
/tools/virt-sanlock-cleanup
/tools/wireshark/src/libvirt
/update.log
GPATH
GRTAGS
GTAGS
Makefile
Makefile.in
TAGS
coverage
cscope.files
cscope.in.out
cscope.out
cscope.po.out
results.log
stamp-h
stamp-h.in
stamp-h1
# git related ignores
*.orig
.git-module-status
# libvirt related ignores
/build/
/ci/scratch/
tags
!/build-aux/*.pl
!/gnulib/lib/Makefile.am
!/gnulib/tests/Makefile.am
!/m4/virt-*.m4

View File

@@ -13,6 +13,7 @@ addons:
- rpcgen
- xz
- yajl
- glib
matrix:
include:
@@ -30,6 +31,20 @@ matrix:
- MAKE_ARGS="syntax-check distcheck"
script:
- make -C ci/ ci-build@$IMAGE CI_MAKE_ARGS="$MAKE_ARGS"
- services:
- docker
env:
- IMAGE="fedora-31"
- MAKE_ARGS="syntax-check distcheck"
script:
- make -C ci/ ci-build@$IMAGE CI_MAKE_ARGS="$MAKE_ARGS"
- services:
- docker
env:
- IMAGE="fedora-rawhide"
- MAKE_ARGS="syntax-check distcheck"
script:
- make -C ci/ ci-build@$IMAGE CI_MAKE_ARGS="$MAKE_ARGS"
- services:
- docker
env:
@@ -52,7 +67,8 @@ matrix:
script:
# We can't run 'distcheck' or 'syntax-check' because they fail on
# macOS, but doing 'install' and 'dist' gives us some useful coverage
- ./autogen.sh --prefix=$(pwd)/install-root && make -j3 && make -j3 install && make -j3 dist
- mkdir build && cd build
- ../autogen.sh --prefix=$(pwd)/install-root && make -j3 && make -j3 install && make -j3 dist
git:
submodules: true

74
GNUmakefile Normal file
View File

@@ -0,0 +1,74 @@
# Having a separate GNUmakefile lets me 'include' the dynamically
# generated rules created via cfg.mk (package-local configuration)
# as well as maint.mk (generic maintainer rules).
# This makefile is used only if you run GNU Make.
# It is necessary if you want to build targets usually of interest
# only to the maintainer.
# Copyright (C) 2001, 2003, 2006-2019 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
_build-aux ?= build-aux
_autoreconf ?= autoreconf -v
# If the user runs GNU make but has not yet run ./configure,
# give them a diagnostic.
_gl-Makefile := $(wildcard [M]akefile)
ifneq ($(_gl-Makefile),)
# Make tar archive easier to reproduce.
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
# Allow the user to add to this in the Makefile.
ALL_RECURSIVE_TARGETS =
include Makefile
include $(srcdir)/$(_build-aux)/syntax-check.mk
else
.DEFAULT_GOAL := abort-due-to-no-makefile
srcdir = .
# The package can override .DEFAULT_GOAL to run actions like autoreconf.
include $(srcdir)/$(_build-aux)/syntax-check.mk
ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile)
$(MAKECMDGOALS): abort-due-to-no-makefile
endif
abort-due-to-no-makefile:
@echo There seems to be no Makefile in this directory. 1>&2
@echo "You must run ./configure before running 'make'." 1>&2
@exit 1
endif
# Tell version 3.79 and up of GNU make to not build goals in this
# directory in parallel, in case someone tries to build multiple
# targets, and one of them can cause a recursive target to be invoked.
# Only set this if Automake doesn't provide it.
AM_RECURSIVE_TARGETS ?= $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) \
dist distcheck tags ctags
ALL_RECURSIVE_TARGETS += $(AM_RECURSIVE_TARGETS)
ifneq ($(word 2, $(MAKECMDGOALS)), )
ifneq ($(filter $(ALL_RECURSIVE_TARGETS), $(MAKECMDGOALS)), )
.NOTPARALLEL:
endif
endif

View File

@@ -19,6 +19,10 @@
LCOV = lcov
GENHTML = genhtml
# when building from tarball -Werror isn't auto enabled
# so force it explicitly
DISTCHECK_CONFIGURE_FLAGS = --enable-werror
SUBDIRS = . gnulib/lib include/libvirt src tools docs gnulib/tests \
tests po examples
@@ -37,17 +41,26 @@ EXTRA_DIST = \
libvirt-admin.pc.in \
Makefile.nonreentrant \
autogen.sh \
cfg.mk \
GNUmakefile \
run.in \
README.md \
AUTHORS.in \
build-aux/augeas-gentest.pl \
scripts/augeas-gentest.py \
build-aux/check-spacing.pl \
build-aux/gitlog-to-changelog \
build-aux/header-ifdef.pl \
build-aux/minimize-po.pl \
build-aux/mock-noinline.pl \
build-aux/prohibit-duplicate-header.pl \
scripts/check-aclperms.py \
scripts/check-aclrules.py \
scripts/check-drivername.py \
scripts/check-driverimpls.py \
scripts/check-symfile.py \
scripts/check-symsorting.py \
scripts/dtrace2systemtap.py \
scripts/genpolkit.py \
scripts/gensystemtap.py \
scripts/header-ifdef.py \
scripts/minimize-po.py \
scripts/mock-noinline.py \
scripts/prohibit-duplicate-header.py \
build-aux/syntax-check.mk \
build-aux/useless-if-before-free \
build-aux/vc-list-files \
ci/Makefile \
@@ -105,6 +118,10 @@ clean-cov:
MAINTAINERCLEANFILES = .git-module-status
distclean-local: clean-GNUmakefile
clean-GNUmakefile:
test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile
dist-hook: gen-AUTHORS
.PHONY: gen-AUTHORS

View File

@@ -11,7 +11,7 @@ We've opted to keep only the highest-level sources in the GIT repository.
This eases our maintenance burden, (fewer merges etc.), but imposes more
requirements on anyone wishing to build from the just-checked-out sources.
Note the requirements to build the released archive are much less and
are just the requirements of the standard ./configure && make procedure.
are just the requirements of the standard configure && make procedure.
Specific development tools and versions will be checked for and listed by
the bootstrap script.
@@ -34,10 +34,14 @@ reduce download time and disk space requirements:
$ export GNULIB_SRCDIR=/path/to/gnulib
The next step is to get all required pieces from gnulib,
to run autoreconf, and to invoke ./configure:
We require to have the build directory different than the source directory:
$ ./autogen.sh
$ mkdir build && cd build
The next step is to get all required pieces from gnulib,
to run autoreconf, and to invoke ../autogen.sh:
$ ../autogen.sh
And there you are! Just
@@ -47,6 +51,7 @@ And there you are! Just
At this point, there should be no difference between your local copy,
and the GIT master copy:
$ cd ..
$ git diff
should output no difference.

View File

@@ -38,11 +38,13 @@ Installation
------------
Libvirt uses the GNU Autotools build system, so in general can be built
and installed with the usual commands. For example, to build in a manner
that is suitable for installing as root, use:
and installed with the usual commands, however, we mandate to have the
build directory different than the source directory. For example, to build
in a manner that is suitable for installing as root, use:
```
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ mkdir build && cd build
$ ../configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make
$ sudo make install
```
@@ -50,7 +52,8 @@ $ sudo make install
While to build & install as an unprivileged user
```
$ ./configure --prefix=$HOME/usr
$ mkdir build && cd build
$ ../configure --prefix=$HOME/usr
$ make
$ make install
```

View File

@@ -19,94 +19,58 @@
# gnulib modules used by this package.
gnulib_modules='
accept
areadlink
autobuild
base64
bind
bitrotate
byteswap
c-ctype
c-strcase
c-strcasestr
calloc-posix
canonicalize-lgpl
chown
clock-time
close
connect
configmake
count-leading-zeros
count-one-bits
dirname-lgpl
environ
execinfo
fclose
fcntl
fcntl-h
fdatasync
ffs
ffsl
fnmatch
fsync
getaddrinfo
getcwd-lgpl
gethostname
getopt-posix
getpass
getpeername
getsockname
gettimeofday
gitlog-to-changelog
gnumakefile
ignore-value
inet_pton
intprops
ioctl
isatty
largefile
ldexp
listen
localeconv
maintainer-makefile
manywarnings
mgetgroups
mkdtemp
mkostemp
mkostemps
mktempd
net_if
netdb
nonblocking
openpty
passfd
perror
physmem
pipe-posix
pipe2
poll
posix-shell
pthread
pthread_sigmask
recv
regex
sched
send
setenv
setsockopt
sigaction
sigpipe
snprintf
socket
stat-time
stdarg
stpcpy
strchrnul
strdup-posix
strndup
strerror
strerror_r-posix
strptime
strsep
strtok_r
sys_stat
sys_wait
@@ -116,12 +80,7 @@ timegm
ttyname_r
uname
unsetenv
useless-if-before-free
usleep
vasprintf
verify
vc-list-files
vsnprintf
waitpid
warnings
wcwidth
@@ -195,3 +154,9 @@ bootstrap_post_import_hook()
sed 's,\.\./\.\./\.\.,../..,g; s/^TESTS /GNULIB_TESTS /' $m > $m-t
mv -f $m-t $m
}
bootstrap_epilogue()
{
echo "$0: done. Now you can run 'mkdir build && cd build && ../configure'."
exit 0
}

View File

@@ -1,60 +0,0 @@
#!/usr/bin/env perl
#
# augeas-gentest.pl: Generate an augeas test file, from an
# example config file + test file template
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see
# <http://www.gnu.org/licenses/>.
use strict;
use warnings;
die "syntax: $0 CONFIG TEMPLATE\n" unless @ARGV == 2;
my $config = shift @ARGV;
my $template = shift @ARGV;
open CONFIG, "<", $config or die "cannot read $config: $!";
open TEMPLATE, "<", $template or die "cannot read $template: $!";
my $group = 0;
while (<TEMPLATE>) {
if (/\@CONFIG\@/) {
my $group = 0;
print " let conf = \"";
while (<CONFIG>) {
if (/^#\w/) {
s/^#//;
s/\"/\\\"/g;
print $_;
$group = /\[\s$/;
} elsif ($group) {
s/\"/\\\"/g;
if (/#\s*\]/) {
$group = 0;
}
if (/^#/) {
s/^#//;
print $_;
}
}
}
print "\"\n";
} else {
print $_;
}
}
close TEMPLATE;
close CONFIG;

View File

@@ -1,182 +0,0 @@
#!/usr/bin/perl
#
# Validate that header files follow a standard layout:
#
# /*
# ...copyright header...
# */
# <one blank line>
# #pragma once
# ....content....
#
#---
#
# For any file ending priv.h, before the #pragma once
# We will have a further section
#
# #ifndef SYMBOL_ALLOW
# # error ....
# #endif /* SYMBOL_ALLOW */
# <one blank line>
#
#---
#
# For public headers (files in include/), use the standard header guard instead of #pragma once:
# #ifndef SYMBOL
# # define SYMBOL
# ....content....
# #endif /* SYMBOL */
use strict;
use warnings;
my $STATE_COPYRIGHT_COMMENT = 0;
my $STATE_COPYRIGHT_BLANK = 1;
my $STATE_PRIV_START = 2;
my $STATE_PRIV_ERROR = 3;
my $STATE_PRIV_END = 4;
my $STATE_PRIV_BLANK = 5;
my $STATE_GUARD_START = 6;
my $STATE_GUARD_DEFINE = 7;
my $STATE_GUARD_END = 8;
my $STATE_EOF = 9;
my $STATE_PRAGMA = 10;
my $file = " ";
my $ret = 0;
my $ifdef = "";
my $ifdefpriv = "";
my $publicheader = 0;
my $state = $STATE_EOF;
my $mistake = 0;
sub mistake {
my $msg = shift;
warn $msg;
$mistake = 1;
$ret = 1;
}
while (<>) {
if (not $file eq $ARGV) {
if ($state == $STATE_COPYRIGHT_COMMENT) {
&mistake("$file: missing copyright comment");
} elsif ($state == $STATE_COPYRIGHT_BLANK) {
&mistake("$file: missing blank line after copyright header");
} elsif ($state == $STATE_PRIV_START) {
&mistake("$file: missing '#ifndef $ifdefpriv'");
} elsif ($state == $STATE_PRIV_ERROR) {
&mistake("$file: missing '# error ...priv allow...'");
} elsif ($state == $STATE_PRIV_END) {
&mistake("$file: missing '#endif /* $ifdefpriv */'");
} elsif ($state == $STATE_PRIV_BLANK) {
&mistake("$file: missing blank line after priv header check");
} elsif ($state == $STATE_GUARD_START) {
if ($publicheader) {
&mistake("$file: missing '#ifndef $ifdef'");
} else {
&mistake("$file: missing '#pragma once' header guard");
}
} elsif ($state == $STATE_GUARD_DEFINE) {
&mistake("$file: missing '# define $ifdef'");
} elsif ($state == $STATE_GUARD_END) {
&mistake("$file: missing '#endif /* $ifdef */'");
}
$ifdef = uc $ARGV;
$ifdef =~ s,.*/,,;
$ifdef =~ s,[^A-Z0-9],_,g;
$ifdef =~ s,__+,_,g;
unless ($ifdef =~ /^LIBVIRT_/ && $ARGV !~ /libvirt_internal.h/) {
$ifdef = "LIBVIRT_" . $ifdef;
}
$ifdefpriv = $ifdef . "_ALLOW";
$file = $ARGV;
$state = $STATE_COPYRIGHT_COMMENT;
$mistake = 0;
$publicheader = ($ARGV =~ /include\//);
}
if ($mistake ||
$ARGV =~ /config-post\.h$/ ||
$ARGV =~ /vbox_(CAPI|XPCOM)/) {
$state = $STATE_EOF;
next;
}
if ($state == $STATE_COPYRIGHT_COMMENT) {
if (m,\*/,) {
$state = $STATE_COPYRIGHT_BLANK;
}
} elsif ($state == $STATE_COPYRIGHT_BLANK) {
if (! /^$/) {
&mistake("$file: missing blank line after copyright header");
}
if ($ARGV =~ /priv\.h$/) {
$state = $STATE_PRIV_START;
} else {
$state = $STATE_GUARD_START;
}
} elsif ($state == $STATE_PRIV_START) {
if (/^$/) {
&mistake("$file: too many blank lines after copyright header");
} elsif (/#ifndef $ifdefpriv$/) {
$state = $STATE_PRIV_ERROR;
} else {
&mistake("$file: missing '#ifndef $ifdefpriv'");
}
} elsif ($state == $STATE_PRIV_ERROR) {
if (/# error ".*"$/) {
$state = $STATE_PRIV_END;
} else {
&mistake("$file: missing '# error ...priv allow...'");
}
} elsif ($state == $STATE_PRIV_END) {
if (m,#endif /\* $ifdefpriv \*/,) {
$state = $STATE_PRIV_BLANK;
} else {
&mistake("$file: missing '#endif /* $ifdefpriv */'");
}
} elsif ($state == $STATE_PRIV_BLANK) {
if (! /^$/) {
&mistake("$file: missing blank line after priv guard");
}
$state = $STATE_GUARD_START;
} elsif ($state == $STATE_GUARD_START) {
if (/^$/) {
&mistake("$file: too many blank lines after copyright header");
}
if ($publicheader) {
if (/#ifndef $ifdef$/) {
$state = $STATE_GUARD_DEFINE;
} else {
&mistake("$file: missing '#ifndef $ifdef'");
}
} else {
if (/#pragma once/) {
$state = $STATE_PRAGMA;
} else {
&mistake("$file: missing '#pragma once' header guard");
}
}
} elsif ($state == $STATE_GUARD_DEFINE) {
if (/# define $ifdef$/) {
$state = $STATE_GUARD_END;
} else {
&mistake("$file: missing '# define $ifdef'");
}
} elsif ($state == $STATE_GUARD_END) {
if (m,#endif /\* $ifdef \*/$,) {
$state = $STATE_EOF;
}
} elsif ($state == $STATE_PRAGMA) {
next;
} elsif ($state == $STATE_EOF) {
die "$file: unexpected content after '#endif /* $ifdef */'";
} else {
die "$file: unexpected state $state";
}
}
exit $ret;

View File

@@ -1,37 +0,0 @@
#!/usr/bin/perl
my @block;
my $msgstr = 0;
my $empty = 0;
my $unused = 0;
my $fuzzy = 0;
while (<>) {
if (/^$/) {
if (!$empty && !$unused && !$fuzzy) {
print @block;
}
@block = ();
$msgstr = 0;
$fuzzy = 0;
push @block, $_;
} else {
if (/^msgstr/) {
$msgstr = 1;
$empty = 1;
}
if (/^#.*fuzzy/) {
$fuzzy = 1;
}
if (/^#~ msgstr/) {
$unused = 1;
}
if ($msgstr && /".+"/) {
$empty = 0;
}
push @block, $_;
}
}
if (@block && !$empty && !$unused) {
print @block;
}

View File

@@ -1,75 +0,0 @@
#!/usr/bin/env perl
my %noninlined;
my %mocked;
# Functions in public header don't get the noinline annotation
# so whitelist them here
$noninlined{"virEventAddTimeout"} = 1;
# This one confuses the script as its defined in the mock file
# but is actually just a local helper
$noninlined{"virMockStatRedirect"} = 1;
foreach my $arg (@ARGV) {
if ($arg =~ /\.h$/) {
#print "Scan header $arg\n";
&scan_annotations($arg);
} elsif ($arg =~ /mock\.c$/) {
#print "Scan mock $arg\n";
&scan_overrides($arg);
}
}
my $warned = 0;
foreach my $func (keys %mocked) {
next if exists $noninlined{$func};
$warned++;
print STDERR "$func is mocked at $mocked{$func} but missing noinline annotation\n";
}
exit $warned ? 1 : 0;
sub scan_annotations {
my $file = shift;
open FH, $file or die "cannot read $file: $!";
my $func;
while (<FH>) {
if (/^\s*(\w+)\(/ || /^(?:\w+\*?\s+)+(?:\*\s*)?(\w+)\(/) {
my $name = $1;
if ($name !~ /ATTRIBUTE/) {
$func = $name;
}
} elsif (/^\s*$/) {
$func = undef;
}
if (/ATTRIBUTE_NOINLINE/) {
if (defined $func) {
$noninlined{$func} = 1;
}
}
}
close FH
}
sub scan_overrides {
my $file = shift;
open FH, $file or die "cannot read $file: $!";
my $func;
while (<FH>) {
if (/^(\w+)\(/ || /^\w+\s*(?:\*\s*)?(\w+)\(/) {
my $name = $1;
if ($name =~ /^vir/) {
$mocked{$name} = "$file:$.";
}
}
}
close FH
}

View File

@@ -1,26 +0,0 @@
#!/usr/bin/env perl
use strict;
my $file = " ";
my $ret = 0;
my %includes = ( );
my $lineno = 0;
while (<>) {
if (not $file eq $ARGV) {
%includes = ( );
$file = $ARGV;
$lineno = 0;
}
$lineno++;
if (/^# *include *[<"]([^>"]*\.h)[">]/) {
$includes{$1}++;
if ($includes{$1} == 2) {
$ret = 1;
print STDERR "$ARGV:$lineno: $_";
print STDERR "Do not include a header more than once per file\n";
}
}
}
exit $ret;

File diff suppressed because it is too large Load Diff

226
build-aux/useless-if-before-free Executable file
View File

@@ -0,0 +1,226 @@
#!/bin/sh
#! -*-perl-*-
# Detect instances of "if (p) free (p);".
# Likewise "if (p != 0)", "if (0 != p)", or with NULL; and with braces.
# Copyright (C) 2008-2019 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# Written by Jim Meyering
# This is a prologue that allows to run a perl script as an executable
# on systems that are compliant to a POSIX version before POSIX:2017.
# On such systems, the usual invocation of an executable through execlp()
# or execvp() fails with ENOEXEC if it is a script that does not start
# with a #! line. The script interpreter mentioned in the #! line has
# to be /bin/sh, because on GuixSD systems that is the only program that
# has a fixed file name. The second line is essential for perl and is
# also useful for editing this file in Emacs. The next two lines below
# are valid code in both sh and perl. When executed by sh, they re-execute
# the script through the perl program found in $PATH. The '-x' option
# is essential as well; without it, perl would re-execute the script
# through /bin/sh. When executed by perl, the next two lines are a no-op.
eval 'exec perl -wSx "$0" "$@"'
if 0;
my $VERSION = '2018-03-07 03:47'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
# do its job. Otherwise, update this string manually.
use strict;
use warnings;
use Getopt::Long;
(my $ME = $0) =~ s|.*/||;
# use File::Coda; # https://meyering.net/code/Coda/
END {
defined fileno STDOUT or return;
close STDOUT and return;
warn "$ME: failed to close standard output: $!\n";
$? ||= 1;
}
sub usage ($)
{
my ($exit_code) = @_;
my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR);
if ($exit_code != 0)
{
print $STREAM "Try '$ME --help' for more information.\n";
}
else
{
print $STREAM <<EOF;
Usage: $ME [OPTIONS] FILE...
Detect any instance in FILE of a useless "if" test before a free call, e.g.,
"if (p) free (p);". Any such test may be safely removed without affecting
the semantics of the C code in FILE. Use --name=FOO --name=BAR to also
detect free-like functions named FOO and BAR.
OPTIONS:
--list print only the name of each matching FILE (\\0-terminated)
--name=N add name N to the list of \'free\'-like functions to detect;
may be repeated
--help display this help and exit
--version output version information and exit
Exit status:
0 one or more matches
1 no match
2 an error
EXAMPLE:
For example, this command prints all removable "if" tests before "free"
and "kfree" calls in the linux kernel sources:
git ls-files -z |xargs -0 $ME --name=kfree
EOF
}
exit $exit_code;
}
sub is_NULL ($)
{
my ($expr) = @_;
return ($expr eq 'NULL' || $expr eq '0');
}
{
sub EXIT_MATCH {0}
sub EXIT_NO_MATCH {1}
sub EXIT_ERROR {2}
my $err = EXIT_NO_MATCH;
my $list;
my @name = qw(free);
GetOptions
(
help => sub { usage 0 },
version => sub { print "$ME version $VERSION\n"; exit },
list => \$list,
'name=s@' => \@name,
) or usage 1;
# Make sure we have the right number of non-option arguments.
# Always tell the user why we fail.
@ARGV < 1
and (warn "$ME: missing FILE argument\n"), usage EXIT_ERROR;
my $or = join '|', @name;
my $regexp = qr/(?:$or)/;
# Set the input record separator.
# Note: this makes it impractical to print line numbers.
$/ = '"';
my $found_match = 0;
FILE:
foreach my $file (@ARGV)
{
open FH, '<', $file
or (warn "$ME: can't open '$file' for reading: $!\n"),
$err = EXIT_ERROR, next;
while (defined (my $line = <FH>))
{
# Skip non-matching lines early to save time
$line =~ /\bif\b/
or next;
while ($line =~
/\b(if\s*\(\s*([^)]+?)(?:\s*!=\s*([^)]+?))?\s*\)
# 1 2 3
(?: \s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;|
\s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*([^)]+)\)\s*;\s*\}))/sxg)
{
my $all = $1;
my ($lhs, $rhs) = ($2, $3);
my ($free_opnd, $braced_free_opnd) = ($4, $5);
my $non_NULL;
if (!defined $rhs) { $non_NULL = $lhs }
elsif (is_NULL $rhs) { $non_NULL = $lhs }
elsif (is_NULL $lhs) { $non_NULL = $rhs }
else { next }
# Compare the non-NULL part of the "if" expression and the
# free'd expression, without regard to white space.
$non_NULL =~ tr/ \t//d;
my $e2 = defined $free_opnd ? $free_opnd : $braced_free_opnd;
$e2 =~ tr/ \t//d;
if ($non_NULL eq $e2)
{
$found_match = 1;
$list
and (print "$file\0"), next FILE;
print "$file: $all\n";
}
}
}
}
continue
{
close FH;
}
$found_match && $err == EXIT_NO_MATCH
and $err = EXIT_MATCH;
exit $err;
}
my $foo = <<'EOF';
# The above is to *find* them.
# This adjusts them, removing the unnecessary "if (p)" part.
# FIXME: do something like this as an option (doesn't do braces):
free=xfree
git grep -l -z "$free *(" \
| xargs -0 useless-if-before-free -l --name="$free" \
| xargs -0 perl -0x3b -pi -e \
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s+('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\)\s*;)/$2/s'
# Use the following to remove redundant uses of kfree inside braces.
# Note that -0777 puts perl in slurp-whole-file mode;
# but we have plenty of memory, these days...
free=kfree
git grep -l -z "$free *(" \
| xargs -0 useless-if-before-free -l --name="$free" \
| xargs -0 perl -0777 -pi -e \
's/\bif\s*\(\s*(\S+?)(?:\s*!=\s*(?:0|NULL))?\s*\)\s*\{\s*('"$free"'\s*\((?:\s*\([^)]+\))?\s*\1\s*\);)\s*\}[^\n]*$/$2/gms'
Be careful that the result of the above transformation is valid.
If the matched string is followed by "else", then obviously, it won't be.
When modifying files, refuse to process anything other than a regular file.
EOF
## Local Variables:
## mode: perl
## indent-tabs-mode: nil
## eval: (add-hook 'before-save-hook 'time-stamp)
## time-stamp-line-limit: 50
## time-stamp-start: "my $VERSION = '"
## time-stamp-format: "%:y-%02m-%02d %02H:%02M"
## time-stamp-time-zone: "UTC0"
## time-stamp-end: "'; # UTC"
## End:

113
build-aux/vc-list-files Executable file
View File

@@ -0,0 +1,113 @@
#!/bin/sh
# List version-controlled file names.
# Print a version string.
scriptversion=2018-03-07.03; # UTC
# Copyright (C) 2006-2019 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# List the specified version-controlled files.
# With no argument, list them all. With a single DIRECTORY argument,
# list the version-controlled files in that directory.
# If there's an argument, it must be a single, "."-relative directory name.
# cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
postprocess=
case $1 in
--help) cat <<EOF
Usage: $0 [-C SRCDIR] [DIR...]
Output a list of version-controlled files in DIR (default .), relative to
SRCDIR (default .). SRCDIR must be the top directory of a checkout.
Options:
--help print this help, then exit
--version print version number, then exit
-C SRCDIR change directory to SRCDIR before generating list
Report bugs and patches to <bug-gnulib@gnu.org>.
EOF
exit ;;
--version)
year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
cat <<EOF
vc-list-files $scriptversion
Copyright (C) $year Free Software Foundation, Inc,
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
EOF
exit ;;
-C)
test "$2" = . || postprocess="| sed 's|^|$2/|'"
cd "$2" || exit 1
shift; shift ;;
esac
test $# = 0 && set .
for dir
do
if test -d .git || test -f .git; then
test "x$dir" = x. \
&& dir= sed_esc= \
|| { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
# Ignore git symlinks - either they point into the tree, in which case
# we don't need to visit the target twice, or they point somewhere
# else (often into a submodule), in which case the content does not
# belong to this package.
eval exec git ls-tree -r 'HEAD:"$dir"' \
\| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess
elif test -d .hg; then
eval exec hg locate '"$dir/*"' $postprocess
elif test -d .bzr; then
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
eval exec bzr ls -R --versioned '"$dir"' $postprocess
elif test -d CVS; then
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
if test -x build-aux/cvsu; then
eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
elif (cvsu --help) >/dev/null 2>&1; then
eval cvsu --find --types=AFGM '"$dir"' $postprocess
else
eval awk -F/ \''{ \
if (!$1 && $3 !~ /^-/) { \
f=FILENAME; \
if (f ~ /CVS\/Entries$/) \
f = substr(f, 1, length(f)-11); \
print f $2; \
}}'\'' \
`find "$dir" -name Entries -print` /dev/null' $postprocess
fi
elif test -d .svn; then
eval exec svn list -R '"$dir"' $postprocess
else
echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
exit 1
fi
done
# Local variables:
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:

View File

@@ -16,7 +16,13 @@ dnl You should have received a copy of the GNU Lesser General Public
dnl License along with this library. If not, see
dnl <http://www.gnu.org/licenses/>.
AC_INIT([libvirt], [5.8.0], [libvir-list@redhat.com], [], [https://libvirt.org])
AC_INIT([libvirt], [5.10.0], [libvir-list@redhat.com], [], [https://libvirt.org])
if test $srcdir = "."
then
AC_MSG_ERROR([Build directory must be different from source directory])
fi
AC_CONFIG_SRCDIR([src/libvirt.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
@@ -123,12 +129,6 @@ AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_CPP
dnl Setting AB_VERSION makes the 'autobuild' lines of configure output
dnl slightly more useful
if test -d $srcdir/.git && git --version >/dev/null 2>&1 ; then
AB_VERSION=`cd $srcdir && git describe --match 'v[[0-9]]*' 2>/dev/null`
fi
dnl autoconf 2.70 adds a --runstatedir option so that downstreams
dnl can point to /run instead of the historic /var/run, but
dnl autoconf hasn't had a release since 2012.
@@ -317,6 +317,7 @@ LIBVIRT_CHECK_DLOPEN
LIBVIRT_CHECK_FIREWALLD
LIBVIRT_CHECK_FIREWALLD_ZONE
LIBVIRT_CHECK_FUSE
LIBVIRT_CHECK_GLIB
LIBVIRT_CHECK_GLUSTER
LIBVIRT_CHECK_GNUTLS
LIBVIRT_CHECK_HAL
@@ -776,18 +777,6 @@ if test "$enable_test_coverage" = yes; then
WARN_CFLAGS=$save_WARN_CFLAGS
fi
LIBVIRT_ARG_ENABLE([TEST_LOCKING], [thread locking tests using CIL], [no])
case "$enable_test_locking" in
yes|no) ;;
*) AC_MSG_ERROR([bad value ${enable_test_locking} for test-locking option]) ;;
esac
if test "$enable_test_locking" = "yes"; then
LOCK_CHECKING_CFLAGS="-save-temps"
AC_SUBST([LOCK_CHECKING_CFLAGS])
fi
AM_CONDITIONAL([WITH_CIL],[test "$enable_test_locking" = "yes"])
dnl Cygwin, MinGW and MSVC checks
LIBVIRT_WIN_CHECK_COMMON
LIBVIRT_WIN_CHECK_CYGWIN
@@ -892,6 +881,12 @@ AC_CHECK_DECLS([clock_serv_t, host_get_clock_service, clock_get_time],
#include <mach/mach.h>
])
# Check if we have new enough kernel to support BPF devices for cgroups v2
if test "$with_linux" = "yes"; then
AC_CHECK_DECLS([BPF_PROG_QUERY, BPF_CGROUP_DEVICE],
[], [], [#include <linux/bpf.h>])
fi
# Check if we need to look for ifconfig
if test "$want_ifconfig" = "yes"; then
AC_PATH_PROG([IFCONFIG_PATH], [ifconfig])
@@ -916,10 +911,11 @@ test "x$lv_cv_static_analysis" = xyes && t=1
AC_DEFINE_UNQUOTED([STATIC_ANALYSIS], [$t],
[Define to 1 when performing static analysis.])
# Some GNULIB base64 symbols clash with a kerberos library
AC_DEFINE_UNQUOTED([isbase64],[libvirt_gl_isbase64],[Hack to avoid symbol clash])
AC_DEFINE_UNQUOTED([base64_encode],[libvirt_gl_base64_encode],[Hack to avoid symbol clash])
AC_DEFINE_UNQUOTED([base64_encode_alloc],[libvirt_gl_base64_encode_alloc],[Hack to avoid symbol clash])
GNUmakefile=GNUmakefile
m4_if(m4_version_compare([2.61a.100],
m4_defn([m4_PACKAGE_VERSION])), [1], [],
[AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
[GNUmakefile=$GNUmakefile])])
AC_CONFIG_FILES([run],
[chmod +x,-w run])
@@ -1007,6 +1003,7 @@ LIBVIRT_RESULT_DLOPEN
LIBVIRT_RESULT_FIREWALLD
LIBVIRT_RESULT_FIREWALLD_ZONE
LIBVIRT_RESULT_FUSE
LIBVIRT_RESULT_GLIB
LIBVIRT_RESULT_GLUSTER
LIBVIRT_RESULT_GNUTLS
LIBVIRT_RESULT_HAL

View File

@@ -35,6 +35,34 @@ modules = \
virterror \
$(NULL)
modules_admin = libvirt-admin
modules_qemu = libvirt-qemu
modules_lxc = libvirt-lxc
all: vpathhack
# This hack enables us to view the web pages
# from within the uninstalled build tree
vpathhack:
@for dir in fonts js logos; \
do \
test -e $$dir || ln -s $(srcdir)/$$dir $$dir ; \
done
@for file in $(css); \
do \
test -e $$file || ln -s $(srcdir)/$$file $$file ; \
done
clean-local:
for dir in fonts js logos; \
do \
rm -f $$dir ; \
done
for file in $(css); \
do \
rm -f $$file ; \
done
apihtml = \
html/index.html \
$(apihtml_generated)
@@ -43,12 +71,39 @@ apihtml_generated = \
$(addprefix html/libvirt-,$(addsuffix .html,$(modules))) \
$(NULL)
apiadminhtml = \
html/index-admin.html \
$(apiadminhtml_generated)
apiadminhtml_generated = \
$(addprefix html/libvirt-,$(addsuffix .html,$(modules_admin))) \
$(NULL)
apiqemuhtml = \
html/index-qemu.html \
$(apiqemuhtml_generated)
apiqemuhtml_generated = \
$(addprefix html/libvirt-,$(addsuffix .html,$(modules_qemu))) \
$(NULL)
apilxchtml = \
html/index-lxc.html \
$(apilxchtml_generated)
apilxchtml_generated = \
$(addprefix html/libvirt-,$(addsuffix .html,$(modules_lxc))) \
$(NULL)
apipng = \
html/left.png \
html/up.png \
html/home.png \
html/right.png
apirefdir = $(HTML_DIR)/html
apiref_DATA = $(apihtml) $(apiadminhtml) $(apiqemuhtml) $(apilxchtml) $(apipng)
css = \
generic.css \
libvirt.css \
@@ -59,6 +114,9 @@ javascript = \
js/main.js \
$(NULL)
javascriptdir = $(HTML_DIR)/js
javascript_DATA = $(javascript)
fonts = \
fonts/LICENSE.md \
fonts/stylesheet.css \
@@ -73,6 +131,9 @@ fonts = \
fonts/overpass-mono-semibold.woff \
fonts/overpass-regular.woff
fontsdir = $(HTML_DIR)/fonts
fonts_DATA = $(fonts)
logofiles = \
logos/logo-base.svg \
logos/logo-square.svg \
@@ -92,6 +153,9 @@ logofiles = \
logos/logo-banner-light-256.png \
logos/logo-banner-light-800.png
logofilesdir = $(HTML_DIR)/logos
logofiles_DATA = $(logofiles)
png = \
32favicon.png \
libvirt-daemon-arch.png \
@@ -107,40 +171,32 @@ gif = \
architecture.gif \
node.gif
internals_html_in = \
$(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/internals/*.html.in))
internals_html = $(internals_html_in:%.html.in=%.html)
internalsdir = $(HTML_DIR)/internals
internals_DATA = $(internals_html)
kbase_html_in = \
$(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/kbase/*.html.in))
kbase_html = $(kbase_html_in:%.html.in=%.html)
# Since we ship pre-built html in the tarball, we must also
# ship the sources, even when those sources are themselves
# generated.
kbasedir = $(HTML_DIR)/kbase
kbase_DATA = $(kbase_html)
# Generate hvsupport.html and news.html first, since they take one extra step.
dot_html_in = \
dot_html_generated_in = \
hvsupport.html.in \
news.html.in \
news.html.in
dot_html_in = \
$(notdir $(wildcard $(srcdir)/*.html.in))
dot_html = $(dot_html_in:%.html.in=%.html)
dot_html = \
$(dot_html_generated_in:%.html.in=%.html) \
$(dot_html_in:%.html.in=%.html)
xml = \
libvirt-api.xml \
libvirt-refs.xml
qemu_xml = \
libvirt-qemu-api.xml \
libvirt-qemu-refs.xml
lxc_xml = \
libvirt-lxc-api.xml \
libvirt-lxc-refs.xml
admin_xml = \
libvirt-admin-api.xml \
libvirt-admin-refs.xml
htmldir = $(HTML_DIR)
html_DATA = $(css) $(png) $(gif) $(dot_html)
apidir = $(pkgdatadir)/api
api_DATA = \
@@ -166,27 +222,32 @@ EXTRA_DIST= \
apibuild.py genaclperms.pl \
site.xsl subsite.xsl newapi.xsl page.xsl \
wrapstring.xsl \
$(dot_html) $(dot_html_in) $(gif) $(apihtml) $(apipng) \
$(xml) $(qemu_xml) $(lxc_xml) $(admin_xml) $(fig) $(png) $(css) \
$(dot_html_in) $(gif) $(apipng) \
$(fig) $(png) $(css) \
$(javascript) $(logofiles) \
$(internals_html_in) $(internals_html) $(fonts) \
$(kbase_html_in) $(kbase_html) \
$(internals_html_in) $(fonts) \
$(kbase_html_in) \
aclperms.htmlinc \
hvsupport.pl \
$(schema_DATA)
acl_generated = aclperms.htmlinc
$(srcdir)/aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
$(srcdir)/genaclperms.pl Makefile.am
$(AM_V_GEN)$(PERL) $(srcdir)/genaclperms.pl $< > $@
MAINTAINERCLEANFILES = \
$(addprefix $(srcdir)/,$(dot_html)) \
$(addprefix $(srcdir)/,$(apihtml)) \
$(addprefix $(srcdir)/,$(internals_html)) \
$(addprefix $(srcdir)/,$(kbase_html)) \
$(srcdir)/hvsupport.html.in $(srcdir)/aclperms.htmlinc
CLEANFILES = \
$(dot_html) \
$(apihtml) \
$(apiadminhtml) \
$(apiqemuhtml) \
$(apilxchtml) \
$(internals_html) \
$(kbase_html) \
$(api_DATA) \
$(dot_html_generated_in) \
aclperms.htmlinc
timestamp="$(shell if test -n "$$SOURCE_DATE_EPOCH"; \
then \
@@ -195,23 +256,13 @@ timestamp="$(shell if test -n "$$SOURCE_DATE_EPOCH"; \
date -u; \
fi)"
all-am: web
hvsupport.html: hvsupport.html.in
api: $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-refs.xml
qemu_api: $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
lxc_api: $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml
admin_api: $(srcdir)/libvirt-admin-api.xml $(srcdir)/libvirt-admin-refs.xml
web: $(dot_html) $(internals_html) $(kbase_html) \
html/index.html
hvsupport.html: $(srcdir)/hvsupport.html.in
$(srcdir)/hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
$(top_srcdir)/src/libvirt_public.syms \
$(top_srcdir)/src/libvirt_qemu.syms $(top_srcdir)/src/libvirt_lxc.syms \
$(top_srcdir)/src/driver.h
$(AM_V_GEN)$(PERL) $(srcdir)/hvsupport.pl $(top_srcdir)/src > $@ \
$(AM_V_GEN)$(PERL) $(srcdir)/hvsupport.pl $(top_srcdir) $(top_builddir) > $@ \
|| { rm $@ && exit 1; }
news.html.in: \
@@ -226,8 +277,6 @@ EXTRA_DIST += \
$(srcdir)/news.xml \
$(srcdir)/news.rng \
$(srcdir)/news-html.xsl
MAINTAINERCLEANFILES += \
$(srcdir)/news.html.in
%.png: %.fig
convert -rotate 90 $< $@
@@ -244,41 +293,46 @@ MAINTAINERCLEANFILES += \
style=subsite.xsl; \
fi; \
$(XSLTPROC) --stringparam pagename $$name \
--stringparam builddir '$(abs_top_builddir)' \
--stringparam timestamp $(timestamp) --nonet \
$(top_srcdir)/docs/$$style $< > $@ \
|| { rm $@ && exit 1; }
%.html: %.html.tmp
$(AM_V_GEN)$(XMLLINT) --nonet --format $< > $(srcdir)/$@ \
|| { rm $(srcdir)/$@ && exit 1; }
$(AM_V_GEN)$(XMLLINT) --nonet --format $< > $@ \
|| { rm $@ && exit 1; }
$(apihtml_generated): html/index.html
$(apiadminhtml_generated): html/index-admin.html
$(apiqemuhtml_generated): html/index-qemu.html
$(apilxchtml_generated): html/index-lxc.html
html/index.html: libvirt-api.xml newapi.xsl page.xsl $(APIBUILD_STAMP)
$(AM_V_GEN)$(XSLTPROC) --nonet -o $(srcdir)/ \
$(AM_V_GEN)$(XSLTPROC) --nonet -o ./ \
--stringparam builddir '$(abs_top_builddir)' \
--stringparam timestamp $(timestamp) \
$(srcdir)/newapi.xsl $(srcdir)/libvirt-api.xml && \
$(XMLLINT) --nonet --noout $(srcdir)/html/*.html
$(srcdir)/newapi.xsl libvirt-api.xml && \
$(XMLLINT) --nonet --noout html/*.html
html/index-%.html: libvirt-%-api.xml newapi.xsl page.xsl $(APIBUILD_STAMP)
$(AM_V_GEN)$(XSLTPROC) --nonet -o ./ \
--stringparam builddir '$(abs_top_builddir)' \
--stringparam timestamp $(timestamp) \
--stringparam indexfile $(@:html/%=%) \
$(srcdir)/newapi.xsl $< && \
$(XMLLINT) --nonet --noout html/*.html
python_generated_files = \
$(srcdir)/html/libvirt-libvirt-lxc.html \
$(srcdir)/html/libvirt-libvirt-qemu.html \
$(srcdir)/html/libvirt-libvirt-admin.html \
$(srcdir)/html/libvirt-virterror.html \
$(srcdir)/libvirt-api.xml \
$(srcdir)/libvirt-refs.xml \
$(srcdir)/libvirt-lxc-api.xml \
$(srcdir)/libvirt-lxc-refs.xml \
$(srcdir)/libvirt-qemu-api.xml \
$(srcdir)/libvirt-qemu-refs.xml \
$(srcdir)/libvirt-admin-api.xml \
$(srcdir)/libvirt-admin-refs.xml \
html/libvirt-libvirt-lxc.html \
html/libvirt-libvirt-qemu.html \
html/libvirt-libvirt-admin.html \
html/libvirt-virterror.html \
$(api_DATA) \
$(NULL)
APIBUILD=$(srcdir)/apibuild.py
APIBUILD_STAMP=$(APIBUILD).stamp
EXTRA_DIST += $(APIBUILD_STAMP)
APIBUILD_STAMP=apibuild.py.stamp
CLEANFILES += $(APIBUILD_STAMP)
$(python_generated_files): $(APIBUILD_STAMP)
@@ -315,71 +369,10 @@ $(APIBUILD_STAMP): $(srcdir)/apibuild.py \
$(top_srcdir)/src/libvirt-stream.c \
$(top_srcdir)/src/libvirt-lxc.c \
$(top_srcdir)/src/libvirt-qemu.c \
$(top_srcdir)/src/libvirt-admin.c \
$(top_srcdir)/src/admin/libvirt-admin.c \
$(top_srcdir)/src/util/virerror.c \
$(top_srcdir)/src/util/virevent.c \
$(top_srcdir)/src/util/virtypedparam-public.c
$(AM_V_GEN)srcdir=$(srcdir) builddir=$(builddir) \
$(RUNUTF8) $(PYTHON) $(APIBUILD)
touch $@
check-local: all
dist-local: all
clean-local:
rm -f *~ *.bak *.hierarchy *.signals *-unused.txt *.html html/*.html
maintainer-clean-local: clean-local
rm -rf $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-refs.xml
rm -rf $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
rm -rf $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml
rm -rf $(srcdir)/libvirt-admin-api.xml $(srcdir)/libvirt-admin-refs.xml
rm -rf $(APIBUILD_STAMP)
rebuild: api qemu_api lxc_api admin_api all
install-data-local:
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
for f in $(css) $(dot_html) $(gif) $(png); do \
$(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR); done
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/js
for f in $(javascript); do \
$(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/js/; done
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/logos
for f in $(logofiles); do \
$(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/logos; done
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/html
for h in $(apihtml); do \
$(INSTALL) -m 0644 $(srcdir)/$$h $(DESTDIR)$(HTML_DIR)/html; done
for p in $(apipng); do \
$(INSTALL) -m 0644 $(srcdir)/$$p $(DESTDIR)$(HTML_DIR)/html; done
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/internals
for f in $(internals_html); do \
$(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/internals; done
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/kbase
for f in $(kbase_html); do \
$(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/kbase; done
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/fonts
for f in $(fonts); do \
$(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/fonts; \
done
uninstall-local:
for f in $(css) $(dot_html) $(gif) $(png) $(fonts); do \
rm -f $(DESTDIR)$(HTML_DIR)/$$f; \
done
for f in $(logofiles); do \
rm -f $(DESTDIR)$(HTML_DIR)/$$f; \
done
for f in $(javascript); do \
rm -f $(DESTDIR)$(HTML_DIR)/$$f; \
done
for h in $(apihtml); do rm -f $(DESTDIR)$(HTML_DIR)/$$h; done
for p in $(apipng); do rm -f $(DESTDIR)$(HTML_DIR)/$$p; done
for f in $(internals_html); do \
rm -f $(DESTDIR)$(HTML_DIR)/$$f; \
done
for f in $(kbase_html); do \
rm -f $(DESTDIR)$(HTML_DIR)/$$f; \
done

File diff suppressed because it is too large Load Diff

View File

@@ -155,24 +155,17 @@ $ROOT
named <code>$VMNAME.libvirt-{qemu,lxc}</code>. Each consumer is associated
with exactly one partition, which also have a corresponding cgroup usually
named <code>$PARTNAME.partition</code>. The exceptions to this naming rule
are the three top level default partitions, named <code>/system</code> (for
system services), <code>/user</code> (for user login sessions) and
<code>/machine</code> (for virtual machines and containers). By default
every consumer will of course be associated with the <code>/machine</code>
partition.
is the top level default partition for virtual machines and containers
<code>/machine</code>.
</p>
<p>
Given this, a possible systemd cgroups layout involving 3 qemu guests,
Given this, a possible non-systemd cgroups layout involving 3 qemu guests,
3 lxc containers and 2 custom child slices, would be:
</p>
<pre>
$ROOT
|
+- system
| |
| +- libvirtd.service
|
+- machine
|

View File

@@ -9,13 +9,15 @@
<h2><a id="compiling">Compiling a release tarball</a></h2>
<p>
libvirt uses the standard configure/make/install steps:
libvirt uses the standard configure/make/install steps and mandates
that the build directory is different that the source directory:
</p>
<pre>
$ xz -c libvirt-x.x.x.tar.xz | tar xvf -
$ cd libvirt-x.x.x
$ ./configure</pre>
$ mkdir build &amp;&amp; cd build
$ ../configure</pre>
<p>
The <i>configure</i> script can be given options to change its default
@@ -28,7 +30,7 @@ $ ./configure</pre>
</p>
<pre>
$ ./configure <i>--help</i></pre>
$ ../configure <i>--help</i></pre>
<p>
When you have determined which options you want to use (if any),
@@ -49,7 +51,7 @@ $ ./configure <i>--help</i></pre>
</p>
<pre>
$ ./configure <i>[possible options]</i>
$ ../configure <i>[possible options]</i>
$ make
$ <b>sudo</b> <i>make install</i></pre>

View File

@@ -106,6 +106,10 @@
<a href="html/libvirt-libvirt-secret.html">secret</a>,
<a href="html/libvirt-libvirt-storage.html">storage</a>,
<a href="html/libvirt-libvirt-stream.html">stream</a>
and
<a href="html/index-admin.html">admin</a>,
<a href="html/index-qemu.html">QEMU</a>,
<a href="html/index-lxc.html">LXC</a> libs
</dd>
<dt><a href="drivers.html">Drivers</a></dt>

View File

@@ -337,7 +337,9 @@ error: invalid argument in libvirt was built without the 'esx' driver
Memory size has to be a multiple of 4096
</li>
<li>
Number of virtual CPU has to be 1 or a multiple of 2
Number of virtual CPU has to be 1 or a multiple of 2.
<span class="since">Since 4.10.0</span> any number of vCPUs is
supported.
</li>
<li>
Valid MAC address prefixes are <code>00:0c:29</code> and

View File

@@ -363,7 +363,8 @@
<dd>The <code>table</code> element contains a fully-qualified path
to the ACPI table. The <code>type</code> attribute contains the
ACPI table type (currently only <code>slic</code> is supported)
<span class="since">Since 1.3.5 (QEMU only)</span></dd>
<span class="since">Since 1.3.5 (QEMU)</span>
<span class="since">Since 5.9.0 (Xen)</span></dd>
</dl>
<h4><a id="elementsOSContainer">Container boot</a></h4>
@@ -2059,6 +2060,7 @@
&lt;tseg unit='MiB'&gt;48&lt;/tseg&gt;
&lt;/smm&gt;
&lt;htm state='on'/&gt;
&lt;ccf-assist state='on'/&gt;
&lt;msrs unknown='ignore'/&gt;
&lt;/features&gt;
...</pre>
@@ -2357,6 +2359,14 @@
will not be ignored.
<span class="since">Since 5.1.0</span> (bhyve only)
</dd>
<dt><code>ccf-assist</code></dt>
<dd>Configure ccf-assist (Count Cache Flush Assist) availability for
pSeries guests.
Possible values for the <code>state</code> attribute
are <code>on</code> and <code>off</code>. If the attribute is not
defined, the hypervisor default will be used.
<span class="since">Since 5.9.0</span> (QEMU/KVM only)
</dd>
</dl>
<h3><a id="elementsTime">Time keeping</a></h3>
@@ -3330,15 +3340,26 @@
<dt><code>backingStore</code></dt>
<dd>
This element describes the backing store used by the disk
specified by sibling <code>source</code> element. It is
currently ignored on input and only used for output to
describe the detected backing chains of running
domains <span class="since">since 1.2.4</span> (although a
future version of libvirt may start accepting chains on input,
or output information for offline domains). An
empty <code>backingStore</code> element means the sibling
source is self-contained and is not based on any backing
store. For backing chain information to be accurate, the
specified by sibling <code>source</code> element.
<span class="since">Since 1.2.4.</span>
If the hypervisor driver does not support the
<a href='formatdomaincaps.html#featureBackingStoreInput'>
<code>backingStoreInput</code></a>
(<span class='since'>Since 5.10.0</span>)
domain feature the <code>backingStore</code> is ignored on
input and only used for output to describe the detected
backing chains of running domains.
If <code>backingStoreInput</code> is supported
the <code>backingStore</code> is used as the backing image of
<code>source</code> or other <code>backingStore</code> overriding
any backing image information recorded in the image metadata.
An empty <code>backingStore</code> element means the sibling
source is self-contained and is not based on any backing store.
For the detected backing chain information to be accurate, the
backing format must be correctly specified in the metadata of
each file of the chain (files created by libvirt satisfy this
property, but using existing external files for snapshot or
@@ -3837,7 +3858,7 @@
&lt;readonly/&gt;
&lt;/filesystem&gt;
&lt;filesystem type='file' accessmode='passthrough'&gt;
&lt;driver name='loop' type='raw'/&gt;
&lt;driver type='loop' format='raw'/&gt;
&lt;driver type='path' wrpolicy='immediate'/&gt;
&lt;source file='/export/to/guest.img'/&gt;
&lt;target dir='/import/from/host'/&gt;
@@ -4837,6 +4858,14 @@
<a href="#elementsGraphics">graphical framebuffer</a> in order to
use this attribute, currently only supported with VNC, Spice and
egl-headless graphics devices.
<span class="since">Since version 5.10.0</span>, there is an optional
<code>ramfb</code> attribute for devices with
<code>model='vfio-pci'</code>. Supported values are either
<code>on</code> or <code>off</code> (default is 'off'). When
enabled, this attribute provides a memory framebuffer device to the
guest. This framebuffer will be used as a boot display when a vgpu
device is the primary display.
<p>
Note: There are also some implications on the usage of guest's
address type depending on the <code>model</code> attribute,
@@ -7032,9 +7061,10 @@ qemu-kvm -net nic,model=? /dev/null
"vbox", "qxl" (<span class="since">since 0.8.6</span>),
"virtio" (<span class="since">since 1.3.0</span>),
"gop" (<span class="since">since 3.2.0</span>),
"none" (<span class="since">since 4.6.0</span>, or "bochs"
(<span class="since">since 5.6.0</span>)
depending on the hypervisor features available.
"bochs" (<span class="since">since 5.6.0</span>), "ramfb"
(<span class="since">since 5.9.0</span>), or "none"
(<span class="since">since 4.6.0</span>, depending on the hypervisor
features available.
The purpose of the type <code>none</code> is to instruct libvirt not
to add a default video device in the guest (see the paragraph above).
This legacy behaviour can be inconvenient in cases where GPU mediated
@@ -7068,6 +7098,13 @@ qemu-kvm -net nic,model=? /dev/null
Attribute <code>vram64</code> (<span class="since">since 1.3.3</span>)
extends secondary bar and makes it addressable as 64bit memory.
</p>
<p><span class="since">Since 5.9.0</span>, the <code>model</code>
element may also have an optional <code>resolution</code> sub-element.
The <code>resolution</code> element has attributes <code>x</code> and
<code>y</code> to set the minimum resolution for the video device. This
sub-element is valid for model types "vga", "qxl", "bochs", and
"virtio".
</p>
</dd>
<dt><code>acceleration</code></dt>

View File

@@ -516,6 +516,7 @@
&lt;/gic&gt;
&lt;vmcoreinfo supported='yes'/&gt;
&lt;genid supported='yes'/&gt;
&lt;backingStoreInput supported='yes'/&gt;
&lt;sev&gt;
&lt;cbitpos&gt;47&lt;/cbitpos&gt;
&lt;reduced-phys-bits&gt;1&lt;/reduced-phys-bits&gt;
@@ -552,6 +553,13 @@
<p>Reports whether the genid feature can be used by the domain.</p>
<h4><a id="featureBackingStoreInput">backingStoreInput</a></h4>
<p>Reports whether the hypervisor will obey the &lt;backingStore&gt;
elements configured for a &lt;disk&gt; when booting the guest, hotplugging
the disk to a running guest, or similar.
</p>
<h4><a id="elementsSEV">SEV capabilities</a></h4>
<p>AMD Secure Encrypted Virtualization (SEV) capabilities are exposed under

7
docs/gitdm/companies/ibm Normal file
View File

@@ -0,0 +1,7 @@
ibm.com
# These IBM employees used their personal email address when contributing
# to libvirt and we don't have the corresponding @ibm.com address on file.
danielhb413@gmail.com
jcfaracco@gmail.com

View File

@@ -8,6 +8,7 @@ aristanetworks.com Arista Networks
arpnetworks.com ARP Networks
av-test.de AV-TEST
b1-systems.de B1 Systems
baidu.com Baidu
brightbox.co.uk Brightbox
cisco.com Cisco
citrix.com Citrix
@@ -17,6 +18,7 @@ cumulusnetworks.com Cumulus Networks
dataductus.se Data Ductus
datagravity.com DataGravity
dell.com Dell
designassembly.de Coffee-Break-Games
diateam.net DIATEAM
eldorado.org.br ELDORADO
endocode.com Endocode
@@ -35,7 +37,6 @@ hitachi.com Hitachi
hoster-ok.com hoster-ok.com
hp.com HP
huawei.com Huawei
ibm.com IBM
inktank.com Inktank Storage
intel.com Intel
intellilink.co.jp NTT DATA INTELLILINK
@@ -49,7 +50,6 @@ linutronix.de Linutronix
linux2go.dk Linux2Go
liquidweb.com Liquid Web
massclouds.com MassClouds
designassembly.de Coffee-Break-Games
mellanox.com Mellanox
midokura.com Midokura
mirantis.com Mirantis
@@ -78,6 +78,7 @@ smartjog.com SmartJog
solarflare.com Solarflare
ssatr.ch Swiss Satellite Radio
sun.com Sun Microsystems
tabit.pro Tabit
taobao.com Taobao
tdf.fr TDF
tencent.com Tencent

View File

@@ -10,3 +10,4 @@ linux.com
openbsd.org
salasaga.org
samba.org
sdf.org

View File

@@ -9,6 +9,7 @@ googlemail.com
hotmail.com
mail.ru
pobox.com
protonmail.com
riseup.net
web.de
yahoo.com
@@ -18,6 +19,7 @@ yahoo.com
# addresses directly rather than just the domain, because we can't really
# consider the domain itself one way or the other.
=@eater.me
adam@pandorasboxen.com
agx@sigxcpu.org
alexander.nusov@nfvexpress.com

View File

@@ -29,11 +29,11 @@
file from zanata.</p>
</li>
<li><p>Post patches using <code>git send-email</code>, with git
rename detection enabled. You need a one-time setup of:</p>
<pre>
git config diff.renames true
</pre>
<li><p>The simplest way to send patches is to use the
<a href="https://github.com/stefanha/git-publish"><code>git-publish</code></a>
tool. All libvirt-related repositories contain a config file that
tells git-publish to use the correct mailing list and subject prefix.</p>
<p>Alternatively, you may send patches using <code>git send-email</code>.</p>
<p>Also, for code motion patches, you may find that <code>git
diff --patience</code> provides an easier-to-read patch.
However, the usual workflow of libvirt developer is:</p>
@@ -72,8 +72,8 @@
</pre>
<p>As a rule, patches should be sent to the mailing list only: all
developers are subscribed to libvir-list and read it regularly, so
please don't CC individual developers unless they've explicitly
asked you to.</p>
<strong>please don't CC individual developers</strong> unless
they've explicitly asked you to.</p>
<p>Avoid using mail clients for sending patches, as most of them
will mangle the messages in some way, making them unusable for our
purposes. Gmail and other Web-based mail clients are particularly
@@ -81,9 +81,11 @@
<p>If everything went well, your patch should show up on the
<a href="https://www.redhat.com/archives/libvir-list/">libvir-list
archives</a> in a matter of minutes; if you still can't find it on
there after an hour or so, you should double-check your setup. Note
that your very first post to the mailing list will be subject to
moderation, and it's not uncommon for that to take around a day.</p>
there after an hour or so, you should double-check your setup.
<strong>Note that, if you are not already a subscriber, your very
first post to the mailing list will be
subject to moderation</strong>, and it's not uncommon for that to
take around a day.</p>
<p>Please follow this as close as you can, especially the rebase and
<code>git send-email</code> part, as it makes life easier for other
developers to review your patch set.</p>
@@ -139,14 +141,7 @@
</li>
<li><p>Run the automated tests on your code before submitting any changes.
In particular, configure with compile warnings set to
-Werror. This is done automatically for a git checkout; from a
tarball, use:</p>
<pre>
./configure --enable-werror
</pre>
<p>
and run the tests:
That is:
</p>
<pre>
make check
@@ -184,12 +179,13 @@
<p>
When debugging failures during development, it is possible
to focus in on just the failing subtests by using TESTS and
VIR_TEST_RANGE:
to focus in on just the failing subtests by using
VIR_TEST_RANGE. I.e. to run all tests from 3 to 20 with the
exception of tests 6 and 16, use:
</p>
<pre>
make check VIR_TEST_DEBUG=1 VIR_TEST_RANGE=3-5 TESTS=qemuxml2argvtest
VIR_TEST_DEBUG=1 VIR_TEST_RANGE=3-5,7-20,^16 ./run tests/qemuxml2argvtest
</pre>
<p>
@@ -989,99 +985,151 @@ BAD:
it points to, or it is aliased to another pointer that is.
</p>
<h2><a id="memalloc">Low level memory management</a></h2>
<h2><a id="attribute_annotations">Attribute annotations</a></h2>
<p>
Use of the malloc/free/realloc/calloc APIs is deprecated in the libvirt
codebase, because they encourage a number of serious coding bugs and do
not enable compile time verification of checks for NULL. Instead of these
routines, use the macros from viralloc.h.
Use the following annotations to help the compiler and/or static
analysis tools understand the code better:
</p>
<ul>
<li><p>To allocate a single object:</p>
<table class="top_table">
<tr><th>Macro</th><th>Meaning</th></tr>
<tr><td><code>ATTRIBUTE_NONNULL</code></td><td>passing NULL for this parameter is not allowed</td></tr>
<tr><td><code>ATTRIBUTE_PACKED</code></td><td>force a structure to be packed</td></tr>
<tr><td><code>G_GNUC_FALLTHROUGH</code></td><td>allow code reuse by multiple switch cases</td></tr>
<tr><td><code>G_GNUC_NO_INLINE</code></td><td>the function is mocked in the test suite</td></tr>
<tr><td><code>G_GNUC_NORETURN</code></td><td>the function never returns</td></tr>
<tr><td><code>G_GNUC_NULL_TERMINATED</code></td><td>last parameter must be NULL</td></tr>
<tr><td><code>G_GNUC_PRINTF</code></td><td>validate that the formatting string matches parameters</td></tr>
<tr><td><code>G_GNUC_UNUSED</code></td><td>parameter is unused in this implementation of the function</td></tr>
<tr><td><code>G_GNUC_WARN_UNUSED_RESULT</code></td><td>the return value must be checked</td></tr>
</table>
<pre>
virDomainPtr domain;
<h2><a id="glib">Adoption of GLib APIs</a></h2>
if (VIR_ALLOC(domain) &lt; 0)
return NULL;
</pre>
</li>
<p>
Libvirt has adopted use of the
<a href="https://developer.gnome.org/glib/stable/">GLib library</a>.
Due to libvirt's long history of development, there are many APIs
in libvirt, for which GLib provides an alternative solution. The
general rule to follow is that the standard GLib solution will be
preferred over historical libvirt APIs. Existing code will be
ported over to use GLib APIs over time, but new code should use
the GLib APIs straight away where possible.
</p>
<li><p>To allocate an array of objects:</p>
<pre>
virDomainPtr domains;
size_t ndomains = 10;
<p>
The following is a list of libvirt APIs that should no longer be
used in new code, and their suggested GLib replacements:
</p>
if (VIR_ALLOC_N(domains, ndomains) &lt; 0)
return NULL;
</pre>
</li>
<dl>
<dt><code>VIR_ALLOC</code>, <code>VIR_REALLOC</code>,
<code>VIR_RESIZE_N</code>, <code>VIR_EXPAND_N</code>,
<code>VIR_SHRINK_N</code>, <code>VIR_FREE</code>,
<code>VIR_APPEND_ELEMENT</code>, <code>VIR_INSERT_ELEMENT</code>,
<code>VIR_DELETE_ELEMENT</code></dt>
<dd>Prefer the GLib APIs <code>g_new0</code>/<code>g_renew</code>/
<code>g_free</code> in most cases. There should rarely be a need
to use <code>g_malloc</code>/<code>g_realloc</code>.
Instead of using plain C arrays, it is preferrable to use
one of the GLib types, <code>GArray</code>, <code>GPtrArray</code>
or <code>GByteArray</code>. These
all use a struct to track the array memory and size together
and efficiently resize. <strong>NEVER MIX</strong> use of the
classic libvirt memory allocation APIs and GLib APIs within
a single method. Keep the style consistent, converting existing
code to GLib style in a separate, prior commit.</dd>
<li><p>To allocate an array of object pointers:</p>
<pre>
virDomainPtr *domains;
size_t ndomains = 10;
<dt><code>VIR_STRDUP</code>, <code>VIR_STRNDUP</code></dt>
<dd>Prefer the GLib APIs <code>g_strdup</code> and <code>g_strndup</code>.</dd>
if (VIR_ALLOC_N(domains, ndomains) &lt; 0)
return NULL;
</pre>
</li>
<dt><code>virStrerror</code></dt>
<dd>The GLib <code>g_strerror()</code> function should be used instead,
which has a simpler calling convention as an added benefit.</dd>
<li><p>To re-allocate the array of domains to be 1 element
longer (however, note that repeatedly expanding an array by 1
scales quadratically, so this is recommended only for smaller
arrays):</p>
<pre>
virDomainPtr domains;
size_t ndomains = 0;
<table class="top_table">
<tr><th>deprecated version</th><th>GLib version</th><th>Notes</th></tr>
<tr><td><code>VIR_ALLOC(var)</code></td><td><code>g_new0(var_t, 1)</code></td>
<td>the type needs to be passed explicitly</td></tr>
<tr><td><code>VIR_ALLOC_N</code></td><td><code>g_new0(var_t, n)</code></td><td></td></tr>
<tr><td><code>VIR_REALLOC_N</code></td><td><code>g_renew(var_t, ptr, n)</code></td>
<td>the newly added memory is not zeroed</td></tr>
<tr><td><code>VIR_EXPAND_N</code></td><td><code>g_renew(var_t, ptr, n)</code></td>
<td>zero the new memory manually or use an array type</td></tr>
<tr><td><code>VIR_SHRINK_N</code></td><td><code>g_renew(var_t, ptr, n)</code></td>
<td></td></tr>
<tr><td><code>VIR_APPEND_ELEMENT</code></td><td><code>g_array_append_val</code></td>
<td><code>g_ptr_array_add</code> or <code>g_byte_array_append</code></td></tr>
<tr><td><code>VIR_INSERT_ELEMENT</code></td><td><code>g_array_insert_val</code></td>
<td><code>g_ptr_array_insert</code></td></tr>
<tr><td><code>VIR_DELETE_ELEMENT</code></td><td><code>g_array_remove_index</code></td>
<td><code>g_ptr_array_remove_index</code> or <code>g_byte_array_remove_index</code></td></tr>
<tr><td><code>VIR_FREE</code></td><td><code>g_free</code></td>
<td><code>g_free</code> does not zero the pointer</td></tr>
</table>
if (VIR_EXPAND_N(domains, ndomains, 1) &lt; 0)
return NULL;
domains[ndomains - 1] = domain;
</pre></li>
<p>String allocation macros and functions:</p>
<table class="top_table">
<tr><th>deprecated version</th><th>GLib version</th><th>Notes</th></tr>
<tr><td><code>VIR_STRDUP</code></td><td><code>g_strdup</code></td><td></td></tr>
<tr><td><code>VIR_STRNDUP</code></td><td><code>g_strndup</code></td><td></td></tr>
<tr><td><code>virAsprintf</code></td><td><code>g_strdup_printf</code></td><td></td></tr>
<tr><td><code>virVasprintf</code></td><td><code>g_strdup_vprint</code></td>
<td>use <code>g_vasprintf</code> if you really need to know the returned length</td></tr>
<tr><td><code>virStrerror</code></td><td><code>g_strerror</code></td>
<td>the error strings are cached globally so no need to free it</td></tr>
</table>
</dl>
<li><p>To ensure an array has room to hold at least one more
element (this approach scales better, but requires tracking
allocation separately from usage)</p>
<p>
The following libvirt APIs have been deleted already:
</p>
<dl>
<dt><code>VIR_AUTOPTR</code>, <code>VIR_AUTOCLEAN</code>, <code>VIR_AUTOFREE</code></dt>
<dd>The GLib macros <code>g_autoptr</code>, <code>g_auto</code> and
<code>g_autofree</code> must be used
instead in all new code. In existing code, the GLib macros must
never be mixed with libvirt macros within a method, nor should
they be mixed with <code>VIR_FREE</code>. If introducing GLib macros to an
existing method, any use of libvirt macros must be converted
in an independent commit.
</dd>
<pre>
virDomainPtr domains;
size_t ndomains = 0;
size_t ndomains_max = 0;
<dt><code>VIR_DEFINE_AUTOPTR_FUNC</code>, <code>VIR_DEFINE_AUTOCLEAN_FUNC</code></dt>
<dd>The GLib macros <code>G_DEFINE_AUTOPTR_CLEANUP_FUNC</code> and
<code>G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC</code> must be used in all
new code. Existing code should be converted to the
new macros where relevant. It is permissible to use
<code>g_autoptr</code>, <code>g_auto</code> on an object whose cleanup function
is declared with the libvirt macros and vice-versa.
</dd>
if (VIR_RESIZE_N(domains, ndomains_max, ndomains, 1) &lt; 0)
return NULL;
domains[ndomains++] = domain;
</pre>
</li>
<dt><code>VIR_AUTOUNREF</code></dt>
<dd>The GLib macros <code>g_autoptr</code> and <code>G_DEFINE_AUTOPTR_CLEANUP_FUNC</code>
should be used to manage autoclean of virObject classes.
This matches usage with GObject classes.</dd>
</dl>
<table class="top_table">
<tr><th>deleted version</th><th>GLib version</th><th>Notes</th></tr>
<tr><td><code>VIR_AUTOPTR</code></td><td><code>g_autoptr</code></td><td></td></tr>
<tr><td><code>VIR_AUTOCLEAN</code></td><td><code>g_auto</code></td><td></td></tr>
<tr><td><code>VIR_AUTOFREE</code></td><td><code>g_autofree</code></td><td>The GLib version does not use parentheses</td></tr>
<tr><td><code>VIR_AUTOUNREF</code></td><td><code>g_autoptr</code></td><td>The cleanup function needs to be defined</td></tr>
<tr><td><code>VIR_DEFINE_AUTOPTR_FUNC</code></td><td><code>G_DEFINE_AUTOPTR_CLEANUP_FUNC</code></td><td></td></tr>
<tr><td><code>VIR_DEFINE_AUTOCLEAN_FUNC</code></td><td><code>G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC</code></td><td></td></tr>
<tr><td><code>VIR_STEAL_PTR</code></td><td><code>g_steal_pointer</code></td>
<td><code>a = f(&amp;b)</code> instead of <code>f(a, b)</code></td></tr>
<tr><td><code>VIR_RETURN_PTR</code></td><td><code>return g_steal_pointer</code></td><td></td></tr>
<tr><td><code>ARRAY_CARDINALITY</code></td><td><code>G_N_ELEMENTS</code></td><td></td></tr>
<tr><td><code>ATTRIBUTE_FALLTHROUGH</code></td><td><code>G_GNUC_FALLTHROUGH</code></td><td></td></tr>
<tr><td><code>ATTRIBUTE_FMT_PRINTF</code></td><td><code>G_GNUC_PRINTF</code></td><td></td></tr>
<tr><td><code>ATTRIBUTE_NOINLINE</code></td><td><code>G_GNUC_NO_INLINE</code></td><td></td></tr>
<tr><td><code>ATTRIBUTE_NORETURN</code></td><td><code>G_GNUC_NORETURN</code></td><td></td></tr>
<tr><td><code>ATTRIBUTE_RETURN_CHECK</code></td><td><code>G_GNUC_WARN_UNUSED_RESULT</code></td><td></td></tr>
<tr><td><code>ATTRIBUTE_SENTINEL</code></td><td><code>G_GNUC_NULL_TERMINATED</code></td><td></td></tr>
<tr><td><code>ATTRIBUTE_UNUSED</code></td><td><code>G_GNUC_UNUSED</code></td><td></td></tr>
</table>
<li><p>To trim an array of domains from its allocated size down
to the actual used size:</p>
<pre>
virDomainPtr domains;
size_t ndomains = x;
size_t ndomains_max = y;
VIR_SHRINK_N(domains, ndomains_max, ndomains_max - ndomains);
</pre></li>
<li><p>To free an array of domains:</p>
<pre>
virDomainPtr domains;
size_t ndomains = x;
size_t ndomains_max = y;
size_t i;
for (i = 0; i &lt; ndomains; i++)
VIR_FREE(domains[i]);
VIR_FREE(domains);
ndomains_max = ndomains = 0;
</pre>
</li>
</ul>
<h2><a id="file_handling">File handling</a></h2>
@@ -1222,18 +1270,14 @@ BAD:
</p>
<pre>
VIR_STRDUP(char *dst, const char *src);
VIR_STRNDUP(char *dst, const char *src, size_t n);
dst = g_strdup(src);
dst = g_strndup(src, n);
</pre>
<p>
You should avoid using strdup or strndup directly as they do not report
out-of-memory error, and do not allow a NULL source. Use
VIR_STRDUP or VIR_STRNDUP macros instead, which return 0 for
NULL source, 1 for successful copy, and -1 for allocation
failure with the error already reported. In very
specific cases, when you don't want to report the out-of-memory error, you
can use VIR_STRDUP_QUIET or VIR_STRNDUP_QUIET, but such usage is very rare
and usually considered a flaw.
You should avoid using strdup or strndup directly as they do not handle
out-of-memory errors, and do not allow a NULL source.
Use <code>g_strdup</code> and <code>g_strndup</code> from GLib which
abort on OOM and handle NULL source by returning NULL.
</p>
<h2><a id="strbuf">Variable length string buffer</a></h2>
@@ -1241,7 +1285,11 @@ BAD:
<p>
If there is a need for complex string concatenations, avoid using
the usual sequence of malloc/strcpy/strcat/snprintf functions and
make use of the virBuffer API described in virbuffer.h
make use of either the
<a href="https://developer.gnome.org/glib/stable/glib-Strings.html">GString</a>
type from GLib or the virBuffer API.
If formatting XML or QEMU command line is needed, use the virBuffer
API described in virbuffer.h, since it has helper functions for those.
</p>
<p>Typical usage is as follows:</p>
@@ -1250,12 +1298,14 @@ BAD:
char *
somefunction(...)
{
virBuffer buf = VIR_BUFFER_INITIALIZER;
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
...
virBufferAddLit(&amp;buf, "&lt;domain&gt;\n");
virBufferAsprintf(&amp;buf, " &lt;memory&gt;%d&lt;/memory&gt;\n", memory);
if (some_error)
return NULL; /* g_auto will free the memory used so far */
...
virBufferAddLit(&amp;buf, "&lt;/domain&gt;\n");
@@ -1324,12 +1374,12 @@ BAD:
Whenever you add a new printf-style function, i.e., one with a format
string argument and following "..." in its prototype, be sure to use
gcc's printf attribute directive in the prototype. For example, here's
the one for virAsprintf, in util.h:
the one for virCommandAddEnvFormat in vircommand.h:
</p>
<pre>
int virAsprintf(char **strp, const char *fmt, ...)
ATTRIBUTE_FORMAT(printf, 2, 3);
void virCommandAddEnvFormat(virCommandPtr cmd, const char *format, ...)
G_GNUC_PRINTF(2, 3);
</pre>
<p>
@@ -1339,12 +1389,10 @@ BAD:
</p>
<p>
When printing to a string, consider using virBuffer for
incremental allocations, virAsprintf for a one-shot allocation,
and snprintf for fixed-width buffers. Do not use sprintf, even
if you can prove the buffer won't overflow, since gnulib does
not provide the same portability guarantees for sprintf as it
does for snprintf.
When printing to a string, consider using GString or virBuffer for
incremental allocations, g_strdup_printf for a one-shot allocation,
and g_snprintf for fixed-width buffers. Only use g_sprintf,
if you can prove the buffer won't overflow.
</p>
<h2><a id="errors">Error message format</a></h2>
@@ -1394,11 +1442,16 @@ BAD:
single label at the end of the function. It's almost always ok
to use this style. In particular, if the cleanup code only
involves free'ing memory, then having multiple labels is
overkill. VIR_FREE() and every function named XXXFree() in
libvirt is required to handle NULL as its arg. Thus you can
overkill. g_free() and most of the functions named XXXFree() in
libvirt is required to handle NULL as its arg. This does not
apply to libvirt's public APIs. Thus you can
safely call free on all the variables even if they were not yet
allocated (yes they have to have been initialized to NULL).
This is much simpler and clearer than having multiple labels.
Note that most of libvirt's type declarations can be marked with
either <code>g_autofree</code> or <code>g_autoptr</code> which uses
the compiler's <code>__attribute__((cleanup))</code> that calls
the appropriate free function when the variable goes out of scope.
</p>
<p>
@@ -1475,14 +1528,7 @@ int foo()
how things work, it's better
to wait for a more authoritative feedback though. Before committing, please
also rebuild locally, run 'make check syntax-check', and make sure you
don't raise errors. Try to look for warnings too; for example,
configure with
</p>
<pre>
--enable-compile-warnings=error
</pre>
<p>
which adds -Werror to compile flags, so no warnings get missed
don't raise errors.
</p>
<p>
@@ -1502,6 +1548,10 @@ int foo()
fixes for documentation and code comments can be managed
in the same way, but still make sure they get reviewed if non-trivial.
</li>
<li>(ir)regular pulls from other repositories or automated updates, such
as the .gnulib submodule updates, pulling in new translations or updating
the container images for the CI system
</li>
</ul>
</body>
</html>

View File

@@ -5,23 +5,24 @@ use warnings;
use File::Find;
die "syntax: $0 SRCDIR\n" unless int(@ARGV) == 1;
die "syntax: $0 SRCDIR BUILDDIR\n" unless int(@ARGV) == 2;
my $srcdir = shift @ARGV;
my $builddir = shift @ARGV;
my $symslibvirt = "$srcdir/libvirt_public.syms";
my $symsqemu = "$srcdir/libvirt_qemu.syms";
my $symslxc = "$srcdir/libvirt_lxc.syms";
my $symslibvirt = "$srcdir/src/libvirt_public.syms";
my $symsqemu = "$srcdir/src/libvirt_qemu.syms";
my $symslxc = "$srcdir/src/libvirt_lxc.syms";
my @drivertable = (
"$srcdir/driver-hypervisor.h",
"$srcdir/driver-interface.h",
"$srcdir/driver-network.h",
"$srcdir/driver-nodedev.h",
"$srcdir/driver-nwfilter.h",
"$srcdir/driver-secret.h",
"$srcdir/driver-state.h",
"$srcdir/driver-storage.h",
"$srcdir/driver-stream.h",
"$srcdir/src/driver-hypervisor.h",
"$srcdir/src/driver-interface.h",
"$srcdir/src/driver-network.h",
"$srcdir/src/driver-nodedev.h",
"$srcdir/src/driver-nwfilter.h",
"$srcdir/src/driver-secret.h",
"$srcdir/src/driver-state.h",
"$srcdir/src/driver-storage.h",
"$srcdir/src/driver-stream.h",
);
my %groupheaders = (
@@ -38,10 +39,10 @@ my %groupheaders = (
my @srcs;
find({
wanted => sub {
if (m!$srcdir/.*/\w+_(driver|common|tmpl|monitor|hal|udev)\.c$!) {
if (m!$srcdir/src/.*/\w+_(driver|common|tmpl|monitor|hal|udev)\.c$!) {
push @srcs, $_ if $_ !~ /vbox_driver\.c/;
}
}, no_chdir => 1}, $srcdir);
}, no_chdir => 1}, "$srcdir/src");
# Map API functions to the header and documentation files they're in
# so that we can generate proper hyperlinks to their documentation.
@@ -120,13 +121,13 @@ sub parseSymsFile {
my %apis;
# Get the list of all public APIs and their corresponding version
parseSymsFile(\%apis, "LIBVIRT", $symslibvirt, "$srcdir/../docs/libvirt-api.xml");
parseSymsFile(\%apis, "LIBVIRT", $symslibvirt, "$builddir/docs/libvirt-api.xml");
# And the same for the QEMU specific APIs
parseSymsFile(\%apis, "LIBVIRT_QEMU", $symsqemu, "$srcdir/../docs/libvirt-qemu-api.xml");
parseSymsFile(\%apis, "LIBVIRT_QEMU", $symsqemu, "$builddir/docs/libvirt-qemu-api.xml");
# And the same for the LXC specific APIs
parseSymsFile(\%apis, "LIBVIRT_LXC", $symslxc, "$srcdir/../docs/libvirt-lxc-api.xml");
parseSymsFile(\%apis, "LIBVIRT_LXC", $symslxc, "$builddir/docs/libvirt-lxc-api.xml");
# Some special things which aren't public APIs,

View File

@@ -100,18 +100,15 @@
</h2>
<p>The syntax for filters and outputs is the same for both types of
variables.</p>
<p>The format for a filter is one of:</p>
<p>The format for a filter is:</p>
<pre>
x:name (log message only)
x:+name (log message + stack trace)</pre>
x:name</pre>
<p>where <code>name</code> is a string which is matched against
the category given in the VIR_LOG_INIT() at the top of each
libvirt source file, e.g., <code>remote</code>, <code>qemu</code>,
or <code>util.json</code> (the name in the filter can be a
substring of the full category name, in order to match multiple
similar categories), the optional <code>+</code> prefix tells
libvirt to log stack trace for each message
matching <code>name</code>, and <code>x</code> is the minimal
similar categories), and <code>x</code> is the minimal
level where matching messages should be logged:</p>
<ul>
<li>1: DEBUG</li>

View File

@@ -22,7 +22,7 @@
<!-- Build keys for all symbols -->
<xsl:key name="symbols" match="/api/symbols/*" use="@name"/>
<xsl:param name="builddir" select="'..'"/>
<xsl:param name="indexfile" select="'index.html'"/>
<!-- the target directory for the HTML output -->
<xsl:variable name="htmldir">html</xsl:variable>
@@ -101,10 +101,10 @@
<td><a accesskey="p" href="libvirt-{$previous/@name}.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></img></a></td>
<th align="left"><a href="libvirt-{$previous/@name}.html"><xsl:value-of select="$previous/@name"/></a></th>
</xsl:if>
<td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></img></a></td>
<th align="left"><a href="index.html">API documentation</a></th>
<td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></img></a></td>
<th align="center"><a href="../index.html">The virtualization API</a></th>
<td><a accesskey="u" href="{$indexfile}"><img src="up.png" width="24" height="24" border="0" alt="Up"></img></a></td>
<th align="left"><a href="{$indexfile}">API documentation</a></th>
<td><a accesskey="h" href="../{$indexfile}"><img src="home.png" width="24" height="24" border="0" alt="Home"></img></a></td>
<th align="center"><a href="../{$indexfile}">The virtualization API</a></th>
<xsl:if test="$next">
<th align="right"><a href="libvirt-{$next/@name}.html"><xsl:value-of select="$next/@name"/></a></th>
<td><a accesskey="n" href="libvirt-{$next/@name}.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></img></a></td>
@@ -830,12 +830,12 @@
<xsl:call-template name="mainpage"/>
</xsl:variable>
<xsl:document
href="{concat($htmldir, '/index.html')}"
href="{concat($htmldir, '/', $indexfile)}"
method="xml"
indent="yes"
encoding="UTF-8">
<xsl:apply-templates select="exsl:node-set($mainpage)" mode="page">
<xsl:with-param name="pagename" select="concat($htmldir, '/index.html')"/>
<xsl:with-param name="pagename" select="concat($htmldir, '', $indexfile)"/>
<xsl:with-param name="timestamp" select="$timestamp"/>
</xsl:apply-templates>
</xsl:document>

View File

@@ -30,17 +30,222 @@
</section>
</release>
If relevant for a given release, add a section for removed
features too
If relevant for a given release, add a section for these too:
<section title="Packaging changes">
</section>
<section title="Removed features">
</section>
<section title="Security">
</section>
-->
<libvirt>
<release version="v5.8.0" date="unreleased">
<release version="v5.10.0" date="unreleased">
<section title="New features">
<change>
<summary>
qemu: Introduce support for ARM CPU features
</summary>
<description>
The only features supported at the moment are SVE vector lengths,
which were introduced in QEMU 4.2.0.
</description>
</change>
<change>
<summary>
qemu: Support boot display for GPU mediated devices
</summary>
<description>
Until now, GPU mediated devices generally did not show any output
until the guest OS had initialized the vGPU. By specifying the
<code>ramfb</code> attribute, QEMU can be configured to use ramfb as
a boot display for the device: this allows for display of firmware
messages, boot loader menu, and other output before the guest OS has
initialized the vGPU.
</description>
</change>
<change>
<summary>
Add API to change the response timeout for guest agent commands
</summary>
<description>
By default, when a command is sent to the guest agent, libvirt waits
forever for a response from the guest agent. If the guest is
unresponsive for any reason, this can block the calling thread
indefinitely. By setting a custom timeout using
<code>virDomainAgentSetResponseTimeout()</code>, API users can change
this behavior.
</description>
</change>
</section>
<section title="Improvements">
</section>
<section title="Bug fixes">
</section>
</release>
<release version="v5.9.0" date="2019-11-05">
<section title="Packaging changes">
<change>
<summary>
Start linking against GLib and using its features
</summary>
<description>
Up until now, libvirt has been dealing with platform portability and
the lack of certain features in libc by using gnulib and implementing
its own functions and data structures respectively; going forward, it
will prefer the facilities offered by GLib instead.
</description>
</change>
<change>
<summary>
Stop distributing generated documentation
</summary>
<description>
Most downstreams already patch the libvirt source to some extent, so
this change will probably not affect them.
</description>
</change>
<change>
<summary>
Rewrite several Perl scripts in Python
</summary>
<description>
Phasing out Perl usage is part of the project strategy.
</description>
</change>
</section>
<section title="New features">
<change>
<summary>
qemu: Introduce a new video model of type 'ramfb'
</summary>
<description>
Introduce a new video model type to the domain XML that supports the
<code>ramfb</code> standalone device in qemu.
</description>
</change>
<change>
<summary>
qemu: Implement the ccf-assist pSeries feature
</summary>
<description>
Users can now decide whether ccf-assist (Count Cache Flush Assist)
support should be available to pSeries guests.
</description>
</change>
<change>
<summary>
Xen: Support specifying ACPI firmware path
</summary>
<description>
The libxl driver now supports specifying an ACPI firmware path
using the <code>acpi</code> element.
</description>
</change>
<change>
<summary>
qemu: Support specifying resolution for video devices
</summary>
</change>
</section>
<section title="Removed features">
<change>
<summary>
logging: Drop support for including stack traces
</summary>
<description>
This feature was intended to aid debugging, but in practice it
resulted in logs that were too verbose to be useful and also resulted
in a significant performance penalty.
</description>
</change>
</section>
<section title="Improvements">
<change>
<summary>
qemu: Implement CPU comparison/baseline on s390x
</summary>
<description>
This functionality has been historically limited to x86_64, but it's
now available on s390x too.
</description>
</change>
</section>
<section title="Bug fixes">
<change>
<summary>
lib: autostart objects exactly once
</summary>
<description>
If libvirtd or any of the sub-daemons is started with socket
activation then objects might be autostarted more than once.
For instance, if a domain under <code> qemu:///session </code>
URI is mark as autostarted and the session daemon is started then the
domain is started with it. If user shuts the domain down and the
session daemon is started again, the user's wish to keep the
domain shut off is ignored and the domain is autostarted again.
This is now fixed.
</description>
</change>
<change>
<summary>
qemu: Properly advertise bochs-display availability
</summary>
<description>
Support for <code>bochs-display</code> was introduced in libvirt
5.6.0, but until now the model was not listed in the domain
capabilities.
</description>
</change>
<change>
<summary>
security: Don't remember labels for TPM devices
</summary>
<description>
Due to the way they're implemented in the kernel, trying to remember
labels for TPM devices makes it impossible to use them.
</description>
</change>
<change>
<summary>
security: Properly rollback after failure in a stacked driver
</summary>
<description>
When multiple security drivers are involved, failure in one of them
would result in only the corresponding changes being rolled back,
leaving the ones performed by drivers that had been activated earlier
in place. All changes are rolled back now.
</description>
</change>
<change>
<summary>
Fix build with musl libc
</summary>
</change>
<change>
<summary>
Improve compatibility with non-bash shells
</summary>
</change>
</section>
</release>
<release version="v5.8.0" date="2019-10-05">
<section title="New features">
<change>
<summary>
qemu: Support use of precreated tap/macvtap devices by unprivileged libvirtd
</summary>
<description>
It is now possible for an unprivileged libvirtd to make use
of tap and macvtap devices that were previously created by
some other entity. This is done by setting
<code>managed='no'</code> along with the device name in the
<code>target</code> subelement of <code>&lt;interface
type='ethernet'&gt;</code>.
</description>
</change>
</section>
<section title="Removed features">
<change>
@@ -54,10 +259,6 @@
</description>
</change>
</section>
<section title="Improvements">
</section>
<section title="Bug fixes">
</section>
</release>
<release version="v5.7.0" date="2019-09-03">
<section title="New features">

View File

@@ -7,6 +7,8 @@
exclude-result-prefixes="xsl exsl html"
version="1.0">
<xsl:param name="builddir" select="'..'"/>
<xsl:template match="node() | @*" mode="content">
<xsl:copy>
<xsl:apply-templates select="node() | @*" mode="content"/>
@@ -168,7 +170,7 @@
<xsl:template name="include">
<xsl:variable name="inchtml">
<xsl:copy-of select="document(@filename)"/>
<xsl:copy-of select="document(concat($builddir, '/docs/', @filename))"/>
</xsl:variable>
<xsl:apply-templates select="exsl:node-set($inchtml)/html:html/html:body/*" mode="content"/>

View File

@@ -24,6 +24,7 @@ import sys
COLUMNS = 80
def reformat_with_indent(text, initial_indent, indent):
res = ""

View File

@@ -546,6 +546,12 @@
<empty/>
</element>
</optional>
<optional>
<element name='hap'>
<ref name='featuretoggle'/>
<empty/>
</element>
</optional>
</interleave>
</element>
</define>

View File

@@ -207,6 +207,9 @@
<optional>
<ref name='vmgenid'/>
</optional>
<optional>
<ref name='backingStoreInput'/>
</optional>
<optional>
<ref name='sev'/>
</optional>
@@ -232,6 +235,12 @@
</element>
</define>
<define name='backingStoreInput'>
<element name='backingStoreInput'>
<ref name='supported'/>
</element>
</define>
<define name='sev'>
<element name='sev'>
<ref name='supported'/>

View File

@@ -3598,6 +3598,7 @@
<value>gop</value>
<value>none</value>
<value>bochs</value>
<value>ramfb</value>
</choice>
</attribute>
<group>
@@ -3655,6 +3656,16 @@
</optional>
</element>
</optional>
<optional>
<element name="resolution">
<attribute name="x">
<ref name="unsignedInt"/>
</attribute>
<attribute name="y">
<ref name="unsignedInt"/>
</attribute>
</element>
</optional>
</element>
</optional>
<optional>
@@ -4768,6 +4779,11 @@
<value>vfio-ap</value>
</choice>
</attribute>
<optional>
<attribute name="ramfb">
<ref name="virOnOff"/>
</attribute>
</optional>
<optional>
<attribute name="display">
<ref name="virOnOff"/>
@@ -5120,6 +5136,11 @@
<optional>
<ref name="msrs"/>
</optional>
<optional>
<element name="ccf-assist">
<ref name="featurestate"/>
</element>
</optional>
</interleave>
</element>
</optional>

View File

@@ -180,7 +180,8 @@
</p>
<pre>
./configure \
mkdir build &amp;&amp; cd build
../configure \
--without-sasl \
--without-polkit \
--without-python \

View File

@@ -86,7 +86,6 @@ parse_argv(int argc, char *argv[],
const char **dom_name,
unsigned int *seconds)
{
int ret = -1;
int arg;
unsigned long val;
char *p;
@@ -116,12 +115,12 @@ parse_argv(int argc, char *argv[],
val = strtoul(optarg, &p, 10);
if (errno || *p || p == optarg) {
ERROR("Invalid number: '%s'", optarg);
goto cleanup;
return -1;
}
*seconds = val;
if (*seconds != val) {
ERROR("Integer overflow: %ld", val);
goto cleanup;
return -1;
}
break;
case ':':
@@ -142,9 +141,7 @@ parse_argv(int argc, char *argv[],
if (argc > optind)
*dom_name = argv[optind];
ret = 0;
cleanup:
return ret;
return 0;
}
static int

View File

@@ -9,7 +9,7 @@
#include <libvirt/libvirt.h>
#include <libvirt/virterror.h>
#define ARRAY_CARDINALITY(Array) (sizeof(Array) / sizeof(*(Array)))
#define G_N_ELEMENTS(Array) (sizeof(Array) / sizeof(*(Array)))
#define STREQ(a, b) (strcmp(a, b) == 0)
#define NULLSTR(s) ((s) ? (s) : "<null>")
@@ -21,17 +21,17 @@
# define verify(cond)
#endif
#ifndef ATTRIBUTE_UNUSED
# define ATTRIBUTE_UNUSED __attribute__((__unused__))
#ifndef G_GNUC_UNUSED
# define G_GNUC_UNUSED __attribute__((__unused__))
#endif
int run = 1;
/* Callback functions */
static void
connectClose(virConnectPtr conn ATTRIBUTE_UNUSED,
connectClose(virConnectPtr conn G_GNUC_UNUSED,
int reason,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
run = 0;
@@ -404,11 +404,11 @@ secretEventToString(int event)
static int
myDomainEventCallback1(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventCallback1(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int event,
int detail,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) %s %s\n", __func__, virDomainGetName(dom),
virDomainGetID(dom), eventToString(event),
@@ -418,11 +418,11 @@ myDomainEventCallback1(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventCallback2(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventCallback2(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int event,
int detail,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) %s %s\n", __func__, virDomainGetName(dom),
virDomainGetID(dom), eventToString(event),
@@ -432,9 +432,9 @@ myDomainEventCallback2(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventRebootCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventRebootCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) rebooted\n", __func__, virDomainGetName(dom),
virDomainGetID(dom));
@@ -444,10 +444,10 @@ myDomainEventRebootCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventRTCChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventRTCChangeCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
long long offset,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) rtc change %" PRIdMAX "\n",
__func__, virDomainGetName(dom), virDomainGetID(dom),
@@ -458,10 +458,10 @@ myDomainEventRTCChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventBalloonChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventBalloonChangeCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
unsigned long long actual,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) balloon change %" PRIuMAX "KB\n",
__func__, virDomainGetName(dom), virDomainGetID(dom), (uintmax_t)actual);
@@ -471,10 +471,10 @@ myDomainEventBalloonChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventWatchdogCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventWatchdogCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int action,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) watchdog action=%d\n", __func__,
virDomainGetName(dom), virDomainGetID(dom), action);
@@ -484,12 +484,12 @@ myDomainEventWatchdogCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventIOErrorCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventIOErrorCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *srcPath,
const char *devAlias,
int action,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) io error path=%s alias=%s action=%d\n",
__func__, virDomainGetName(dom), virDomainGetID(dom),
@@ -500,13 +500,13 @@ myDomainEventIOErrorCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventIOErrorReasonCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventIOErrorReasonCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *srcPath,
const char *devAlias,
int action,
const char *reason,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) io error (reason) path=%s alias=%s "
"action=%d reason=%s\n",
@@ -539,14 +539,14 @@ graphicsPhaseToStr(int phase)
static int
myDomainEventGraphicsCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventGraphicsCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int phase,
virDomainEventGraphicsAddressPtr local,
virDomainEventGraphicsAddressPtr remote,
const char *authScheme,
virDomainEventGraphicsSubjectPtr subject,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
size_t i;
printf("%s EVENT: Domain %s(%d) graphics ", __func__, virDomainGetName(dom),
@@ -572,9 +572,9 @@ myDomainEventGraphicsCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventControlErrorCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventControlErrorCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) control error\n", __func__,
virDomainGetName(dom), virDomainGetID(dom));
@@ -601,13 +601,13 @@ diskChangeReasonToStr(int reason)
static int
myDomainEventDiskChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventDiskChangeCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *oldSrcPath,
const char *newSrcPath,
const char *devAlias,
int reason,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) disk change oldSrcPath: %s newSrcPath: %s "
"devAlias: %s reason: %s\n",
@@ -635,11 +635,11 @@ trayChangeReasonToStr(int reason)
static int
myDomainEventTrayChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventTrayChangeCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *devAlias,
int reason,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) removable disk's tray change devAlias: %s "
"reason: %s\n",
@@ -650,10 +650,10 @@ myDomainEventTrayChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventPMWakeupCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventPMWakeupCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int reason ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED)
int reason G_GNUC_UNUSED,
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) system pmwakeup\n",
__func__, virDomainGetName(dom), virDomainGetID(dom));
@@ -662,10 +662,10 @@ myDomainEventPMWakeupCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventPMSuspendCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventPMSuspendCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int reason ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED)
int reason G_GNUC_UNUSED,
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) system pmsuspend\n",
__func__, virDomainGetName(dom), virDomainGetID(dom));
@@ -674,10 +674,10 @@ myDomainEventPMSuspendCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventPMSuspendDiskCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventPMSuspendDiskCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int reason ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED)
int reason G_GNUC_UNUSED,
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) system pmsuspend-disk\n",
__func__, virDomainGetName(dom), virDomainGetID(dom));
@@ -686,10 +686,10 @@ myDomainEventPMSuspendDiskCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventDeviceRemovedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventDeviceRemovedCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *devAlias,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) device removed: %s\n",
__func__, virDomainGetName(dom), virDomainGetID(dom), devAlias);
@@ -698,11 +698,11 @@ myDomainEventDeviceRemovedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myNetworkEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myNetworkEventCallback(virConnectPtr conn G_GNUC_UNUSED,
virNetworkPtr dom,
int event,
int detail,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Network %s %s %d\n", __func__, virNetworkGetName(dom),
networkEventToString(event), detail);
@@ -710,11 +710,11 @@ myNetworkEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
}
static int
myStoragePoolEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myStoragePoolEventCallback(virConnectPtr conn G_GNUC_UNUSED,
virStoragePoolPtr pool,
int event,
int detail,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Storage pool %s %s %d\n", __func__,
virStoragePoolGetName(pool),
@@ -725,9 +725,9 @@ myStoragePoolEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myStoragePoolEventRefreshCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myStoragePoolEventRefreshCallback(virConnectPtr conn G_GNUC_UNUSED,
virStoragePoolPtr pool,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Storage pool %s refresh\n", __func__,
virStoragePoolGetName(pool));
@@ -736,11 +736,11 @@ myStoragePoolEventRefreshCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myNodeDeviceEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myNodeDeviceEventCallback(virConnectPtr conn G_GNUC_UNUSED,
virNodeDevicePtr dev,
int event,
int detail,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Node device %s %s %d\n", __func__,
virNodeDeviceGetName(dev),
@@ -751,9 +751,9 @@ myNodeDeviceEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myNodeDeviceEventUpdateCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myNodeDeviceEventUpdateCallback(virConnectPtr conn G_GNUC_UNUSED,
virNodeDevicePtr dev,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Node device %s update\n", __func__,
virNodeDeviceGetName(dev));
@@ -762,11 +762,11 @@ myNodeDeviceEventUpdateCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
mySecretEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
mySecretEventCallback(virConnectPtr conn G_GNUC_UNUSED,
virSecretPtr secret,
int event,
int detail,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
char uuid[VIR_UUID_STRING_BUFLEN];
virSecretGetUUIDString(secret, uuid);
@@ -779,9 +779,9 @@ mySecretEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
mySecretEventValueChanged(virConnectPtr conn ATTRIBUTE_UNUSED,
mySecretEventValueChanged(virConnectPtr conn G_GNUC_UNUSED,
virSecretPtr secret,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
char uuid[VIR_UUID_STRING_BUFLEN];
virSecretGetUUIDString(secret, uuid);
@@ -829,11 +829,11 @@ eventTypedParamsPrint(virTypedParameterPtr params,
static int
myDomainEventTunableCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventTunableCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
virTypedParameterPtr params,
int nparams,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) tunable updated:\n",
__func__, virDomainGetName(dom), virDomainGetID(dom));
@@ -845,11 +845,11 @@ myDomainEventTunableCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventAgentLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventAgentLifecycleCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int state,
int reason,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) guest agent state changed: %s reason: %s\n",
__func__, virDomainGetName(dom), virDomainGetID(dom),
@@ -861,10 +861,10 @@ myDomainEventAgentLifecycleCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventDeviceAddedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventDeviceAddedCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *devAlias,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) device added: %s\n",
__func__, virDomainGetName(dom), virDomainGetID(dom), devAlias);
@@ -922,7 +922,7 @@ blockJobStatusToStr(int status)
static int
myDomainEventBlockJobCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventBlockJobCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *disk,
int type,
@@ -940,13 +940,13 @@ myDomainEventBlockJobCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventBlockThresholdCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventBlockThresholdCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *dev,
const char *path,
unsigned long long threshold,
unsigned long long excess,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
/* Casts to uint64_t to work around mingw not knowing %lld */
printf("%s EVENT: Domain %s(%d) block threshold callback dev '%s'(%s), "
@@ -958,10 +958,10 @@ myDomainEventBlockThresholdCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventMigrationIterationCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventMigrationIterationCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int iteration,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) migration iteration '%d'\n",
__func__, virDomainGetName(dom), virDomainGetID(dom), iteration);
@@ -970,11 +970,11 @@ myDomainEventMigrationIterationCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventJobCompletedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventJobCompletedCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
virTypedParameterPtr params,
int nparams,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) job completed:\n",
__func__, virDomainGetName(dom), virDomainGetID(dom));
@@ -986,10 +986,10 @@ myDomainEventJobCompletedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
static int
myDomainEventDeviceRemovalFailedCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventDeviceRemovalFailedCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
const char *devAlias,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
printf("%s EVENT: Domain %s(%d) device removal failed: %s\n",
__func__, virDomainGetName(dom), virDomainGetID(dom), devAlias);
@@ -1018,11 +1018,11 @@ metadataTypeToStr(int status)
}
static int
myDomainEventMetadataChangeCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
myDomainEventMetadataChangeCallback(virConnectPtr conn G_GNUC_UNUSED,
virDomainPtr dom,
int type,
const char *nsuri,
void *opaque ATTRIBUTE_UNUSED)
void *opaque G_GNUC_UNUSED)
{
const char *typestr = metadataTypeToStr(type);
printf("%s EVENT: Domain %s(%d) metadata type: %s (%s)\n",
@@ -1135,10 +1135,10 @@ struct secretEventData secretEvents[] = {
};
/* make sure that the events are kept in sync */
verify(ARRAY_CARDINALITY(domainEvents) == VIR_DOMAIN_EVENT_ID_LAST);
verify(ARRAY_CARDINALITY(storagePoolEvents) == VIR_STORAGE_POOL_EVENT_ID_LAST);
verify(ARRAY_CARDINALITY(nodeDeviceEvents) == VIR_NODE_DEVICE_EVENT_ID_LAST);
verify(ARRAY_CARDINALITY(secretEvents) == VIR_SECRET_EVENT_ID_LAST);
verify(G_N_ELEMENTS(domainEvents) == VIR_DOMAIN_EVENT_ID_LAST);
verify(G_N_ELEMENTS(storagePoolEvents) == VIR_STORAGE_POOL_EVENT_ID_LAST);
verify(G_N_ELEMENTS(nodeDeviceEvents) == VIR_NODE_DEVICE_EVENT_ID_LAST);
verify(G_N_ELEMENTS(secretEvents) == VIR_SECRET_EVENT_ID_LAST);
int
main(int argc, char **argv)
@@ -1190,7 +1190,7 @@ main(int argc, char **argv)
strdup("callback 1"), myFreeFunc);
/* register common domain callbacks */
for (i = 0; i < ARRAY_CARDINALITY(domainEvents); i++) {
for (i = 0; i < G_N_ELEMENTS(domainEvents); i++) {
struct domainEventData *event = domainEvents + i;
event->id = virConnectDomainEventRegisterAny(dconn, NULL,
@@ -1212,7 +1212,7 @@ main(int argc, char **argv)
strdup("net callback"), myFreeFunc);
/* register common storage pool callbacks */
for (i = 0; i < ARRAY_CARDINALITY(storagePoolEvents); i++) {
for (i = 0; i < G_N_ELEMENTS(storagePoolEvents); i++) {
struct storagePoolEventData *event = storagePoolEvents + i;
event->id = virConnectStoragePoolEventRegisterAny(dconn, NULL,
@@ -1228,7 +1228,7 @@ main(int argc, char **argv)
}
/* register common node device callbacks */
for (i = 0; i < ARRAY_CARDINALITY(nodeDeviceEvents); i++) {
for (i = 0; i < G_N_ELEMENTS(nodeDeviceEvents); i++) {
struct nodeDeviceEventData *event = nodeDeviceEvents + i;
event->id = virConnectNodeDeviceEventRegisterAny(dconn, NULL,
@@ -1244,7 +1244,7 @@ main(int argc, char **argv)
}
/* register common secret callbacks */
for (i = 0; i < ARRAY_CARDINALITY(secretEvents); i++) {
for (i = 0; i < G_N_ELEMENTS(secretEvents); i++) {
struct secretEventData *event = secretEvents + i;
event->id = virConnectSecretEventRegisterAny(dconn, NULL,
@@ -1282,27 +1282,27 @@ main(int argc, char **argv)
printf("Deregistering domain event callbacks\n");
for (i = 0; i < ARRAY_CARDINALITY(domainEvents); i++) {
for (i = 0; i < G_N_ELEMENTS(domainEvents); i++) {
if (domainEvents[i].id > 0)
virConnectDomainEventDeregisterAny(dconn, domainEvents[i].id);
}
printf("Deregistering storage pool event callbacks\n");
for (i = 0; i < ARRAY_CARDINALITY(storagePoolEvents); i++) {
for (i = 0; i < G_N_ELEMENTS(storagePoolEvents); i++) {
if (storagePoolEvents[i].id > 0)
virConnectStoragePoolEventDeregisterAny(dconn, storagePoolEvents[i].id);
}
printf("Deregistering node device event callbacks\n");
for (i = 0; i < ARRAY_CARDINALITY(nodeDeviceEvents); i++) {
for (i = 0; i < G_N_ELEMENTS(nodeDeviceEvents); i++) {
if (nodeDeviceEvents[i].id > 0)
virConnectNodeDeviceEventDeregisterAny(dconn, nodeDeviceEvents[i].id);
}
printf("Deregistering secret event callbacks\n");
for (i = 0; i < ARRAY_CARDINALITY(secretEvents); i++) {
for (i = 0; i < G_N_ELEMENTS(secretEvents); i++) {
if (secretEvents[i].id > 0)
virConnectSecretEventDeregisterAny(dconn, secretEvents[i].id);
}

View File

@@ -23,6 +23,7 @@ EmailMap docs/gitdm/companies/others
GroupMap docs/gitdm/companies/canonical Canonical
GroupMap docs/gitdm/companies/datto Datto
GroupMap docs/gitdm/companies/dreamhost DreamHost
GroupMap docs/gitdm/companies/ibm IBM
GroupMap docs/gitdm/companies/nec NEC
GroupMap docs/gitdm/companies/redhat Red Hat
GroupMap docs/gitdm/companies/suse SUSE

View File

@@ -20,7 +20,7 @@ virincdir = $(includedir)/libvirt
allheaders = $(wildcard $(srcdir)/*.h)
virinc_HEADERS = $(filter-out $(srcdir)/libvirt-common.h, $(allheaders))
virinc_HEADERS += libvirt-common.h
nodist_virinc_HEADERS = libvirt-common.h
EXTRA_DIST = libvirt-common.h.in

View File

@@ -4916,4 +4916,14 @@ int virDomainGetGuestInfo(virDomainPtr domain,
int *nparams,
unsigned int flags);
typedef enum {
VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_BLOCK = -2,
VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_DEFAULT = -1,
VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_NOWAIT = 0,
} virDomainAgentResponseTimeoutValues;
int virDomainAgentSetResponseTimeout(virDomainPtr domain,
int timeout,
unsigned int flags);
#endif /* LIBVIRT_DOMAIN_H */

View File

@@ -43,10 +43,10 @@ virDomainPtr virDomainQemuAttach(virConnectPtr domain,
unsigned int flags);
typedef enum {
VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN = -2,
VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK = -2,
VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT = -1,
VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = 0,
VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN = VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_BLOCK,
VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK = VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_BLOCK,
VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT = VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_DEFAULT,
VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_NOWAIT,
VIR_DOMAIN_QEMU_AGENT_COMMAND_SHUTDOWN = 60,
} virDomainQemuAgentCommandTimeoutValues;

View File

@@ -135,6 +135,7 @@ typedef enum {
VIR_FROM_DOMAIN_CHECKPOINT = 69, /* Error from domain checkpoint */
VIR_FROM_TPM = 70, /* Error from TPM */
VIR_FROM_BPF = 71, /* Error from BPF code */
# ifdef VIR_ENUM_SENTINELS
VIR_ERR_DOMAIN_LAST

View File

@@ -36,6 +36,11 @@
%define qemu_kvm_arches x86_64 %{power64} aarch64 s390x
%endif
# On RHEL 7 and older macro _vpath_builddir is not defined.
%if 0%{?rhel} <= 7
%define _vpath_builddir %{_target_platform}
%endif
%ifarch %{qemu_kvm_arches}
%define with_qemu_kvm %{with_qemu}
%else
@@ -273,6 +278,7 @@ BuildRequires: systemd-units
%if %{with_libxl}
BuildRequires: xen-devel
%endif
BuildRequires: glib2-devel >= 2.48
BuildRequires: libxml2-devel
BuildRequires: libxslt
BuildRequires: readline-devel
@@ -1125,34 +1131,6 @@ exit 1
%define arg_selinux_mount --with-selinux-mount="/sys/fs/selinux"
%if 0%{?fedora}
# Nightly edk2.git-ovmf-x64
LOADERS="/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd:/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd"
# Nightly edk2.git-ovmf-ia32
LOADERS="$LOADERS:/usr/share/edk2.git/ovmf-ia32/OVMF_CODE-pure-efi.fd:/usr/share/edk2.git/ovmf-ia32/OVMF_VARS-pure-efi.fd"
# Nightly edk2.git-aarch64
LOADERS="$LOADERS:/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"
# Nightly edk2.git-arm
LOADERS="$LOADERS:/usr/share/edk2.git/arm/QEMU_EFI-pflash.raw:/usr/share/edk2.git/arm/vars-template-pflash.raw"
# Fedora edk2-ovmf, x86_64
LOADERS="$LOADERS:/usr/share/edk2/ovmf/OVMF_CODE.fd:/usr/share/edk2/ovmf/OVMF_VARS.fd"
# Fedora edk2-ovmf, x86_64, with Secure Boot
LOADERS="$LOADERS:/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd:/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd"
# Fedora edk2-ovmf-ia32
LOADERS="$LOADERS:/usr/share/edk2/ovmf-ia32/OVMF_CODE.fd:/usr/share/edk2/ovmf-ia32/OVMF_VARS.fd"
# Fedora edk2-ovmf-ia32, with Secure Boot. (NB: Unlike x86_64, for
# 'ia32', there is no secboot-variant "VARS" file (NVRAM template).
# So the NVRAM template for 'ovmf-ia32/OVMF_CODE.secboot.fd' is the
# same as the one for the non-secboot variant.)
LOADERS="$LOADERS:/usr/share/edk2/ovmf-ia32/OVMF_CODE.secboot.fd:/usr/share/edk2/ovmf-ia32/OVMF_VARS.fd"
# Fedora edk2-aarch64
LOADERS="$LOADERS:/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2/aarch64/vars-template-pflash.raw"
# Fedora edk2-arm
LOADERS="$LOADERS:/usr/share/edk2/arm/QEMU_EFI-pflash.raw:/usr/share/edk2/arm/vars-template-pflash.raw"
%define arg_loader_nvram --with-loader-nvram="$LOADERS"
%endif
# place macros above and build commands below this comment
export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/%{name}.spec)
@@ -1162,7 +1140,13 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/%{name}.spec)
%endif
rm -f po/stamp-po
%configure --with-runstatedir=%{_rundir} \
%define _configure ../configure
mkdir %{_vpath_builddir}
cd %{_vpath_builddir}
%configure --enable-dependency-tracking \
--with-runstatedir=%{_rundir} \
%{?arg_qemu} \
%{?arg_openvz} \
%{?arg_lxc} \
@@ -1219,7 +1203,6 @@ rm -f po/stamp-po
--with-qemu-user=%{qemu_user} \
--with-qemu-group=%{qemu_group} \
--with-tls-priority=%{tls_priority} \
%{?arg_loader_nvram} \
%{?enable_werror} \
--enable-expensive-tests \
--with-init-script=systemd \
@@ -1231,6 +1214,7 @@ rm -fr %{buildroot}
export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/%{name}.spec)
cd %{_vpath_builddir}
%make_install %{?_smp_mflags} SYSTEMD_UNIT_DIR=%{_unitdir} V=1
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
@@ -1312,6 +1296,7 @@ mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
%endif
%check
cd %{_vpath_builddir}
if ! make %{?_smp_mflags} check VIR_TEST_DEBUG=1
then
cat test-suite.log || true
@@ -1523,7 +1508,7 @@ exit 0
%files docs
%doc AUTHORS ChangeLog NEWS README README.md
%doc libvirt-docs/*
%doc %{_vpath_builddir}/libvirt-docs/*
%files daemon
@@ -1883,7 +1868,7 @@ exit 0
%config(noreplace) %{_sysconfdir}/sysconfig/libvirt-guests
%attr(0755, root, root) %{_libexecdir}/libvirt-guests.sh
%files libs -f %{name}.lang
%files libs -f %{_vpath_builddir}/%{name}.lang
%license COPYING COPYING.LESSER
%config(noreplace) %{_sysconfdir}/libvirt/libvirt.conf
%config(noreplace) %{_sysconfdir}/libvirt/libvirt-admin.conf

View File

@@ -51,8 +51,6 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
dontwarn="$dontwarn -Wstrict-overflow"
# Not a problem since we don't use -funsafe-loop-optimizations
dontwarn="$dontwarn -Wunsafe-loop-optimizations"
# Things like virAsprintf mean we can't use this
dontwarn="$dontwarn -Wformat-nonliteral"
# Gnulib's stat-time.h violates this
dontwarn="$dontwarn -Waggregate-return"
# gcc 4.4.6 complains this is C++ only; gcc 4.7.0 implies this from -Wall
@@ -67,6 +65,8 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
# > to handle the code effectively.
# Source: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
dontwarn="$dontwarn -Wdisabled-optimization"
# Various valid glib APIs/macros trigger this warning
dontwarn="$dontwarn -Wbad-function-cast"
# Broken in 6.0 and later
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69602
@@ -102,6 +102,20 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
dontwarn="$dontwarn -Wdouble-promotion"
fi
# Clang complains about unused static inline functions
# which are common with G_DEFINE_AUTOPTR_CLEANUP_FUNC
AC_CACHE_CHECK([whether clang gives bogus warnings for -Wunused-function],
[lv_cv_clang_unused_function_broken], [
save_CFLAGS="$CFLAGS"
CFLAGS="-Wunused-function -Werror"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
static inline void foo(void) {}
]], [[
return 0]])],
[lv_cv_clang_unused_function_broken=no],
[lv_cv_clang_unused_function_broken=yes])
CFLAGS="$save_CFLAGS"])
# We might fundamentally need some of these disabled forever, but
# ideally we'd turn many of them on
dontwarn="$dontwarn -Wfloat-equal"
@@ -110,6 +124,7 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
dontwarn="$dontwarn -Wunused-macros"
dontwarn="$dontwarn -Woverlength-strings"
dontwarn="$dontwarn -Wstack-protector"
dontwarn="$dontwarn -Wsuggest-attribute=malloc"
# Get all possible GCC warnings
gl_MANYWARN_ALL_GCC([maybewarn])
@@ -117,6 +132,13 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
# Remove the ones we don't want, blacklisted earlier
gl_MANYWARN_COMPLEMENT([wantwarn], [$maybewarn], [$dontwarn])
# -Wunused-functin is implied by -Wall we must turn it
# off explicitly.
if test "$lv_cv_clang_unused_function_broken" = "yes";
then
wantwarn="$wantwarn -Wno-unused-function"
fi
# GNULIB uses '-W' (aka -Wextra) which includes a bunch of stuff.
# Unfortunately, this means you can't simply use '-Wsign-compare'
# with gl_MANYWARN_COMPLEMENT
@@ -125,6 +147,10 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
# We do "bad" function casts all the time for event callbacks
wantwarn="$wantwarn -Wno-cast-function-type"
# CLang incorrectly complains about dup typedefs win gnu99 mode
# so use this CLang-specific arg to keep it quiet
wantwarn="$wantwarn -Wno-typedef-redefinition"
# GNULIB expects this to be part of -Wc++-compat, but we turn
# that one off, so we need to manually enable this again
wantwarn="$wantwarn -Wjump-misses-init"
@@ -189,6 +215,11 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
wantwarn="$wantwarn -Werror"
fi
# Request the gnu99 standard which is the best choice with
# gcc 4.8.0. Not a warning flag, but the probing mechanism
# is convenient
wantwarn="$wantwarn -std=gnu99"
# Check for $CC support of each warning
for w in $wantwarn; do
gl_WARN_ADD([$w])

View File

@@ -51,9 +51,6 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_BHYVE],[
AM_CONDITIONAL([WITH_BHYVE], [test "$with_bhyve" = "yes"])
])
dnl Build with gnulib's getopt which contains a reentrant interface
AC_DEFUN([gl_REPLACE_GETOPT_ALWAYS], [])
AC_DEFUN([LIBVIRT_DRIVER_RESULT_BHYVE],[
LIBVIRT_RESULT([Bhyve], [$with_bhyve])
])

View File

@@ -36,23 +36,6 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_LIBXL], [
LIBXL_EXECBIN_DIR=$($PKG_CONFIG --variable libexec_bin xenlight)
fi
dnl In Fedora <= 28, the xenlight pkgconfig file is in the -runtime package
dnl https://bugzilla.redhat.com/show_bug.cgi?id=1629643
dnl Until Fedora 28 reaches EOL, fallback to lib probe if xenlight.pc is
dnl not found
if test "x$with_libxl" = "xno" ; then
with_libxl="$old_with_libxl"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $LIBXL_API_VERSION"
LIBVIRT_CHECK_LIB([LIBXL], [xenlight], [libxl_cpupool_cpuadd_cpumap], [libxl.h], [fail="1"])
CFLAGS="$save_CFLAGS"
if test $fail = 1; then
AC_MSG_ERROR([You must install the libxl Library from Xen >= 4.6 to compile libxenlight driver with -lxl])
fi
fi
if test "$with_libxl" = "yes"; then
LIBXL_CFLAGS="$LIBXL_CFLAGS $LIBXL_API_VERSION"

36
m4/virt-glib.m4 Normal file
View File

@@ -0,0 +1,36 @@
dnl The glib.so library
dnl
dnl Copyright (C) 2016 Red Hat, Inc.
dnl
dnl This library is free software; you can redistribute it and/or
dnl modify it under the terms of the GNU Lesser General Public
dnl License as published by the Free Software Foundation; either
dnl version 2.1 of the License, or (at your option) any later version.
dnl
dnl This library is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
dnl Lesser General Public License for more details.
dnl
dnl You should have received a copy of the GNU Lesser General Public
dnl License along with this library. If not, see
dnl <http://www.gnu.org/licenses/>.
dnl
AC_DEFUN([LIBVIRT_ARG_GLIB], [
LIBVIRT_ARG_WITH([GLIB], [glib-2.0 location], [check])
])
AC_DEFUN([LIBVIRT_CHECK_GLIB],[
GLIB_REQUIRED=2.48.0
LIBVIRT_CHECK_PKG([GLIB], [glib-2.0 gobject-2.0], [$GLIB_REQUIRED])
if test "$with_glib" = "no" ; then
AC_MSG_ERROR([glib-2.0, gobject-2.0 >= $GLIB_REQUIRED are required for libvirt])
fi
])
AC_DEFUN([LIBVIRT_RESULT_GLIB], [
LIBVIRT_RESULT_LIB([GLIB])
])

View File

@@ -18,56 +18,22 @@ dnl <http://www.gnu.org/licenses/>.
dnl
AC_DEFUN([LIBVIRT_CHECK_LIBNL], [
AC_REQUIRE([LIBVIRT_CHECK_NETCF])
AC_REQUIRE([LIBVIRT_CHECK_MACVTAP])
LIBNL_REQUIRED="1.1"
with_libnl=no
if test "$with_linux" = "yes"; then
# When linking with netcf, we must ensure that we pick the same version
# of libnl that netcf picked. Prefer libnl-3 unless we can prove
# netcf linked against libnl-1, or unless the user set LIBNL_CFLAGS.
# (Setting LIBNL_CFLAGS is already used by PKG_CHECK_MODULES to
# override any probing, so if it set, you know which libnl is in use.)
libnl_ldd=
for dir in /usr/lib64 /usr/lib /usr/lib/*-linux-gnu*; do
if test -f $dir/libnetcf.so; then
libnl_ldd=`(ldd $dir/libnetcf.so) 2>&1`
break
fi
done
case $libnl_ldd:${LIBNL_CFLAGS+set} in
*libnl-3.so.*:) LIBNL_REQUIRED=3.0 ;;
esac
case $libnl_ldd:${LIBNL_CFLAGS+set} in
*libnl.so.1*:) ;;
*)
PKG_CHECK_MODULES([LIBNL], [libnl-3.0], [
with_libnl=yes
AC_DEFINE([HAVE_LIBNL3], [1], [Use libnl-3.0])
AC_DEFINE([HAVE_LIBNL], [1], [whether the netlink library is available])
PKG_CHECK_MODULES([LIBNL_ROUTE3], [libnl-route-3.0])
LIBNL_CFLAGS="$LIBNL_CFLAGS $LIBNL_ROUTE3_CFLAGS"
LIBNL_LIBS="$LIBNL_LIBS $LIBNL_ROUTE3_LIBS"
], [:]) ;;
esac
if test "$with_libnl" = no; then
PKG_CHECK_MODULES([LIBNL], [libnl-1 >= $LIBNL_REQUIRED], [
with_libnl=yes
AC_DEFINE_UNQUOTED([HAVE_LIBNL], [1],
[whether the netlink library is available])
AC_DEFINE_UNQUOTED([HAVE_LIBNL1], [1],
[whether the netlink v1 library is available])
], [
if test "$with_macvtap" = "yes"; then
if test "$LIBNL_REQUIRED" = "3.0";then
AC_MSG_ERROR([libnl3-devel >= $LIBNL_REQUIRED is required for macvtap support])
else
AC_MSG_ERROR([libnl-devel >= $LIBNL_REQUIRED is required for macvtap support])
fi
fi
])
PKG_CHECK_MODULES([LIBNL], [libnl-3.0], [
with_libnl=yes
AC_DEFINE([HAVE_LIBNL], [1], [whether the netlink library is available])
PKG_CHECK_MODULES([LIBNL_ROUTE], [libnl-route-3.0])
LIBNL_CFLAGS="$LIBNL_CFLAGS $LIBNL_ROUTE_CFLAGS"
LIBNL_LIBS="$LIBNL_LIBS $LIBNL_ROUTE_LIBS"
], [:])
fi
if test "$with_libnl" = no; then
if test "$with_macvtap" = "yes"; then
AC_MSG_ERROR([libnl3-devel is required for macvtap support])
fi
fi
AM_CONDITIONAL([HAVE_LIBNL], [test "$with_libnl" = "yes"])

View File

@@ -30,6 +30,8 @@ AC_DEFUN([LIBVIRT_CHECK_LOADER_NVRAM], [
l=$(echo $with_loader_nvram | tr ':' '\n' | wc -l)
if test $(expr $l % 2) -ne 0 ; then
AC_MSG_ERROR([Malformed --with-loader-nvram argument])
elif test $l -gt 0 ; then
AC_MSG_WARN([Note that --with-loader-nvram is obsolete and will be removed soon])
fi
AC_DEFINE_UNQUOTED([DEFAULT_LOADER_NVRAM], ["$with_loader_nvram"],
[List of loader:nvram pairs])
@@ -37,5 +39,11 @@ AC_DEFUN([LIBVIRT_CHECK_LOADER_NVRAM], [
])
AC_DEFUN([LIBVIRT_RESULT_LOADER_NVRAM], [
LIBVIRT_RESULT([Loader/NVRAM], [$with_loader_nvram])
if test "x$with_loader_nvram" != "xno" && \
test "x$with_loader_nvram" != "x" ; then
LIBVIRT_RESULT([Loader/NVRAM], [$with_loader_nvram],
[!!! Using this configure option is strongly discouraged !!!])
else
LIBVIRT_RESULT([Loader/NVRAM], [$with_loader_nvram])
fi
])

View File

@@ -18,25 +18,11 @@ dnl <http://www.gnu.org/licenses/>.
dnl
AC_DEFUN([LIBVIRT_ARG_NETCF],[
LIBVIRT_ARG_WITH_FEATURE([NETCF], [netcf], [check], [0.1.4])
LIBVIRT_ARG_WITH_FEATURE([NETCF], [netcf], [check], [0.1.8])
])
AC_DEFUN([LIBVIRT_CHECK_NETCF],[
LIBVIRT_CHECK_PKG([NETCF], [netcf], [0.1.4])
if test "$with_netcf" = "yes" ; then
old_CFLAGS="$CFLAGS"
old_LIBS="$LIBS"
CFLAGS="$CFLAGS $NETCF_CFLAGS"
LIBS="$LIBS $NETCF_LIBS"
AC_CHECK_FUNC([ncf_change_begin], [netcf_transactions=1], [netcf_transactions=0])
if test "$netcf_transactions" = "1" ; then
AC_DEFINE_UNQUOTED([HAVE_NETCF_TRANSACTIONS], [1],
[we have sufficiently new version of netcf for transaction network API])
fi
CFLAGS="$old_CFLAGS"
LIBS="$old_LIBS"
fi
LIBVIRT_CHECK_PKG([NETCF], [netcf], [0.1.8])
])
AC_DEFUN([LIBVIRT_RESULT_NETCF],[

View File

@@ -26,7 +26,7 @@ AC_DEFUN([LIBVIRT_CHECK_NLS],[
then
AC_CHECK_FUNC([gettext], [], [
AC_CHECK_LIB([intl], [gettext], [], [
if test "x$enable_nls" == "xcheck"
if test "x$enable_nls" = "xcheck"
then
enable_nls=no
else
@@ -39,7 +39,7 @@ AC_DEFUN([LIBVIRT_CHECK_NLS],[
if test "x$enable_nls" != "xno"
then
AC_CHECK_HEADERS([libintl.h], [enable_nls=yes],[
if test "x$enable_nls" == "xcheck"
if test "x$enable_nls" = "xcheck"
then
enable_nls=no
else

View File

@@ -27,20 +27,8 @@ AC_DEFUN([LIBVIRT_CHECK_SELINUX],[
[fgetfilecon_raw], [selinux/selinux.h])
if test "$with_selinux" = "yes"; then
# libselinux changed signatures between 2.2 and 2.3
AC_CACHE_CHECK([for selinux setcon parameter type], [lv_cv_setcon_const],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <selinux/selinux.h>
int setcon(char *context);
]])],
[lv_cv_setcon_const=''],
[lv_cv_setcon_const='const'])])
AC_DEFINE_UNQUOTED([VIR_SELINUX_CTX_CONST], [$lv_cv_setcon_const],
[Define to empty or 'const' depending on how SELinux qualifies its
security context parameters])
# ...and again for 2.5
# libselinux changed signatures for 2.5
# TODO: Drop once we don't support Ubuntu 16.04
AC_CACHE_CHECK([for selinux selabel_open parameter type],
[lv_cv_selabel_open_const],
[AC_COMPILE_IFELSE(
@@ -68,10 +56,6 @@ struct selabel_handle *selabel_open(unsigned, struct selinux_opt *, unsigned);
fi
AC_MSG_RESULT([$SELINUX_MOUNT])
AC_DEFINE_UNQUOTED([SELINUX_MOUNT], ["$SELINUX_MOUNT"], [SELinux mount point])
dnl We prefer to use <selinux/label.h> and selabel_open, but can fall
dnl back to matchpathcon for the sake of RHEL 5's version of libselinux.
AC_CHECK_HEADERS([selinux/label.h])
fi
])

View File

@@ -19,7 +19,7 @@ dnl
AC_DEFUN([LIBVIRT_WIN_CHECK_SYMBOLS], [
LIBVIRT_SYMBOL_FILE=libvirt.syms
LIBVIRT_ADMIN_SYMBOL_FILE=libvirt_admin.syms
LIBVIRT_ADMIN_SYMBOL_FILE=admin/libvirt_admin.syms
LIBVIRT_LXC_SYMBOL_FILE='$(srcdir)/libvirt_lxc.syms'
LIBVIRT_QEMU_SYMBOL_FILE='$(srcdir)/libvirt_qemu.syms'
case "$host" in
@@ -28,7 +28,7 @@ AC_DEFUN([LIBVIRT_WIN_CHECK_SYMBOLS], [
# from libvirt.syms and passes libvirt.def instead of libvirt.syms to the
# linker
LIBVIRT_SYMBOL_FILE=libvirt.def
LIBVIRT_ADMIN_SYMBOL_FILE=libvirt_admin.def
LIBVIRT_ADMIN_SYMBOL_FILE=admin/libvirt_admin.def
LIBVIRT_LXC_SYMBOL_FILE=libvirt_lxc.def
LIBVIRT_QEMU_SYMBOL_FILE=libvirt_qemu.def
;;

View File

@@ -52,6 +52,8 @@ BuildRequires: mingw32-gcc
BuildRequires: mingw64-gcc
BuildRequires: mingw32-binutils
BuildRequires: mingw64-binutils
BuildRequires: mingw32-glib2 >= 2.48
BuildRequires: mingw64-glib2 >= 2.48
BuildRequires: mingw32-libgpg-error
BuildRequires: mingw64-libgpg-error
BuildRequires: mingw32-libgcrypt

View File

@@ -15,18 +15,22 @@ LANGS := \
uk ur vi wba yo zh_CN zh_HK zh_TW zu
POTFILE_DEPS := $(shell $(SED) 's,^,$(top_srcdir)/,' $(srcdir)/POTFILES)
POTFILE := $(srcdir)/$(DOMAIN).pot
POFILES := $(LANGS:%=$(srcdir)/%.po)
GMOFILES := $(LANGS:%=$(srcdir)/%.gmo)
POTFILES_IN = $(srcdir)/POTFILES.in
POTFILES: $(POTFILES_IN)
$(AM_V_GEN) cat $(POTFILES_IN) | \
$(SED) 's|[@]SRCDIR[@]|$(top_srcdir)|' | \
$(SED) 's|[@]BUILDDIR[@]|$(top_builddir)|' > $@
POTFILE_DEPS = $(shell cat POTFILES)
POTFILE := $(DOMAIN).pot
POMINIFILES := $(LANGS:%=%.mini.po)
POFILES := $(LANGS:%=%.po)
GMOFILES := $(LANGS:%=%.gmo)
MAINTAINERCLEANFILES = $(POTFILE) $(POFILES) $(GMOFILES)
CLEANFILES = $(POTFILE) $(POFILES) $(GMOFILES) POTFILES
EXTRA_DIST = \
POTFILES \
$(POTFILE) \
$(POFILES) \
$(GMOFILES)
$(POTFILES_IN) \
$(POMINIFILES)
if HAVE_GNU_GETTEXT_TOOLS
@@ -39,7 +43,6 @@ XGETTEXT_ARGS = \
--package-name="$(PACKAGE_NAME)" \
--package-version="$(PACKAGE_VERSION)" \
--msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \
--directory=$(top_srcdir) \
$(NULL)
SED_PO_FIXUP_ARGS = \
@@ -58,29 +61,37 @@ update-mini-po: $(POTFILE)
$(MSGMERGE) --no-location --no-fuzzy-matching --sort-output \
$$lang.po $(POTFILE) | \
$(SED) $(SED_PO_FIXUP_ARGS) | \
$(PERL) $(top_srcdir)/build-aux/minimize-po.pl > \
$(RUNUTF8) $(PYTHON) $(top_srcdir)/scripts/minimize-po.py > \
$(srcdir)/$$lang.mini.po ; \
done
push-pot: $(POTFILE)
zanata push --push-type=source
zanata push \
--project-config $(srcdir)/zanata.xml \
--push-type=source \
--transdir $(builddir) \
--srcdir $(srcdir)
pull-po: $(POTFILE)
zanata pull --create-skeletons
zanata pull \
--project-config $(srcdir)/zanata.xml \
--create-skeletons \
--transdir $(builddir) \
--srcdir $(srcdir)
$(MAKE) update-mini-po
$(MAKE) update-gmo
$(POTFILE): POTFILES $(POTFILE_DEPS)
$(XGETTEXT) -o $@-t $(XGETTEXT_ARGS) \
--files-from=$(abs_srcdir)/POTFILES
--files-from=$(abs_builddir)/POTFILES
$(SED) $(SED_PO_FIXUP_ARGS) < $@-t > $@
rm -f $@-t
$(srcdir)/%.po: $(srcdir)/%.mini.po $(POTFILE)
%.po: %.mini.po $(POTFILE)
$(MSGMERGE) --no-fuzzy-matching $< $(POTFILE) | \
$(SED) $(SED_PO_FIXUP_ARGS) > $@
$(srcdir)/%.gmo: $(srcdir)/%.po
%.gmo: %.po
rm -f $@ $@-t
$(MSGFMT) -c -o $@-t $<
mv $@-t $@
@@ -99,7 +110,7 @@ install-data-hook: $(GMOFILES)
for lang in $(LANGS); do \
d=$(DESTDIR)$(langinstdir)/$$lang/LC_MESSAGES; \
mkdir -p $$d; \
install -m 0644 $(srcdir)/$$lang.gmo $$d/$(DOMAIN).mo; \
install -m 0644 $$lang.gmo $$d/$(DOMAIN).mo; \
done
uninstall-hook:

View File

@@ -1,321 +0,0 @@
gnulib/lib/gai_strerror.c
gnulib/lib/getopt.c
gnulib/lib/regcomp.c
src/access/viraccessdriverpolkit.c
src/access/viraccessmanager.c
src/admin/admin_server.c
src/admin/admin_server_dispatch.c
src/admin/admin_server_dispatch_stubs.h
src/bhyve/bhyve_capabilities.c
src/bhyve/bhyve_command.c
src/bhyve/bhyve_device.c
src/bhyve/bhyve_domain.c
src/bhyve/bhyve_driver.c
src/bhyve/bhyve_monitor.c
src/bhyve/bhyve_parse_command.c
src/bhyve/bhyve_process.c
src/conf/capabilities.c
src/conf/checkpoint_conf.c
src/conf/cpu_conf.c
src/conf/device_conf.c
src/conf/domain_addr.c
src/conf/domain_capabilities.c
src/conf/domain_conf.c
src/conf/domain_event.c
src/conf/interface_conf.c
src/conf/netdev_bandwidth_conf.c
src/conf/netdev_vlan_conf.c
src/conf/netdev_vport_profile_conf.c
src/conf/network_conf.c
src/conf/networkcommon_conf.c
src/conf/node_device_conf.c
src/conf/numa_conf.c
src/conf/nwfilter_conf.c
src/conf/nwfilter_params.c
src/conf/object_event.c
src/conf/secret_conf.c
src/conf/snapshot_conf.c
src/conf/storage_adapter_conf.c
src/conf/storage_conf.c
src/conf/virchrdev.c
src/conf/virdomainobjlist.c
src/conf/virnetworkobj.c
src/conf/virnodedeviceobj.c
src/conf/virnwfilterobj.c
src/conf/virsavecookie.c
src/conf/virsecretobj.c
src/conf/virstorageobj.c
src/cpu/cpu.c
src/cpu/cpu_arm.c
src/cpu/cpu_map.c
src/cpu/cpu_ppc64.c
src/cpu/cpu_s390.c
src/cpu/cpu_x86.c
src/datatypes.c
src/driver.c
src/esx/esx_driver.c
src/esx/esx_network_driver.c
src/esx/esx_storage_backend_iscsi.c
src/esx/esx_storage_backend_vmfs.c
src/esx/esx_storage_driver.c
src/esx/esx_stream.c
src/esx/esx_util.c
src/esx/esx_vi.c
src/esx/esx_vi_methods.c
src/esx/esx_vi_types.c
src/hyperv/hyperv_driver.c
src/hyperv/hyperv_util.c
src/hyperv/hyperv_wmi.c
src/interface/interface_backend_netcf.c
src/interface/interface_backend_udev.c
src/internal.h
src/libvirt-admin.c
src/libvirt-domain-checkpoint.c
src/libvirt-domain-snapshot.c
src/libvirt-domain.c
src/libvirt-host.c
src/libvirt-lxc.c
src/libvirt-network.c
src/libvirt-nodedev.c
src/libvirt-nwfilter.c
src/libvirt-qemu.c
src/libvirt-secret.c
src/libvirt-storage.c
src/libvirt-stream.c
src/libvirt.c
src/libxl/libxl_capabilities.c
src/libxl/libxl_conf.c
src/libxl/libxl_domain.c
src/libxl/libxl_driver.c
src/libxl/libxl_migration.c
src/libxl/xen_common.c
src/libxl/xen_xl.c
src/libxl/xen_xm.c
src/locking/lock_daemon.c
src/locking/lock_daemon_dispatch.c
src/locking/lock_driver_lockd.c
src/locking/lock_driver_sanlock.c
src/locking/lock_manager.c
src/locking/sanlock_helper.c
src/logging/log_daemon.c
src/logging/log_daemon_dispatch.c
src/logging/log_handler.c
src/logging/log_manager.c
src/lxc/lxc_cgroup.c
src/lxc/lxc_conf.c
src/lxc/lxc_container.c
src/lxc/lxc_controller.c
src/lxc/lxc_domain.c
src/lxc/lxc_driver.c
src/lxc/lxc_fuse.c
src/lxc/lxc_hostdev.c
src/lxc/lxc_native.c
src/lxc/lxc_process.c
src/network/bridge_driver.c
src/network/bridge_driver_linux.c
src/network/leaseshelper.c
src/node_device/node_device_driver.c
src/node_device/node_device_hal.c
src/node_device/node_device_udev.c
src/nwfilter/nwfilter_dhcpsnoop.c
src/nwfilter/nwfilter_driver.c
src/nwfilter/nwfilter_ebiptables_driver.c
src/nwfilter/nwfilter_gentech_driver.c
src/nwfilter/nwfilter_learnipaddr.c
src/openvz/openvz_conf.c
src/openvz/openvz_driver.c
src/openvz/openvz_util.c
src/phyp/phyp_driver.c
src/qemu/qemu_agent.c
src/qemu/qemu_alias.c
src/qemu/qemu_block.c
src/qemu/qemu_capabilities.c
src/qemu/qemu_cgroup.c
src/qemu/qemu_command.c
src/qemu/qemu_conf.c
src/qemu/qemu_domain.c
src/qemu/qemu_domain_address.c
src/qemu/qemu_driver.c
src/qemu/qemu_hostdev.c
src/qemu/qemu_hotplug.c
src/qemu/qemu_interface.c
src/qemu/qemu_migration.c
src/qemu/qemu_migration_cookie.c
src/qemu/qemu_migration_params.c
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor_json.c
src/qemu/qemu_monitor_text.c
src/qemu/qemu_process.c
src/qemu/qemu_qapi.c
src/remote/remote_client_bodies.h
src/remote/remote_daemon.c
src/remote/remote_daemon_config.c
src/remote/remote_daemon_dispatch.c
src/remote/remote_daemon_dispatch_stubs.h
src/remote/remote_daemon_dispatch_qemu_stubs.h
src/remote/remote_daemon_stream.c
src/remote/remote_driver.c
src/rpc/virkeepalive.c
src/rpc/virnetclient.c
src/rpc/virnetclientprogram.c
src/rpc/virnetclientstream.c
src/rpc/virnetdaemon.c
src/rpc/virnetlibsshsession.c
src/rpc/virnetmessage.c
src/rpc/virnetsaslcontext.c
src/rpc/virnetserver.c
src/rpc/virnetserverclient.c
src/rpc/virnetserverprogram.c
src/rpc/virnetserverservice.c
src/rpc/virnetsocket.c
src/rpc/virnetsshsession.c
src/rpc/virnettlscontext.c
src/secret/secret_driver.c
src/security/security_apparmor.c
src/security/security_dac.c
src/security/security_driver.c
src/security/security_manager.c
src/security/security_selinux.c
src/security/virt-aa-helper.c
src/storage/parthelper.c
src/storage/storage_backend.c
src/storage/storage_backend_disk.c
src/storage/storage_backend_fs.c
src/storage/storage_backend_gluster.c
src/storage/storage_backend_iscsi.c
src/storage/storage_backend_logical.c
src/storage/storage_backend_mpath.c
src/storage/storage_backend_rbd.c
src/storage/storage_backend_scsi.c
src/storage/storage_backend_sheepdog.c
src/storage/storage_backend_vstorage.c
src/storage/storage_backend_zfs.c
src/storage/storage_driver.c
src/storage/storage_util.c
src/test/test_driver.c
src/util/iohelper.c
src/util/viralloc.c
src/util/virarptable.c
src/util/viraudit.c
src/util/virauth.c
src/util/virauthconfig.c
src/util/virbitmap.c
src/util/virbuffer.c
src/util/vircgroup.c
src/util/virclosecallbacks.c
src/util/vircommand.c
src/util/virconf.c
src/util/vircrypto.c
src/util/virdbus.c
src/util/virdnsmasq.c
src/util/virerror.c
src/util/virerror.h
src/util/vireventpoll.c
src/util/virfcp.c
src/util/virfdstream.c
src/util/virfile.c
src/util/virfilecache.c
src/util/virfirewall.c
src/util/virfirmware.c
src/util/virhash.c
src/util/virhook.c
src/util/virhostcpu.c
src/util/virhostdev.c
src/util/virhostmem.c
src/util/viridentity.c
src/util/virinitctl.c
src/util/viriptables.c
src/util/viriscsi.c
src/util/virjson.c
src/util/virkeyfile.c
src/util/virlease.c
src/util/virlockspace.c
src/util/virlog.c
src/util/virmacmap.c
src/util/virmdev.c
src/util/virnetdev.c
src/util/virnetdevbandwidth.c
src/util/virnetdevbridge.c
src/util/virnetdevip.c
src/util/virnetdevmacvlan.c
src/util/virnetdevmidonet.c
src/util/virnetdevopenvswitch.c
src/util/virnetdevtap.c
src/util/virnetdevveth.c
src/util/virnetdevvportprofile.c
src/util/virnetlink.c
src/util/virnodesuspend.c
src/util/virnuma.c
src/util/virobject.c
src/util/virpci.c
src/util/virperf.c
src/util/virpidfile.c
src/util/virpolkit.c
src/util/virportallocator.c
src/util/virprocess.c
src/util/virqemu.c
src/util/virrandom.c
src/util/virresctrl.c
src/util/virrotatingfile.c
src/util/virscsi.c
src/util/virscsihost.c
src/util/virscsivhost.c
src/util/virsecret.c
src/util/virsocketaddr.c
src/util/virstorageencryption.c
src/util/virstoragefile.c
src/util/virstoragefilebackend.c
src/util/virstring.c
src/util/virsysinfo.c
src/util/virthreadjob.c
src/util/virthreadpool.c
src/util/virtime.c
src/util/virtpm.c
src/util/virtypedparam.c
src/util/viruri.c
src/util/virusb.c
src/util/virutil.c
src/util/virvhba.c
src/util/virxml.c
src/vbox/vbox_MSCOMGlue.c
src/vbox/vbox_XPCOMCGlue.c
src/vbox/vbox_common.c
src/vbox/vbox_driver.c
src/vbox/vbox_network.c
src/vbox/vbox_snapshot_conf.c
src/vbox/vbox_storage.c
src/vbox/vbox_tmpl.c
src/vmware/vmware_conf.c
src/vmware/vmware_driver.c
src/vmx/vmx.c
src/vz/vz_driver.c
src/vz/vz_sdk.c
src/vz/vz_utils.c
src/vz/vz_utils.h
tests/virpolkittest.c
tools/libvirt-guests.sh.in
tools/virsh-checkpoint.c
tools/virsh-console.c
tools/virsh-domain-monitor.c
tools/virsh-domain.c
tools/virsh-edit.c
tools/virsh-host.c
tools/virsh-interface.c
tools/virsh-network.c
tools/virsh-nodedev.c
tools/virsh-nwfilter.c
tools/virsh-pool.c
tools/virsh-secret.c
tools/virsh-snapshot.c
tools/virsh-util.c
tools/virsh-volume.c
tools/virsh.c
tools/virt-admin.c
tools/virt-host-validate-bhyve.c
tools/virt-host-validate-common.c
tools/virt-host-validate-lxc.c
tools/virt-host-validate-qemu.c
tools/virt-host-validate.c
tools/virt-login-shell.c
tools/vsh.c
tools/vsh.h

358
po/POTFILES.in Normal file
View File

@@ -0,0 +1,358 @@
@BUILDDIR@/src/access/viraccessapicheck.c
@BUILDDIR@/src/access/viraccessapichecklxc.c
@BUILDDIR@/src/access/viraccessapicheckqemu.c
@BUILDDIR@/src/admin/admin_client.h
@BUILDDIR@/src/admin/admin_server_dispatch_stubs.h
@BUILDDIR@/src/remote/remote_client_bodies.h
@BUILDDIR@/src/remote/remote_daemon_dispatch_stubs.h
@SRCDIR@/gnulib/lib/gai_strerror.c
@SRCDIR@/src/access/viraccessdriverpolkit.c
@SRCDIR@/src/access/viraccessmanager.c
@SRCDIR@/src/admin/admin_server.c
@SRCDIR@/src/admin/admin_server_dispatch.c
@SRCDIR@/src/admin/libvirt-admin.c
@SRCDIR@/src/bhyve/bhyve_capabilities.c
@SRCDIR@/src/bhyve/bhyve_command.c
@SRCDIR@/src/bhyve/bhyve_device.c
@SRCDIR@/src/bhyve/bhyve_domain.c
@SRCDIR@/src/bhyve/bhyve_driver.c
@SRCDIR@/src/bhyve/bhyve_monitor.c
@SRCDIR@/src/bhyve/bhyve_parse_command.c
@SRCDIR@/src/bhyve/bhyve_process.c
@SRCDIR@/src/conf/capabilities.c
@SRCDIR@/src/conf/checkpoint_conf.c
@SRCDIR@/src/conf/cpu_conf.c
@SRCDIR@/src/conf/device_conf.c
@SRCDIR@/src/conf/domain_addr.c
@SRCDIR@/src/conf/domain_capabilities.c
@SRCDIR@/src/conf/domain_conf.c
@SRCDIR@/src/conf/domain_event.c
@SRCDIR@/src/conf/interface_conf.c
@SRCDIR@/src/conf/netdev_bandwidth_conf.c
@SRCDIR@/src/conf/netdev_vlan_conf.c
@SRCDIR@/src/conf/netdev_vport_profile_conf.c
@SRCDIR@/src/conf/network_conf.c
@SRCDIR@/src/conf/networkcommon_conf.c
@SRCDIR@/src/conf/node_device_conf.c
@SRCDIR@/src/conf/node_device_util.c
@SRCDIR@/src/conf/numa_conf.c
@SRCDIR@/src/conf/nwfilter_conf.c
@SRCDIR@/src/conf/nwfilter_params.c
@SRCDIR@/src/conf/object_event.c
@SRCDIR@/src/conf/secret_conf.c
@SRCDIR@/src/conf/snapshot_conf.c
@SRCDIR@/src/conf/storage_adapter_conf.c
@SRCDIR@/src/conf/storage_conf.c
@SRCDIR@/src/conf/virchrdev.c
@SRCDIR@/src/conf/virdomainmomentobjlist.c
@SRCDIR@/src/conf/virdomainobjlist.c
@SRCDIR@/src/conf/virnetworkobj.c
@SRCDIR@/src/conf/virnetworkportdef.c
@SRCDIR@/src/conf/virnodedeviceobj.c
@SRCDIR@/src/conf/virnwfilterbindingdef.c
@SRCDIR@/src/conf/virnwfilterbindingobj.c
@SRCDIR@/src/conf/virnwfilterbindingobjlist.c
@SRCDIR@/src/conf/virnwfilterobj.c
@SRCDIR@/src/conf/virsavecookie.c
@SRCDIR@/src/conf/virsecretobj.c
@SRCDIR@/src/conf/virstorageobj.c
@SRCDIR@/src/cpu/cpu.c
@SRCDIR@/src/cpu/cpu_arm.c
@SRCDIR@/src/cpu/cpu_map.c
@SRCDIR@/src/cpu/cpu_ppc64.c
@SRCDIR@/src/cpu/cpu_s390.c
@SRCDIR@/src/cpu/cpu_x86.c
@SRCDIR@/src/datatypes.c
@SRCDIR@/src/driver.c
@SRCDIR@/src/esx/esx_driver.c
@SRCDIR@/src/esx/esx_network_driver.c
@SRCDIR@/src/esx/esx_storage_backend_iscsi.c
@SRCDIR@/src/esx/esx_storage_backend_vmfs.c
@SRCDIR@/src/esx/esx_storage_driver.c
@SRCDIR@/src/esx/esx_stream.c
@SRCDIR@/src/esx/esx_util.c
@SRCDIR@/src/esx/esx_util.h
@SRCDIR@/src/esx/esx_vi.c
@SRCDIR@/src/esx/esx_vi_methods.c
@SRCDIR@/src/esx/esx_vi_types.c
@SRCDIR@/src/hyperv/hyperv_driver.c
@SRCDIR@/src/hyperv/hyperv_util.c
@SRCDIR@/src/hyperv/hyperv_wmi.c
@SRCDIR@/src/interface/interface_backend_netcf.c
@SRCDIR@/src/interface/interface_backend_udev.c
@SRCDIR@/src/internal.h
@SRCDIR@/src/libvirt-domain-checkpoint.c
@SRCDIR@/src/libvirt-domain-snapshot.c
@SRCDIR@/src/libvirt-domain.c
@SRCDIR@/src/libvirt-host.c
@SRCDIR@/src/libvirt-lxc.c
@SRCDIR@/src/libvirt-network.c
@SRCDIR@/src/libvirt-nodedev.c
@SRCDIR@/src/libvirt-nwfilter.c
@SRCDIR@/src/libvirt-qemu.c
@SRCDIR@/src/libvirt-secret.c
@SRCDIR@/src/libvirt-storage.c
@SRCDIR@/src/libvirt-stream.c
@SRCDIR@/src/libvirt.c
@SRCDIR@/src/libxl/libxl_capabilities.c
@SRCDIR@/src/libxl/libxl_conf.c
@SRCDIR@/src/libxl/libxl_domain.c
@SRCDIR@/src/libxl/libxl_driver.c
@SRCDIR@/src/libxl/libxl_migration.c
@SRCDIR@/src/libxl/xen_common.c
@SRCDIR@/src/libxl/xen_xl.c
@SRCDIR@/src/libxl/xen_xm.c
@SRCDIR@/src/locking/lock_daemon.c
@SRCDIR@/src/locking/lock_daemon_dispatch.c
@SRCDIR@/src/locking/lock_driver_lockd.c
@SRCDIR@/src/locking/lock_driver_sanlock.c
@SRCDIR@/src/locking/lock_manager.c
@SRCDIR@/src/locking/sanlock_helper.c
@SRCDIR@/src/logging/log_daemon.c
@SRCDIR@/src/logging/log_daemon_dispatch.c
@SRCDIR@/src/logging/log_handler.c
@SRCDIR@/src/logging/log_manager.c
@SRCDIR@/src/lxc/lxc_cgroup.c
@SRCDIR@/src/lxc/lxc_conf.c
@SRCDIR@/src/lxc/lxc_container.c
@SRCDIR@/src/lxc/lxc_controller.c
@SRCDIR@/src/lxc/lxc_domain.c
@SRCDIR@/src/lxc/lxc_driver.c
@SRCDIR@/src/lxc/lxc_fuse.c
@SRCDIR@/src/lxc/lxc_hostdev.c
@SRCDIR@/src/lxc/lxc_native.c
@SRCDIR@/src/lxc/lxc_process.c
@SRCDIR@/src/network/bridge_driver.c
@SRCDIR@/src/network/bridge_driver_linux.c
@SRCDIR@/src/network/leaseshelper.c
@SRCDIR@/src/node_device/node_device_driver.c
@SRCDIR@/src/node_device/node_device_hal.c
@SRCDIR@/src/node_device/node_device_udev.c
@SRCDIR@/src/nwfilter/nwfilter_dhcpsnoop.c
@SRCDIR@/src/nwfilter/nwfilter_driver.c
@SRCDIR@/src/nwfilter/nwfilter_ebiptables_driver.c
@SRCDIR@/src/nwfilter/nwfilter_gentech_driver.c
@SRCDIR@/src/nwfilter/nwfilter_learnipaddr.c
@SRCDIR@/src/openvz/openvz_conf.c
@SRCDIR@/src/openvz/openvz_driver.c
@SRCDIR@/src/openvz/openvz_util.c
@SRCDIR@/src/phyp/phyp_driver.c
@SRCDIR@/src/qemu/qemu_agent.c
@SRCDIR@/src/qemu/qemu_alias.c
@SRCDIR@/src/qemu/qemu_block.c
@SRCDIR@/src/qemu/qemu_blockjob.c
@SRCDIR@/src/qemu/qemu_capabilities.c
@SRCDIR@/src/qemu/qemu_cgroup.c
@SRCDIR@/src/qemu/qemu_checkpoint.c
@SRCDIR@/src/qemu/qemu_command.c
@SRCDIR@/src/qemu/qemu_conf.c
@SRCDIR@/src/qemu/qemu_dbus.c
@SRCDIR@/src/qemu/qemu_domain.c
@SRCDIR@/src/qemu/qemu_domain_address.c
@SRCDIR@/src/qemu/qemu_driver.c
@SRCDIR@/src/qemu/qemu_extdevice.c
@SRCDIR@/src/qemu/qemu_firmware.c
@SRCDIR@/src/qemu/qemu_hostdev.c
@SRCDIR@/src/qemu/qemu_hotplug.c
@SRCDIR@/src/qemu/qemu_interface.c
@SRCDIR@/src/qemu/qemu_interop_config.c
@SRCDIR@/src/qemu/qemu_migration.c
@SRCDIR@/src/qemu/qemu_migration_cookie.c
@SRCDIR@/src/qemu/qemu_migration_params.c
@SRCDIR@/src/qemu/qemu_monitor.c
@SRCDIR@/src/qemu/qemu_monitor_json.c
@SRCDIR@/src/qemu/qemu_monitor_text.c
@SRCDIR@/src/qemu/qemu_process.c
@SRCDIR@/src/qemu/qemu_qapi.c
@SRCDIR@/src/qemu/qemu_slirp.c
@SRCDIR@/src/qemu/qemu_tpm.c
@SRCDIR@/src/qemu/qemu_vhost_user.c
@SRCDIR@/src/qemu/qemu_vhost_user_gpu.c
@SRCDIR@/src/remote/remote_daemon.c
@SRCDIR@/src/remote/remote_daemon_config.c
@SRCDIR@/src/remote/remote_daemon_dispatch.c
@SRCDIR@/src/remote/remote_daemon_stream.c
@SRCDIR@/src/remote/remote_driver.c
@SRCDIR@/src/rpc/virkeepalive.c
@SRCDIR@/src/rpc/virnetclient.c
@SRCDIR@/src/rpc/virnetclientprogram.c
@SRCDIR@/src/rpc/virnetclientstream.c
@SRCDIR@/src/rpc/virnetdaemon.c
@SRCDIR@/src/rpc/virnetlibsshsession.c
@SRCDIR@/src/rpc/virnetmessage.c
@SRCDIR@/src/rpc/virnetsaslcontext.c
@SRCDIR@/src/rpc/virnetserver.c
@SRCDIR@/src/rpc/virnetserverclient.c
@SRCDIR@/src/rpc/virnetserverprogram.c
@SRCDIR@/src/rpc/virnetserverservice.c
@SRCDIR@/src/rpc/virnetsocket.c
@SRCDIR@/src/rpc/virnetsshsession.c
@SRCDIR@/src/rpc/virnettlscontext.c
@SRCDIR@/src/secret/secret_driver.c
@SRCDIR@/src/secret/secret_util.c
@SRCDIR@/src/security/security_apparmor.c
@SRCDIR@/src/security/security_dac.c
@SRCDIR@/src/security/security_driver.c
@SRCDIR@/src/security/security_manager.c
@SRCDIR@/src/security/security_selinux.c
@SRCDIR@/src/security/security_util.c
@SRCDIR@/src/security/virt-aa-helper.c
@SRCDIR@/src/storage/parthelper.c
@SRCDIR@/src/storage/storage_backend.c
@SRCDIR@/src/storage/storage_backend_disk.c
@SRCDIR@/src/storage/storage_backend_fs.c
@SRCDIR@/src/storage/storage_backend_gluster.c
@SRCDIR@/src/storage/storage_backend_iscsi.c
@SRCDIR@/src/storage/storage_backend_iscsi_direct.c
@SRCDIR@/src/storage/storage_backend_logical.c
@SRCDIR@/src/storage/storage_backend_mpath.c
@SRCDIR@/src/storage/storage_backend_rbd.c
@SRCDIR@/src/storage/storage_backend_scsi.c
@SRCDIR@/src/storage/storage_backend_sheepdog.c
@SRCDIR@/src/storage/storage_backend_vstorage.c
@SRCDIR@/src/storage/storage_backend_zfs.c
@SRCDIR@/src/storage/storage_driver.c
@SRCDIR@/src/storage/storage_file_fs.c
@SRCDIR@/src/storage/storage_file_gluster.c
@SRCDIR@/src/storage/storage_util.c
@SRCDIR@/src/test/test_driver.c
@SRCDIR@/src/util/iohelper.c
@SRCDIR@/src/util/viralloc.c
@SRCDIR@/src/util/virarptable.c
@SRCDIR@/src/util/viraudit.c
@SRCDIR@/src/util/virauth.c
@SRCDIR@/src/util/virauthconfig.c
@SRCDIR@/src/util/virbitmap.c
@SRCDIR@/src/util/virbpf.c
@SRCDIR@/src/util/vircgroup.c
@SRCDIR@/src/util/vircgroupbackend.c
@SRCDIR@/src/util/vircgroupbackend.h
@SRCDIR@/src/util/vircgroupv1.c
@SRCDIR@/src/util/vircgroupv2.c
@SRCDIR@/src/util/vircgroupv2devices.c
@SRCDIR@/src/util/virclosecallbacks.c
@SRCDIR@/src/util/vircommand.c
@SRCDIR@/src/util/virconf.c
@SRCDIR@/src/util/vircrypto.c
@SRCDIR@/src/util/virdbus.c
@SRCDIR@/src/util/virdnsmasq.c
@SRCDIR@/src/util/virerror.c
@SRCDIR@/src/util/virerror.h
@SRCDIR@/src/util/vireventpoll.c
@SRCDIR@/src/util/virfcp.c
@SRCDIR@/src/util/virfdstream.c
@SRCDIR@/src/util/virfile.c
@SRCDIR@/src/util/virfilecache.c
@SRCDIR@/src/util/virfirewall.c
@SRCDIR@/src/util/virfirewalld.c
@SRCDIR@/src/util/virfirmware.c
@SRCDIR@/src/util/virhash.c
@SRCDIR@/src/util/virhook.c
@SRCDIR@/src/util/virhostcpu.c
@SRCDIR@/src/util/virhostdev.c
@SRCDIR@/src/util/virhostmem.c
@SRCDIR@/src/util/virhostuptime.c
@SRCDIR@/src/util/viridentity.c
@SRCDIR@/src/util/virinitctl.c
@SRCDIR@/src/util/viriptables.c
@SRCDIR@/src/util/viriscsi.c
@SRCDIR@/src/util/virjson.c
@SRCDIR@/src/util/virkeyfile.c
@SRCDIR@/src/util/virlease.c
@SRCDIR@/src/util/virlockspace.c
@SRCDIR@/src/util/virlog.c
@SRCDIR@/src/util/virmacmap.c
@SRCDIR@/src/util/virmdev.c
@SRCDIR@/src/util/virmodule.c
@SRCDIR@/src/util/virnetdev.c
@SRCDIR@/src/util/virnetdevbandwidth.c
@SRCDIR@/src/util/virnetdevbridge.c
@SRCDIR@/src/util/virnetdevip.c
@SRCDIR@/src/util/virnetdevmacvlan.c
@SRCDIR@/src/util/virnetdevmidonet.c
@SRCDIR@/src/util/virnetdevopenvswitch.c
@SRCDIR@/src/util/virnetdevtap.c
@SRCDIR@/src/util/virnetdevveth.c
@SRCDIR@/src/util/virnetdevvportprofile.c
@SRCDIR@/src/util/virnetlink.c
@SRCDIR@/src/util/virnodesuspend.c
@SRCDIR@/src/util/virnuma.c
@SRCDIR@/src/util/virobject.c
@SRCDIR@/src/util/virpci.c
@SRCDIR@/src/util/virperf.c
@SRCDIR@/src/util/virpidfile.c
@SRCDIR@/src/util/virpolkit.c
@SRCDIR@/src/util/virportallocator.c
@SRCDIR@/src/util/virprocess.c
@SRCDIR@/src/util/virqemu.c
@SRCDIR@/src/util/virrandom.c
@SRCDIR@/src/util/virresctrl.c
@SRCDIR@/src/util/virrotatingfile.c
@SRCDIR@/src/util/virscsi.c
@SRCDIR@/src/util/virscsihost.c
@SRCDIR@/src/util/virscsivhost.c
@SRCDIR@/src/util/virsecret.c
@SRCDIR@/src/util/virsocketaddr.c
@SRCDIR@/src/util/virstorageencryption.c
@SRCDIR@/src/util/virstoragefile.c
@SRCDIR@/src/util/virstoragefilebackend.c
@SRCDIR@/src/util/virstring.c
@SRCDIR@/src/util/virsysinfo.c
@SRCDIR@/src/util/virsystemd.c
@SRCDIR@/src/util/virthreadjob.c
@SRCDIR@/src/util/virthreadpool.c
@SRCDIR@/src/util/virtime.c
@SRCDIR@/src/util/virtpm.c
@SRCDIR@/src/util/virtypedparam-public.c
@SRCDIR@/src/util/virtypedparam.c
@SRCDIR@/src/util/viruri.c
@SRCDIR@/src/util/virusb.c
@SRCDIR@/src/util/virutil.c
@SRCDIR@/src/util/virvhba.c
@SRCDIR@/src/util/virvsock.c
@SRCDIR@/src/util/virxml.c
@SRCDIR@/src/vbox/vbox_MSCOMGlue.c
@SRCDIR@/src/vbox/vbox_XPCOMCGlue.c
@SRCDIR@/src/vbox/vbox_common.c
@SRCDIR@/src/vbox/vbox_driver.c
@SRCDIR@/src/vbox/vbox_network.c
@SRCDIR@/src/vbox/vbox_snapshot_conf.c
@SRCDIR@/src/vbox/vbox_storage.c
@SRCDIR@/src/vbox/vbox_tmpl.c
@SRCDIR@/src/vmware/vmware_conf.c
@SRCDIR@/src/vmware/vmware_driver.c
@SRCDIR@/src/vmx/vmx.c
@SRCDIR@/src/vz/vz_driver.c
@SRCDIR@/src/vz/vz_sdk.c
@SRCDIR@/src/vz/vz_utils.c
@SRCDIR@/src/vz/vz_utils.h
@SRCDIR@/tests/virpolkittest.c
@SRCDIR@/tools/libvirt-guests.sh.in
@SRCDIR@/tools/virsh-checkpoint.c
@SRCDIR@/tools/virsh-completer-host.c
@SRCDIR@/tools/virsh-console.c
@SRCDIR@/tools/virsh-domain-monitor.c
@SRCDIR@/tools/virsh-domain.c
@SRCDIR@/tools/virsh-edit.c
@SRCDIR@/tools/virsh-host.c
@SRCDIR@/tools/virsh-interface.c
@SRCDIR@/tools/virsh-network.c
@SRCDIR@/tools/virsh-nodedev.c
@SRCDIR@/tools/virsh-nwfilter.c
@SRCDIR@/tools/virsh-pool.c
@SRCDIR@/tools/virsh-secret.c
@SRCDIR@/tools/virsh-snapshot.c
@SRCDIR@/tools/virsh-util.c
@SRCDIR@/tools/virsh-volume.c
@SRCDIR@/tools/virsh.c
@SRCDIR@/tools/virsh.h
@SRCDIR@/tools/virt-admin.c
@SRCDIR@/tools/virt-host-validate-bhyve.c
@SRCDIR@/tools/virt-host-validate-common.c
@SRCDIR@/tools/virt-host-validate-lxc.c
@SRCDIR@/tools/virt-host-validate-qemu.c
@SRCDIR@/tools/virt-host-validate.c
@SRCDIR@/tools/virt-login-shell-helper.c
@SRCDIR@/tools/vsh-table.c
@SRCDIR@/tools/vsh.c
@SRCDIR@/tools/vsh.h

View File

@@ -4,6 +4,9 @@ Libvirt Message Translation
Libvirt translatable messages are maintained using the GNU Gettext tools and
file formats, in combination with the Zanata web service.
python-zanata-client is required in order to use make to pull/push translations
from/to Zanata server.
Source repository
=================

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Amharic\n"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Angika\n"

View File

@@ -7,9 +7,9 @@
# Daniel Berrange <dan-zanata@berrange.com>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-04-24 04:33+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/fedora/language/"

View File

@@ -13,9 +13,9 @@
# Nilamdyuti Goswami <ngoswami@redhat.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-26 06:48+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Assamese (http://www.transifex.com/projects/p/libvirt/"
@@ -50,43 +50,6 @@ msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" অবিকল্পিত পথবোৰ:\n"
"\n"
" সংৰূপ ফাইল (যদিহে -f দ্বাৰা অভাৰৰাইড কৰা নহয়):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" চকেটসমূহ:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA প্ৰমাণপত্ৰ: $HOME/.pki/libvirt/cacert.pem\n"
" চাৰ্ভাৰ প্ৰমাণপত্ৰ: $HOME/.pki/libvirt/servercert.pem\n"
" চাৰ্ভাৰ ব্যক্তিগত কি': $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" Default paths:\n"
@@ -114,74 +77,6 @@ msgstr ""
" $XDG_RUNTIME_DIR/libvirt/virtlockd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s\n"
"\n"
" Sockets:\n"
" %s\n"
" %s\n"
"\n"
" TLS:\n"
" CA certificate: %s\n"
" Server certificate: %s\n"
" Server private key: %s\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" অবিকল্পিত পথসমূহ:\n"
"\n"
" সংৰূপ ফাইল (যদিহে -f দ্বাৰা অভাৰৰাইড কৰক):\n"
" %s\n"
"\n"
" চকেটসমূহ:\n"
" %s\n"
" %s\n"
"\n"
" TLS:\n"
" CA প্ৰমাণপত্ৰ: %s\n"
" চাৰ্ভাৰ প্ৰমাণপত্ৰ: %s\n"
" চাৰ্বাৰ ব্যক্তিগত কি: %s\n"
"\n"
" PID ফাইল (যদিহে -p দ্বাৰা অভাৰৰাইড কৰা নহয়):\n"
" %s/run/libvirtd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgstr ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -230,40 +125,6 @@ msgstr ""
"\n"
"ডমেইন %s অৱস্থা libvirt দ্বাৰা সংৰক্ষণ কৰা হৈছে\n"
#, c-format
msgid ""
"\n"
"Usage:\n"
" %s [options]\n"
"\n"
"Options:\n"
" -h | --help Display program help:\n"
" -v | --verbose Verbose messages.\n"
" -d | --daemon Run as a daemon & write PID file.\n"
" -l | --listen Listen for TCP/IP connections.\n"
" -t | --timeout <secs> Exit after timeout period.\n"
" -f | --config <file> Configuration file.\n"
" -V | --version Display version information.\n"
" -p | --pid-file <file> Change name of PID file.\n"
"\n"
"libvirt management daemon:\n"
msgstr ""
"\n"
"ব্যৱহাৰ:\n"
" %s [options]\n"
"\n"
"Options:\n"
" -h | --help Display program help:\n"
" -v | --verbose Verbose messages.\n"
" -d | --daemon Run as a daemon & write PID file.\n"
" -l | --listen Listen for TCP/IP connections.\n"
" -t | --timeout <secs> Exit after timeout period.\n"
" -f | --config <file> Configuration file.\n"
" -V | --version Display version information.\n"
" -p | --pid-file <file> Change name of PID file.\n"
"\n"
"libvirt ব্যৱস্থাপনা ডিমন:\n"
msgid " NAME\n"
msgstr " NAME\n"
@@ -367,18 +228,10 @@ msgstr "%s ত 'type' বৈশিষ্ট সন্ধানহীন"
msgid "%s length greater than maximum: %d > %d"
msgstr "%s দৈৰ্ঘ্য সৰ্বাধিকতকে ডাঙৰ: %d > %d"
#, c-format
msgid "%s must be run by non root users"
msgstr "%s কেৱল নন ৰুট ব্যৱহাৰকাৰী দ্বাৰা চলাব লাগিব"
#, c-format
msgid "%s not implemented on Win32"
msgstr "Win32 ত %s কাৰ্য্যকৰ কৰা হোৱা নাই"
#, c-format
msgid "%s not matched against 'allowed_users' in %s"
msgstr "%s ক %s ত 'allowed_users' ৰ বাবে মিলোৱা নহয়"
#, c-format
msgid "%s not parseable"
msgstr "%s বিশ্লেষণ কৰিব নোৱাৰি"
@@ -403,10 +256,6 @@ msgstr ""
"পৰ্ট ধাৰ্য্যকৰণৰ সৈতে %s নিয়মৰ প্ৰটোকল ধাৰ্য্যকৰণৰ প্ৰয়োজন য'ত প্ৰটোকল tcp(6), "
"udp(17), dccp(33), অথবা sctp(132) ৰ এটা"
#, c-format
msgid "%s takes no options"
msgstr "%s এ কোনো বিকল্প নলয়"
#, c-format
msgid "%s uri uuid action\n"
msgstr "%s uri uuid কাৰ্য্য\n"
@@ -1236,10 +1085,6 @@ msgstr "মেমৰি আবণ্টন কৰিব নোৱাৰি"
msgid "Can't connect to $uri. Skipping."
msgstr "$uri লে সংযোগ কৰিব নোৱাৰি। বাদ দিয়া হৈছে।"
#, c-format
msgid "Can't create %s container: %s"
msgstr "%s বৈয়াম সৃষ্টি কৰিব নোৱাৰি: %s"
msgid "Can't create initial configuration"
msgstr "আৰম্ভণি সংৰূপ সৃষ্টি কৰিব নোৱাৰি"
@@ -1756,12 +1601,6 @@ msgstr "সমান্তৰাল/ক্ৰমিক ডিভাইচসম
msgid "Cannot write data"
msgstr "তথ্য লিখিব নোৱাৰি"
msgid "Capabilities not available"
msgstr "ক্ষমতাসমূহ উপলব্ধ নহয়"
msgid "Capabilities not found"
msgstr "ক্ষমতাসমূহ পোৱা নগল"
msgid "Capacity"
msgstr "ক্ষমতা"
@@ -1974,20 +1813,6 @@ msgstr ""
msgid "Connected to domain %s\n"
msgstr "ডোমেইন %s লৈ সংযুক্ত\n"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"libssh2 connection driver"
msgstr ""
"চকেট পথৰ অৱিহনে অধিবেশন উদাহৰণৰ সৈতে সংযোগ কৰা libssh2 সংযোগ ড্ৰাইভাৰ দ্বাৰা "
"সমৰ্থিত নহয়"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"ssh connection driver"
msgstr ""
"চকেট পথৰ অৱিহনে অধিবেশন উদাহৰণৰ সৈতে সংযোগ কৰা ssh সংযোগ ড্ৰাইভাৰ দ্বাৰা "
"সমৰ্থিত নহয়"
msgid "Constant pages:"
msgstr "স্থিৰ পৃষ্ঠাসমূহ:"
@@ -2703,33 +2528,6 @@ msgstr "স্ট্ৰিমলৈ লিখিব পৰা নগল"
msgid "Couldn't create lock file for device '%s' in path '%s'"
msgstr "পথ '%s' ত ডিভাইচ '%s' ৰ বাবে লক ফাইল সৃষ্টি কৰিব পৰা নগল"
msgid "Couldn't fetch Domain Information"
msgstr "ডমেইন তথ্য প্ৰাপ্ত কৰিব পৰা নগল"
msgid "Couldn't fetch Node Information"
msgstr "ন'ডৰ তথ্য প্ৰাপ্ত কৰিব পৰা নগল"
msgid "Couldn't get VM information from XML"
msgstr "XML ৰ পৰা VM তথ্য প্ৰাপ্ত কৰিব পৰা নগল"
msgid "Couldn't get VM record"
msgstr "VM ৰেকৰ্ড প্ৰাপ্ত কৰিব পৰা নগল"
msgid "Couldn't get host metrics"
msgstr "হস্ট মেট্ৰিক্স প্ৰাপ্ত কৰিব পৰা নগল"
msgid "Couldn't get host metrics - memory information"
msgstr "মেট্ৰিক্স হস্ট কৰিব পৰা নগল - মেমৰি তথ্য"
msgid "Couldn't get the Domain Pointer"
msgstr "ডমেইন পইন্টাৰ প্ৰাপ্ত কৰিব পৰা নগল"
msgid "Couldn't get version info"
msgstr "সংস্কৰণ তথ্য প্ৰাপ্ত কৰিব পৰা নগল"
msgid "Couldn't parse version info"
msgstr "সংস্কৰণ তথ্য বিশ্লেষণ কৰিব পৰা নগল"
#, c-format
msgid "Couldn't read volume target path '%s'"
msgstr "ভলিউম লক্ষ্যৰ পথ '%s' পঢ়িব পৰা ন'গ'ল"
@@ -3171,12 +2969,6 @@ msgstr "ডোমেইন '%s' বৰ্তমানে চলমান"
msgid "Domain '%s' sysinfo are not available"
msgstr "ডমেইন '%s' sysinfo উপলব্ধ নহয়"
msgid "Domain Pointer is invalid"
msgstr "ডমেইন পইন্টাৰ অবৈধ"
msgid "Domain Pointer not valid"
msgstr "ডমেইন পইন্টাৰ বৈধ নহয়"
msgid ""
"Domain XML doesn't contain any disks, cannot deduce datastore and path for "
"VMX file"
@@ -3256,9 +3048,6 @@ msgstr "ডমেইন স্থগিত অথবা বন্ধ নহয়"
msgid "Domain name contains invalid escape sequence"
msgstr "ডমেইন নামে অবৈধ এক্সেইপ চিকুৱেঞ্চ অন্তৰ্ভুক্ত কৰে"
msgid "Domain name is not unique"
msgstr "ডমেইন নাম অবিকল্প নহয়"
msgid "Domain not found"
msgstr "ডোমেইন পাৱ নাযায়"
@@ -3307,9 +3096,6 @@ msgstr "ডমেইন শীৰ্ষক নতুনশাৰী অন্ত
msgid "Domain:"
msgstr "ডমেইন:"
msgid "DomainID can't fit in 32 bits"
msgstr "DomainID ৩২ বিটত খাপ নাখায়"
msgid "Done.\n"
msgstr "কৰা হল।\n"
@@ -3685,10 +3471,6 @@ msgstr "FDC একক সূচী %d [0..1] বিস্তাৰৰ বাহ
msgid "Failed"
msgstr "ব্যৰ্থ"
#, c-format
msgid "Failed opening %s"
msgstr "%s খোলিবলে ব্যৰ্থ"
#, c-format
msgid "Failed set TLS x509 credentials: %s"
msgstr "TLS x509 তথ্যসমূহ সংহতি কৰিবলে ব্যৰ্থ: %s"
@@ -3704,20 +3486,12 @@ msgstr "pid ফাইল '%s' প্ৰাপ্ত কৰিবলে ব্য
msgid "Failed to add IP address %s to IP address cache for interface %s"
msgstr "আন্তঃপৃষ্ঠ %s ৰ বাবে IP ঠিকনা ক্যাশলে IP ঠিকনা %s যোগ কৰিবলে ব্যৰ্থ"
#, c-format
msgid "Failed to add PCI device ID '%s' to %s"
msgstr "%s ডোমেইন %s এ সংৰক্ষণ কৰোঁতে ব্যৰ্থ"
msgid "Failed to add netlink event handle watch"
msgstr "নেটলিঙ্ক ঘটনা হেণ্ডেল ৱাছ যোগ কৰিবলে ব্যৰ্থ"
msgid "Failed to add signal handle watch"
msgstr "সংকেত হেণ্ডেল চুইচ যোগ কৰিবলে ব্যৰ্থ"
#, c-format
msgid "Failed to add slot for PCI device '%s' to %s"
msgstr "PCI ডিভাইচ '%s' ৰ কাৰণে %s ত slot যোগ কৰিবলৈ বিফল"
#, c-format
msgid "Failed to allocate PCI device list: %s"
msgstr "PCI ডিভাইচ তালিকা আবণ্টন কৰিবলে ব্যৰ্থ: %s"
@@ -3725,9 +3499,6 @@ msgstr "PCI ডিভাইচ তালিকা আবণ্টন কৰি
msgid "Failed to allocate XML buffer"
msgstr "XML প্ৰশমক বিতৰণ কৰোঁতে ব্যৰ্থ"
msgid "Failed to allocate memory"
msgstr "মেমৰি বিতৰণ কৰোঁতে ব্যৰ্থ"
msgid "Failed to allocate memory for path"
msgstr "পথৰ বাবে মেমৰি আবণ্টন কৰিবলে ব্যৰ্থ"
@@ -3744,9 +3515,6 @@ msgstr "সুৰক্ষা আৰ্হি আবণ্টন কৰিবল
msgid "Failed to allocate tty"
msgstr "tty বিতৰণ কৰিবলৈ ব্যৰ্থথ"
msgid "Failed to allocate xen session"
msgstr "xen অধিবেশন আবণ্টন কৰিবলে ব্যৰ্থ"
#, c-format
msgid "Failed to apply capabilities: %d"
msgstr "ক্ষমতা প্ৰয়োগ কৰিবলৈ ব্যৰ্থ: %d"
@@ -3776,10 +3544,6 @@ msgstr "সংৰক্ষণ পুল '%s' স্বআৰম্ভ কৰি
msgid "Failed to begin network config change transaction"
msgstr "নেটৱৰ্ক সংৰূপ পৰিবৰ্তন লেন দেন আৰম্ভ কৰিবলে ব্যৰ্থ"
#, c-format
msgid "Failed to bind PCI device '%s' to %s"
msgstr "PCI ডিভাইচ '%s' ক %s লৈ bind কৰিবলৈ বিফল"
#, c-format
msgid "Failed to bind mount directory %s to %s"
msgstr "মাউণ্ট ডাইৰেকটৰি %s ক %s লে বান্ধিবলে ব্যৰ্থ"
@@ -3925,9 +3689,6 @@ msgstr "SASL গ্ৰাহক context নিৰ্মাণ কৰোঁতে
msgid "Failed to create XML"
msgstr "XML নিৰ্মাণ কৰোঁতে ব্যৰ্থ"
msgid "Failed to create XML conf object"
msgstr "XML conf অবজেক্ট সৃষ্টি কৰিবলে ব্যৰ্থ"
msgid "Failed to create XML config object"
msgstr "XML সংৰূপ অবজেক্ট সৃষ্টি কৰিবলে ব্যৰ্থ"
@@ -4730,10 +4491,6 @@ msgstr "লক এৰিবলে ব্যৰ্থ"
msgid "Failed to release port %d"
msgstr "পোৰ্ট %d উন্মোচন কৰিবলে ব্যৰ্থ"
#, c-format
msgid "Failed to remove PCI ID '%s' from %s"
msgstr "PCI ID '%s' ক %s ৰ পৰা আঁতৰাবলৈ বিফল"
msgid "Failed to remove domain managed save image"
msgstr "ডমেইন ব্যৱস্থাপিত সংৰক্ষণ ছবি আতৰাবলে ব্যৰ্থ"
@@ -4745,10 +4502,6 @@ msgstr "ব্যৱস্থাপিত সংৰক্ষণ ফাইল '%s
msgid "Failed to remove managed save image for domain %s"
msgstr "ডমেইন %s ৰ বাবে ব্যৱস্থাপিত সংৰক্ষণ ছবি আতৰাবলে ব্যৰ্থ"
#, c-format
msgid "Failed to remove slot for PCI device '%s' from %s"
msgstr "%s ৰ পৰা PCI ডিভাইচ '%s' ৰ বাবে স্লট আতৰাবলে ব্যৰ্থ"
#, c-format
msgid "Failed to remove storage volume '%s'(%s)"
msgstr "সংৰক্ষণ ভলিউম '%s'(%s) আতৰাবলে ব্যৰ্থ"
@@ -5006,10 +4759,6 @@ msgstr "স্নেপশ্বট লবলে ব্যৰ্থ হল: %s"
msgid "Failed to terminate process %lld with SIG%s"
msgstr "প্ৰক্ৰিয়া %lld অন্ত কৰিবলে ব্যৰ্থ SIG%s"
#, c-format
msgid "Failed to trigger a re-probe for PCI device '%s'"
msgstr "PCI ডিভাইচ '%s' ৰ কাৰণে এটা re-probe ট্ৰিগাৰ কৰিবলৈ বিফল"
#, c-format
msgid "Failed to truncate file '%s'"
msgstr "ফাইল '%s' চুটি কৰিবলে ব্যৰ্থ"
@@ -5777,13 +5526,6 @@ msgstr "অবৈধ প্ৰমাণীকৰণ পদ্ধতি: '%s'"
msgid "Invalid back reference"
msgstr "অবৈধ পিছ প্ৰসংগতা"
msgid "Invalid base64 data"
msgstr "অবৈধ base64 তথ্য"
#, c-format
msgid "Invalid boolean value for field '%s'"
msgstr "ফিল্ড '%s' ৰ বাবে অবৈধ বুলিয়ান মান"
#, c-format
msgid "Invalid bridge mac address '%s' in network '%s'"
msgstr "নেটৱৰ্ক '%s' ত অবৈধ ব্ৰিজ mac ঠিকনা '%s'"
@@ -6126,10 +5868,6 @@ msgid ""
"definition"
msgstr "নেটৱৰ্ক '%s' IPv6 স্থিৰ হস্ট বিৱৰণত MAC ঠিকনা '%s' ধাৰ্য্য কৰাটো অবৈধ"
#, c-format
msgid "Invalid type '%s' requested for parameter '%s', actual type is '%s'"
msgstr "প্ৰাচল '%s' ৰ বাবে অবৈধ ধৰণ '%s' অনুৰোধ কৰা হৈছে, প্ৰকৃত ধৰণ হল '%s'"
#, c-format
msgid ""
"Invalid use of 'floor' on interface with MAC address %s - network '%s' has "
@@ -6142,26 +5880,6 @@ msgstr ""
msgid "Invalid value '%s' for VMX entry '%s'"
msgstr "VMX প্ৰবিষ্টি '%s' ৰ বাবে অবৈধ মান '%s'"
#, c-format
msgid "Invalid value for field '%s': expected double"
msgstr "ফিল্ড '%s' ৰ বাবে অবৈধ মান: প্ৰত্যাশিত double"
#, c-format
msgid "Invalid value for field '%s': expected int"
msgstr "ফিল্ড '%s' ৰ বাবে অবৈধ মান: int প্ৰত্যাশিত"
#, c-format
msgid "Invalid value for field '%s': expected long long"
msgstr "ফিল্ড '%s' ৰ বাবে অবৈধ মান: প্ৰত্যাশিত long long"
#, c-format
msgid "Invalid value for field '%s': expected unsigned int"
msgstr "ফিল্ড '%s' ৰ বাবে অবৈধ মান: প্ৰত্যাশিত unsigned int"
#, c-format
msgid "Invalid value for field '%s': expected unsigned long long"
msgstr "ফিল্ড '%s' ৰ বাবে অবৈধ মান: প্ৰত্যাশিত unsigned long long"
msgid "Invalid value for number of CPUs to show"
msgstr "দেখুৱাব লগিয়া CPUs ৰ বাবে সংখ্যাৰ অবৈধ মান"
@@ -6900,10 +6618,6 @@ msgstr "cellid %u ৰ সৈতে একাধিক memnode উপাদান
msgid "Multiqueue devices are not supported on this system"
msgstr "এই চিস্টেমত বহুশাৰী ডিভাইচ সমৰ্থিত নহয়"
#, c-format
msgid "Multiqueue network is not supported for: %s"
msgstr "বহুশাৰী নেটৱৰ্ক সমৰ্থিত নহয়: %s"
#, c-format
msgid "Must use --rename or --clone to change %s to %s"
msgstr "%s ক %s লে সলনি কৰিবলে --rename অথবা --clone ব্যৱহাৰ কৰিব লাগিব"
@@ -6921,10 +6635,6 @@ msgstr "NULL NetworkDef"
msgid "NULL string parameter '%s'"
msgstr "NULL স্ট্ৰিং প্ৰাচল '%s'"
#, c-format
msgid "NULL value for field '%s'"
msgstr "ফিল্ড '%s' ৰ বাবে NULL মান"
msgid "NUMA cell number"
msgstr "সংখ্যা"
@@ -7133,9 +6843,6 @@ msgstr "কোনো JSON বিশ্লেষকৰ বাস্তবায়
msgid "No PCI buses available"
msgstr "কোনো PCI বাচ উপলব্ধ নাই"
msgid "No UNIX process ID available"
msgstr "কোনো UNIX প্ৰক্ৰিয়া ID উপলব্ধ নাই"
#, c-format
msgid "No active operation on device: %s"
msgstr "ডিভাইচত কোনো সক্ৰিয় কাৰ্য্য নাই: %s"
@@ -7924,9 +7631,6 @@ msgid ""
"Query parameter 'no_verify' has unexpected value '%s' (should be 0 or 1)"
msgstr "প্ৰশ্নৰ প্ৰাচল 'no_verify' ৰ অপ্ৰত্যাশিত মান '%s' (0 অথবা 1 হব লাগে) "
msgid "Query parameter 'no_verify' has unexpected value (should be 0 or 1)"
msgstr "প্ৰশ্নৰ প্ৰাচল 'no_verify' ৰ অপ্ৰত্যাশিত মান (0 অথবা 1 হব লাগে) "
#, c-format
msgid ""
"Query parameter 'proxy' contains unexpected type '%s' (should be (http|"
@@ -8418,9 +8122,6 @@ msgstr "এই চকেটত ফাইল বিৱৰকসমূহ পঠ
msgid "Serial port index %d out of [0..3] range"
msgstr "ক্ৰমিক পৰ্ট সূচী %d [0..3] বিস্তাৰৰ বাহিৰ"
msgid "Server name not in URI"
msgstr "চাৰ্ভাৰৰ নাম URl ত নাই"
msgid "Servname not supported for ai_socktype"
msgstr "ai_socktype ৰ বাবে Servname সমৰ্থিত নহয়"
@@ -8943,14 +8644,6 @@ msgstr "লক্ষ্য নিয়ন্ত্ৰক ধৰণ %s উৎস %s
msgid "Target controller vectors %d does not match source %d"
msgstr "লক্ষ্য নিয়ন্ত্ৰক সদিশসমূহ %d উৎস %d ৰ সৈতে মিল নাখায়"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"লক্ষ্য ডিভাইচ PCI ঠিকনা %04x:%02x:%02x.%02x উৎস %04x:%02x:%02x.%02x ৰ সৈতে মিল "
"নাখায়"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr "লক্ষ্য ডিভাইচ ঠিকনা ধৰণ %s উৎস %s ৰ সৈতে মিল নাখায়"
@@ -9453,10 +9146,6 @@ msgstr "%s ৰ বাবে অত্যাধিক ফাইলচিস্ট
msgid "Too many interfaces '%d' for limit '%d'"
msgstr "সীমা '%d' ৰ বাবে অত্যাধিক আন্তঃপৃষ্ঠ '%d'"
#, c-format
msgid "Too many job stats '%d' for limit '%d'"
msgstr "সীমা '%d' ৰ বাবে অত্যাধিক কাৰ্য্য পৰিসংখ্যা '%d'"
#, c-format
msgid "Too many migration parameters '%d' for limit '%d'"
msgstr "সীমা '%d' ৰ বাবে অত্যাধিক প্ৰব্ৰজন প্ৰাচল '%d'"
@@ -9711,10 +9400,6 @@ msgstr "%s লে সলনি কৰিবলে অক্ষম"
msgid "Unable to change to root dir"
msgstr "MaxMemorySize পৰিবৰ্তন কৰোঁতে ব্যৰ্থ"
#, c-format
msgid "Unable to chdir(%s)"
msgstr "chdir(%s) কৰিবলৈ অক্ষম"
#, c-format
msgid "Unable to check interface %s"
msgstr "আন্তঃপৃষ্ঠ %s নিৰীক্ষণ কৰিবলে অক্ষম"
@@ -9936,10 +9621,6 @@ msgstr "বাৰ্তাৰ পেল'ড এনক'ড কৰিবলে অ
msgid "Unable to encode number of FDs"
msgstr "FDs ৰ সংখ্যা এনক'ড কৰিবলে অক্ষম"
#, c-format
msgid "Unable to exec shell %s"
msgstr "শ্বেল %s exec কৰিবলৈ অক্ষম"
msgid "Unable to find 'cpuacct' cgroups controller mount"
msgstr "'cpuacct' cgroups নিয়ন্ত্ৰক মাউণ্ট পাবলে অক্ষম"
@@ -9997,9 +9678,6 @@ msgstr "DBus অধিবেশন বাচ সংযোগ প্ৰাপ্
msgid "Unable to get DBus system bus connection: %s"
msgstr "DBus চিস্টেম বাচ সংযোগ প্ৰাপ্ত কৰিবলে অক্ষম: %s"
msgid "Unable to get Host CPU set"
msgstr "হস্ট CPU সংহতি প্ৰাপ্ত কৰিবলে অক্ষম"
#, c-format
msgid "Unable to get LVM key for %s"
msgstr "%s ৰ বাবে LVM কি' প্ৰাপ্ত কৰিবলে অক্ষম"
@@ -10061,9 +9739,6 @@ msgstr "ioctl দ্বাৰা মুক্ত লুপ ডিভাইচ
msgid "Unable to get free slot number"
msgstr "মুক্ত স্লট সংখ্যা প্ৰাপ্ত কৰিবলে অক্ষম"
msgid "Unable to get host metric Information"
msgstr "হস্ট মেট্ৰিক তথ্য প্ৰাপ্ত কৰিবলে অক্ষম"
#, c-format
msgid "Unable to get index for interface %s"
msgstr "আন্তঃপৃষ্ঠ %s ৰ বাবে সূচী প্ৰাপ্ত কৰিবলে অক্ষম"
@@ -10307,13 +9982,6 @@ msgstr "ক্লাচ আইডি '%s' বিশ্লেষণ কৰিব
msgid "Unable to parse current SELinux context '%s'"
msgstr "বৰ্তমান SELinux পৰিপ্ৰেক্ষতিত '%s' বিশ্লেষণ কৰিবলে অক্ষম"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "devaddr স্থিতিমাপ '%s' বিশ্লেষণ কৰিবলৈ ব্যৰ্থ"
msgid "Unable to parse given mac address"
msgstr "প্ৰদান কৰা mac ঠিকনা বিশ্লেষণ কৰিবলে অক্ষম"
msgid "Unable to parse integer parameter"
msgstr "পূৰ্ণসংখ্যা প্ৰাচল বিশ্লেষণ কৰিবলে অক্ষম"
@@ -10596,14 +10264,6 @@ msgstr "বান্ধনী লক্ষ্য %s বান্ধীবলে
msgid "Unable to truncate %s"
msgstr "%s চুটি কৰিবলে অক্ষম"
msgid "Unable to unescape command"
msgstr "কমান্ড unescape কৰিবলে অক্ষম"
#, c-format
msgid "Unable to use MAC address starting with reserved value 0xFE - '%s' - "
msgstr ""
"সংৰক্ষিত মান 0xFE - '%s' - ৰ সৈতে আৰম্ভ হোৱা MAC ঠিকনা ব্যৱহাৰ কৰিবলে অক্ষম"
#, c-format
msgid "Unable to verify TLS peer: %s"
msgstr "TLS সমনীয়া সতা সত্য নিৰূপণ কৰিবলে অক্ষম: %s"
@@ -11809,11 +11469,6 @@ msgstr "এটাৰ অধিক ডিভাইচৰ বাবে ব্য
msgid "booted"
msgstr "বুটেড"
msgid ""
"booting from assigned devices is only supported for PCI, USB and SCSI devices"
msgstr ""
"ধাৰ্য্যত ডিভাইচসমূহৰ পৰা বুটিং কেৱল PCI, USB আৰু SCSI ডিভাইচসমূহৰ বাবে সমৰ্থিত"
#, c-format
msgid "bridge %s doesn't exist"
msgstr "ব্ৰিজ %s অস্তিত্ববান নহয়"
@@ -12296,10 +11951,6 @@ msgstr "সাময়িক ডমেইনৰ স্নেপশ্বটৰ প
msgid "cannot halt after transient domain snapshot"
msgstr "পৰিবৰ্তনশীল ডমেইন স্নেপশ্বটৰ পিছত ৰখিব নোৱাৰি"
#, c-format
msgid "cannot hot unplug multifunction PCI device: %.4x:%.2x:%.2x.%.1x"
msgstr "বহুকাৰ্য্য PCI ডিভাইচক হট আনপ্লাগ কৰিব নোৱাৰি: %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "cannot initialize cert object: %s"
msgstr "প্ৰমাণপত্ৰ অবজেক্ট আৰম্ভ কৰিব নোৱাৰি: %s"
@@ -13650,10 +13301,6 @@ msgstr "dev->id বাফাৰ অভাৰফ্লো: %s %s"
msgid "dev->name buffer overflow: %.3d:%.3d"
msgstr "dev->name বাফাৰ অভাৰফ্ল': %.3d:%.3d"
#, c-format
msgid "dev->name buffer overflow: %.4x:%.2x:%.2x.%.1x"
msgstr "dev->name বাফাৰ অভাৰফ্ল: %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "device %s iommu_group symlink %s has invalid group number %s"
msgstr "ডিভাইচ %s iommu_group symlink %s ত অবৈধ দল নম্বৰ %s আছে"
@@ -14889,9 +14536,6 @@ msgstr "ফাইল '%s' লৈ লিখোঁতে ব্যৰ্থ"
msgid "fatal signal %d"
msgstr "মাৰাত্মক সংকেত %d"
msgid "fd and fdset must be valid"
msgstr "fd আৰু fdset বৈধ হব লাগিব"
msgid "fd must be valid"
msgstr "fd বৈধ হব লাগিব"
@@ -15175,10 +14819,6 @@ msgstr "সংহতি কৰিবলে হস্ট cpu সংখ্যা(
msgid "host device already exists"
msgstr "হস্ট ডিভাইচ ইতিমধ্যে অস্তিত্ববান"
#, c-format
msgid "host pci device %.4x:%.2x:%.2x.%.1x not found"
msgstr "হোস্ট pci ডিভাইচ %.4x:%.2x:%.2x.%.1x পোৱা নাযায়"
#, c-format
msgid "host reports map buffer length exceeds maximum: %d > %d"
msgstr "গৃহস্থই map buffer length সৰবাধিকতকৈ অধিক বুলি কয়: %d > %d"
@@ -15288,9 +14928,6 @@ msgstr "যদি উপলব্ধ সংযোগ URl ত পাছৱৰ্
msgid "incomplete metadata in '%s'"
msgstr "'%s' ত মেটাডাটা অসম্পূৰ্ণ"
msgid "incomplete return information"
msgstr "অসম্পূৰ্ণ ঘুৰাই দিয়া তথ্য"
#, c-format
msgid "incomplete save header in '%s'"
msgstr "'%s' ত অসম্পূৰ্ণ ৰক্ষাৰ হেডাৰ"
@@ -15563,10 +15200,6 @@ msgstr "অবৈধ তৰ্ক প্ৰদান কৰা হৈছে"
msgid "invalid argument: %s"
msgstr "অবৈধ তৰ্ক: %s"
#, c-format
msgid "invalid base64 in '%s'"
msgstr "%s ত অবৈধ base64"
msgid "invalid catchup limit"
msgstr "অবৈধ catchup সীমা"
@@ -19082,10 +18715,6 @@ msgstr "এই নে'টৱৰ্ক ইতিমধ্যে আছে"
msgid "this platform is missing dlopen"
msgstr "এই প্লেটফৰ্মত dlopen সন্ধানহীন"
#, c-format
msgid "this qemu doesn't support RNG device type '%s'"
msgstr "এই qemu এ RNG ডিভাইচ ধৰণ '%s' সমৰ্থন নকৰে"
msgid "this qemu doesn't support the rng-egd backend"
msgstr "এই qemu এ rng-egd বেকএণ্ড সমৰ্থন নকৰে"
@@ -19503,10 +19132,6 @@ msgstr "ডিস্ক %s ৰ বাবে পৰিসংখ্যা কৰ
msgid "unable to unload already unloaded profile"
msgstr "ইতিমধ্যে আনল'ড কৰা আলেখ্য আনল'ড কৰিবলে অক্ষম"
#, c-format
msgid "unable to visit backing chain file %s"
msgstr "বেকিং শৃংখল ফাইল %s ভ্ৰমণ কৰিবলে অক্ষম"
#, c-format
msgid "unable to wait for process %lld"
msgstr "প্ৰক্ৰিয়া %lld ৰ বাবে অপেক্ষা কৰিবলে অক্ষম"
@@ -19566,14 +19191,6 @@ msgstr "অপ্ৰত্যাশিত %s কাৰ্য্য: %d"
msgid "unexpected OpenVZ URI path '%s', try openvz:///system"
msgstr "অপ্ৰত্যাশিত OpenVZ URI পথ '%s', openvz:///system প্ৰচেষ্টা কৰক"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///session"
msgstr "অপ্ৰত্যাশিত QEMU URI পথ '%s', qemu:///session প্ৰচেষ্টা কৰক"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///system"
msgstr "অপ্ৰত্যাশিত QEMU URI পথ '%s', qemu:///system প্ৰচেষ্টা কৰক"
#, c-format
msgid ""
"unexpected VMware URI path '%s', try vmwareplayer:///session, vmwarews:///"
@@ -20098,14 +19715,6 @@ msgstr "অজ্ঞাত ড্ৰাইভাৰ বিন্যাস মা
msgid "unknown driver name '%s'"
msgstr "অজ্ঞাত ড্ৰাইভাৰ নাম '%s'"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///session)"
msgstr "অজ্ঞাত চালকৰ পথ '%s' দিয়া হৈছে (vbox:///session চেষ্টা কৰক)"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///system)"
msgstr "অজ্ঞাত চালকৰ পথ '%s' দিয়া হৈছে (vbox:///system চেষ্টা কৰক)"
#, c-format
msgid "unknown enable value '%s'"
msgstr "অজ্ঞাত সামৰ্থবান মান '%s'"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Asturian\n"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Baluchi\n"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"

View File

@@ -7,9 +7,9 @@
# Miroslav Ivanov <kiro.kopeleto@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-26 07:16+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/fedora/"
@@ -229,9 +229,6 @@ msgstr "Не е открит домейна: %s"
msgid "Domain restored from %s\n"
msgstr "Домейна бе възстановен от %s\n"
msgid "Failed to allocate memory"
msgstr "Неуспешно заделяне на памет"
#, c-format
msgid "Failed to attach device from %s"
msgstr "Неуспешно прикачане на устройство от %s"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-04-24 06:13+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bengali (http://www.transifex.com/projects/p/fedora/language/"

View File

@@ -8,9 +8,9 @@
# runab <runab@redhat.com>, 2006-2010
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-26 07:10+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bengali (India) (http://www.transifex.com/projects/p/libvirt/"
@@ -38,43 +38,6 @@ msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" ডিফল্ট পাথ:\n"
"\n"
" কনফিগারেশন ফাইল (-f দ্বারা ওভার-রাইড না হলে):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" সকেট:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA সার্টিফিকেট: $HOME/.pki/libvirt/cacert.pem\n"
" সার্ভার সার্টিফিকেট: $HOME/.pki/libvirt/servercert.pem\n"
" সার্ভার ব্যক্তিগত কী: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID ফাইল:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -1198,20 +1161,9 @@ msgstr "সর্বাধিক iface সীমা %d অতিক্রান
msgid "Failed"
msgstr "বিফল"
#, c-format
msgid "Failed to add PCI device ID '%s' to %s"
msgstr "PCI ডিভাইসের ID '%s', %s-এ যোগ করতে ব্যর্থ"
#, c-format
msgid "Failed to add slot for PCI device '%s' to %s"
msgstr "PCI ডিভাইস '%s'-র জন্য %s-র মধ্যে স্লট যোগ করতে ব্যর্থ"
msgid "Failed to allocate XML buffer"
msgstr "XML বাফার বরাদ্দ করতে ব্যর্থ"
msgid "Failed to allocate memory"
msgstr "মেমরি বরাদ্দ করতে ব্যর্থ"
msgid "Failed to allocate tty"
msgstr "tty বরাদ্দ করতে ব্যর্থ"
@@ -1233,10 +1185,6 @@ msgstr "ইন্টারফেস সংযুক্ত করতে ব্য
msgid "Failed to autostart VM '%s': %s"
msgstr "VM '%s' autostart করতে ব্যর্থ: %s"
#, c-format
msgid "Failed to bind PCI device '%s' to %s"
msgstr "PCI ডিভাইস '%s'-কে %s-এ বাইন্ড করতে ব্যর্থ"
msgid "Failed to build pidfile path."
msgstr "pidfile পাথ নির্মাণ করতে ব্যর্থ"
@@ -1630,10 +1578,6 @@ msgstr "পুল %s নতুন করে নির্মাণ করতে
msgid "Failed to register shutdown timeout"
msgstr "বন্ধ করার সময়সীমা ধার্য করতে ব্যর্থ"
#, c-format
msgid "Failed to remove PCI ID '%s' from %s"
msgstr "PCI ID '%s'-কে %s থেকে মুছে ফেলতে ব্যর্থ"
#, c-format
msgid "Failed to reset PCI device: %s"
msgstr "PCI ডিভাইস পুনরায় নির্ধারণ করতে ব্যর্থ: %s"
@@ -1721,10 +1665,6 @@ msgstr "ডোমেইন %s সাসপেন্ড অবস্থায় স
msgid "Failed to switch root mount into slave mode"
msgstr "root মাউন্টকে স্লেভ মোডে পরিবর্তন করতে ব্যর্থ"
#, c-format
msgid "Failed to trigger a re-probe for PCI device '%s'"
msgstr "PCI ডিভাইস '%s'-র জন্য পুনরায় অনুসন্ধান কর্ম আরম্ভ করতে ব্যর্থ"
#, c-format
msgid "Failed to truncate volume with path '%s' to 0 bytes"
msgstr "'%s' পাথ সহ ভলিউমকে বাইটে ছাঁটাই করতে ব্যর্থ"
@@ -1954,9 +1894,6 @@ msgstr "অবৈধ আর্গুমেন্ট"
msgid "Invalid back reference"
msgstr "অবৈধ ব্যাক রেফারেন্স"
msgid "Invalid base64 data"
msgstr "অবৈধ base64 তথ্য"
#, c-format
msgid "Invalid bridge mac address '%s' in network '%s'"
msgstr "অবৈধ ব্রিজ mac ঠিকানা '%s', '%s' নেটওয়ার্কে"
@@ -2497,9 +2434,6 @@ msgstr "সকেট ইন্টার-ফেসের সাথে <source> 'p
msgid "No JSON parser implementation is available"
msgstr "কোনো JSON পার্সারের বাস্তবায়ন উপলব্ধ নেই"
msgid "No UNIX process ID available"
msgstr "কোনো UNIX প্রক্রিয়া অাইডি উপলব্ধ নয়"
msgid "No address associated with hostname"
msgstr "হোস্টনামের সংগে কোনো ঠিকানা সংশ্লিষ্ট নেই"
@@ -3153,14 +3087,6 @@ msgstr "টার্গেট কন্ট্রোলার ধরন %s %s স
msgid "Target controller vectors %d does not match source %d"
msgstr "টার্গেট কন্ট্রোলার ভেক্টর %d %d সোর্সের সংগে মেলে না"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"টার্গেট ডিভাইস PCI ঠিকানা %04x:%02x:%02x.%02x সোর্স %04x:%02x:%02x.%02x এর "
"সংগে মেলে না"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr "টার্গেট ডিভাইস ঠিকানা ধরন %s %s সোর্সের সংগে মেলে না"
@@ -3519,10 +3445,6 @@ msgstr "মনিটর পাথ %s খুলতে ব্যর্থ"
msgid "Unable to parse class id '%s'"
msgstr "ক্লাস অাইডি পার্জ করতে ব্যর্থ '%s'"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "devaddr পরামিতি '%s' পার্স করতে ব্যর্থ"
msgid "Unable to put monitor into non-blocking mode"
msgstr "নন-ব্লকিং মোডে মনিটর স্থাপন করতে ব্যর্থ"
@@ -5313,10 +5235,6 @@ msgstr "hash lookup NULL পয়েন্টারে এসেছে"
msgid "host CPU vendor does not match required CPU vendor %s"
msgstr "হোস্ট CPU ভেন্ডার vendor does not match required CPU vendor %s"
#, c-format
msgid "host pci device %.4x:%.2x:%.2x.%.1x not found"
msgstr "হোস্ট pci ডিভাইস %.4x:%.2x:%.2x.%.1x পাওয়া যায়নি"
#, c-format
msgid "host reports map buffer length exceeds maximum: %d > %d"
msgstr "হোস্ট দ্বারা চিহ্নিত ম্যাপ বাফারের দৈর্ঘ্য সর্বাধিক মাপের চেয়ে বেশি: %d > %d"
@@ -5553,10 +5471,6 @@ msgstr "XML-র দৈর্ঘ্য বৈধ নয়: %d"
msgid "invalid argument supplied"
msgstr "অবৈধ অার্গুমেন্ট সরবরাহ করা হয়েছে"
#, c-format
msgid "invalid base64 in '%s'"
msgstr "%s-র মধ্যে অবৈধ base64"
msgid "invalid catchup limit"
msgstr "অবৈধ catchup সীমা"
@@ -7276,10 +7190,6 @@ msgstr "নিরাপত্তার কনটেক্সট '%s', '%s'-র
msgid "unable to set tty attributes: %s"
msgstr "tty-র বৈশিষ্ট্য নির্ধারণ করতে ব্যর্থ: %s"
#, c-format
msgid "unable to visit backing chain file %s"
msgstr "%s ব্যাকিং চেন ফাইলে পৌঁছাতে ব্যর্থ"
msgid "undefine VM on source"
msgstr "উৎসস্থলের মধ্যে VM-র ব্যাখ্যা বাতিল করুন"
@@ -7306,14 +7216,6 @@ msgstr "অপ্রত্যাশিত %s কাজ: %d"
msgid "unexpected OpenVZ URI path '%s', try openvz:///system"
msgstr "অপ্রত্যাশিত OpenVZ URI পাথ '%s', openvz:///system প্রচেষ্টা করুন"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///session"
msgstr "অপ্রত্যাশিত QEMU URI পাথ '%s', qemu:///session প্রচেষ্টা করুন"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///system"
msgstr "অপ্রত্যাশিত QEMU URI পাথ '%s', qemu:///system প্রচেষ্টা করুন"
#, c-format
msgid "unexpected accessmode %d"
msgstr "অপ্রত্যাশিত accessmode %d"
@@ -7733,14 +7635,6 @@ msgstr "অজানা ধরনের ডিস্ক '%s'"
msgid "unknown driver format value '%s'"
msgstr "অজানা ড্রাইভার ফর্ম্যাট মান '%s'"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///session)"
msgstr "ড্রাইভারের অজানা পাথ '%s' উল্লিখিত হয়েছে (vbox:///session প্রয়োগ করুন)"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///system)"
msgstr "ড্রাইভারের অজানা পাথ '%s' উল্লিখিত হয়েছে (vbox:///system প্রয়োগ করুন)"
msgid "unknown error"
msgstr "অজানা ত্রুটি"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Tibetan\n"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Breton\n"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Bodo\n"

View File

@@ -7,9 +7,9 @@
# Daniel <veillard@redhat.com>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-26 07:12+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Bosnian (http://www.transifex.com/projects/p/fedora/language/"

View File

@@ -11,9 +11,9 @@
# Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>, 2018. #zanata
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-02-24 11:19+0000\n"
"Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
"Language-Team: Catalan (http://www.transifex.com/projects/p/libvirt/language/"
@@ -40,44 +40,6 @@ msgstr ""
"\n"
" DESCRIPCIÓ\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" Camis per defecte:\n"
"\n"
" Fitxer de configuració (a menys que se sobreescrigui amb -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" Certificat de l'autoritat de certificació: $HOME/.pki/libvirt/cacert."
"pem\n"
" Certificat del servidor: $HOME/.pki/libvirt/servercert.pem\n"
" Clau privada del servidor: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" Fitxer del PID:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -322,9 +284,6 @@ msgstr "No s'ha trobat el domini: %s"
msgid "Domain restored from %s\n"
msgstr "S'ha restaurat un domini des de %s\n"
msgid "Failed to allocate memory"
msgstr "No s'ha pogut assignar memòria"
#, c-format
msgid "Failed to attach device from %s"
msgstr "No s'ha pogut adjuntar el dispositiu des de %s"

View File

@@ -12,11 +12,11 @@
# Pavel Borecki <pavel.borecki@gmail.com>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"PO-Revision-Date: 2019-07-30 10:42+0000\n"
"Last-Translator: Daniel Berrange <dan-zanata@berrange.com>\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2019-10-14 06:33+0000\n"
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/fedora/language/"
"cs/)\n"
"Language: cs\n"
@@ -133,64 +133,6 @@ msgstr ""
"\n"
"Stav domény %s uložen libvirt\n"
#, c-format
msgid ""
"\n"
"Usage:\n"
" %s [option]\n"
"\n"
"Options:\n"
" -h | --help Display program help\n"
" -V | --version Display program version\n"
" -c CMD Run CMD via shell\n"
"\n"
"libvirt login shell\n"
msgstr ""
"\n"
"Použití:\n"
" %s [volba]\n"
"\n"
"Volby:\n"
" -h | --help Zobrazí nápovědu k programu\n"
" -V | --version Zobrazí verzi programu\n"
" -c PŘÍKAZ Spustit PŘÍKAZ prostřednictvím shellu\n"
"\n"
"libvirt přihlašovací shell\n"
#, c-format
msgid ""
"\n"
"Usage:\n"
" %s [options]\n"
"\n"
"Options:\n"
" -h | --help Display program help:\n"
" -v | --verbose Verbose messages.\n"
" -d | --daemon Run as a daemon & write PID file.\n"
" -l | --listen Listen for TCP/IP connections.\n"
" -t | --timeout <secs> Exit after timeout period.\n"
" -f | --config <file> Configuration file.\n"
" -V | --version Display version information.\n"
" -p | --pid-file <file> Change name of PID file.\n"
"\n"
"libvirt management daemon:\n"
msgstr ""
"\n"
"Použití:\n"
" %s [volby]\n"
"\n"
"Volby:\n"
" -h | --help Zobrazit nápovědu programu:\n"
" -v | --verbose Podrobnější zprávy.\n"
" -d | --daemon Spustit jako službu a zapsat PID soubor.\n"
" -l | --listen Očekávat TCP/IP spojení.\n"
" -t | --timeout <sekund> Ukončit po periodě časového limitu.\n"
" -f | --config <soubor> Soubor s nastaveními.\n"
" -V | --version Zobrazit informace o verzi.\n"
" -p | --pid-file <soubor> Změnit název PID souboru.\n"
"\n"
"správní proces služby libvirt:\n"
#, c-format
msgid ""
"\n"
@@ -384,10 +326,6 @@ msgstr "%s model resetátoru je virtuální a nemůže přijít na žádnou sbě
msgid "%s module is not loaded, "
msgstr "modul %s není načten."
#, c-format
msgid "%s must be run by non root users"
msgstr "je třeba, aby %s bylo spuštěné pod uživateli, kteří nejsou správci"
#, c-format
msgid "%s namespace is not available"
msgstr "jmenný prostor %s není k dispozici"
@@ -400,10 +338,6 @@ msgstr "%s nebylo nalezeno v %s"
msgid "%s not implemented on Win32"
msgstr "%s není na Win32 implementováno"
#, c-format
msgid "%s not matched against 'allowed_users' in %s"
msgstr "%s není porovnáno vůči 'allowed_users' v %s"
#, c-format
msgid "%s not parseable"
msgstr "%s není zpracovatelné"
@@ -420,10 +354,6 @@ msgstr "objekt %s nemá platný dynamický typ"
msgid "%s object is missing the required '%s' property"
msgstr "objekt %s postrádá vyžadovanou vlastnost „%s“"
#, c-format
msgid "%s takes no options"
msgstr "%s neumožňuje žádné volby"
#, c-format
msgid ""
"%s with index %d is configured for a NUMA node (%d) not present in the "
@@ -500,6 +430,10 @@ msgstr "%s: událost „%s“ pro zařízení uzlu %s\n"
msgid "%s: event '%s' for storage pool %s\n"
msgstr "%s: událost „%s“ pro fond úložiště %s\n"
#, c-format
msgid "%s: event 'lifecycle' for network %s: %s\n"
msgstr "%s: událost „lifecycle“ pro síť %s: %s\n"
#, c-format
msgid "%s: event 'lifecycle' for storage pool %s: %s\n"
msgstr "%s: událost 'lifecycle' pro fond úložiště %s: %s\n"
@@ -548,10 +482,6 @@ msgstr "%s: inicializace se nezdařila"
msgid "%s: initialization failed\n"
msgstr "%s: inicializace se nezdařila\n"
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: neplatná volba -- „%c“\n"
#, c-format
msgid ""
"%s: migration_port_max: port must be between the minimal port %d and 65535"
@@ -567,26 +497,6 @@ msgstr "%s: migration_port_min: je třeba, aby číslo portu bylo vyšší než
msgid "%s: nvdimm without a path"
msgstr "%s: nvdim bez popisu umístění"
#, c-format
msgid "%s: option '%s%s' doesn't allow an argument\n"
msgstr "%s: volba „%s%s“ neumožňuje argument\n"
#, c-format
msgid "%s: option '%s%s' is ambiguous\n"
msgstr "%s: volba „%s%s“ není jednoznačná\n"
#, c-format
msgid "%s: option '%s%s' is ambiguous; possibilities:"
msgstr "%s: volba „%s%s“ není jednoznačná; možnosti:"
#, c-format
msgid "%s: option '%s%s' requires an argument\n"
msgstr "%s: volba „%s%s“ vyžaduje argument\n"
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: volba vyžaduje argument -- „%c“\n"
#, c-format
msgid ""
"%s: remote_display_port_max: port must be between the minimal port and %d"
@@ -646,10 +556,6 @@ msgstr "%s: pro další podrobnosti vyzkoušejte --help\n"
msgid "%s: unable to determine access mode of fd %d"
msgstr "%s: nedaří se zjistit režim přístupu popisovače souboru %d"
#, c-format
msgid "%s: unrecognized option '%s%s'\n"
msgstr "%s: nerozpoznaná volba „%s%s“\n"
#, c-format
msgid "%s: unsupported hypervisor name %s\n"
msgstr "%s: nepodporovaný název hypervizoru %s\n"
@@ -1113,9 +1019,6 @@ msgstr "Umožňuje nastavení nebo změnu popisu či názvu domény."
msgid "An error occurred, but the cause is unknown"
msgstr "Došlo k chybě, ale příčina není známa"
msgid "An explicit URI must be provided when setuid"
msgstr "Při setuid je třeba poskytnout výslovnou URI"
msgid "An explicit disk format must be specified"
msgstr "Je třeba zadat výslovný formát disku"
@@ -1588,10 +1491,6 @@ msgstr "Nedaří se změnit stav domény."
msgid "Can't connect to $uri. Skipping."
msgstr "Nedaří se připojit k $uri. Přeskakuje se."
#, c-format
msgid "Can't create %s container: %s"
msgstr "Nedaří se vytvořit kontejner %s: %s"
msgid "Can't create initial configuration"
msgstr "Nedaří se vytvořit počáteční nastavení"
@@ -1841,6 +1740,9 @@ msgstr "Nedaří se vytáhnout uzly mezipaměti pod cachetune"
msgid "Cannot extract memnode nodes"
msgstr "Nedaří se vytáhnout memnode uzly"
msgid "Cannot extract memory nodes under memorytune"
msgstr "Nedaří se vytáhnout uzly paměti z memorytune"
msgid "Cannot extract monitor nodes"
msgstr "Nedaří se vytáhnout uzly monitoru"
@@ -2236,12 +2138,6 @@ msgstr "Nedaří se zapsat mapu zařízení „%s“"
msgid "Cannot write into schemata file '%s'"
msgstr "Nedaří se zapsat do souboru schéma „%s“"
msgid "Capabilities not available"
msgstr "Schopnosti nejsou k dispozici"
msgid "Capabilities not found"
msgstr "Schopnosti nenalezeny"
msgid "Capacity"
msgstr "Kapacita"
@@ -2307,6 +2203,12 @@ msgstr ""
msgid "Changing destination XML is not supported"
msgstr "Změna cílového XML není podporována"
msgid ""
"Changing device type to/from spicevmc would change default target channel "
"name"
msgstr ""
"Změna typu zařízení na/z spicevmc by změnil název výchozího cílového tunelu"
msgid "Changing fs access mode is not supported by vz driver."
msgstr ""
"Změna režimu přístupu k souborovému systému není ovladačem vz podporována."
@@ -2402,6 +2304,9 @@ msgstr "Komprimovaná migrace není podporována binárkou QEMU"
msgid "Compressed pages:"
msgstr "Komprimované stránky:"
msgid "Compression cache misses:"
msgstr "Neodbaveno mezipamětí komprese:"
msgid "Compression cache:"
msgstr "Mezipaměť komprese:"
@@ -3231,33 +3136,6 @@ msgstr "Do proudu se nedaří zapsat"
msgid "Couldn't create lock file for device '%s' in path '%s'"
msgstr "Nedaří se vytvořit zamykací soubor pro zařízení „%s“ v umístění „%s“"
msgid "Couldn't fetch Domain Information"
msgstr "Nepodařilo se získat informace o doméně"
msgid "Couldn't fetch Node Information"
msgstr "Nepodařilo se získat informace o uzlu"
msgid "Couldn't get VM information from XML"
msgstr "Nedaří se získat informace o virt. stroji z XML"
msgid "Couldn't get VM record"
msgstr "Nedaří se získat záznam o virt. stroji"
msgid "Couldn't get host metrics"
msgstr "Nedaří se získat metriky stroje"
msgid "Couldn't get host metrics - memory information"
msgstr "Nedaří se získat metriky hostitele informace o paměti"
msgid "Couldn't get the Domain Pointer"
msgstr "Nedaří se získat ukazatel domény"
msgid "Couldn't get version info"
msgstr "Nedaří se získat informace o verzi"
msgid "Couldn't parse version info"
msgstr "Nedaří se zpracovat informace o verzi"
#, c-format
msgid "Couldn't read volume target path '%s'"
msgstr "Nedaří se číst cílové umístění svazku „%s“"
@@ -3761,12 +3639,6 @@ msgstr "Systémové informace o doméně „%s“ nejsou k dispozici"
msgid "Domain Events"
msgstr "Události domény"
msgid "Domain Pointer is invalid"
msgstr "Ukazatel domény není platný"
msgid "Domain Pointer not valid"
msgstr "Neplatný ukazatel domény"
msgid ""
"Domain XML doesn't contain any disks, cannot deduce datastore and path for "
"VMX file"
@@ -3876,9 +3748,6 @@ msgstr "Doména není uspaná ani vypnutá"
msgid "Domain name contains invalid escape sequence"
msgstr "Název domény obsahuje neplatnou významu zbavující (escape) posloupnost"
msgid "Domain name is not unique"
msgstr "Jméno domény není unikátní"
msgid "Domain not found"
msgstr "Doména nebyla nalezena"
@@ -3944,9 +3813,6 @@ msgstr "Doména-0 nepodporuje požadovanou operaci"
msgid "Domain:"
msgstr "Doména:"
msgid "DomainID can't fit in 32 bits"
msgstr "DomainID se nevejde do 32 bitů"
msgid "Done.\n"
msgstr "Hotovo.\n"
@@ -4340,10 +4206,6 @@ msgstr "Nezdařilo se"
msgid "Failed new node mode for target '%s'"
msgstr "Nepodařilo se nový režim uzlu pro cíl „%s“"
#, c-format
msgid "Failed opening %s"
msgstr "Nezdařilo se otevírání %s"
msgid "Failed to accept migration connection"
msgstr "Nepodařilo se přijmout migrační spojení"
@@ -4375,10 +4237,6 @@ msgstr "Nepodařilo se přidat IP adresu %s/%d%s%s%s%s pro %s"
msgid "Failed to add PCI device %s to the inactive list"
msgstr "Nepodařilo se přidat PCI zařízení %s do seznamu neaktivních"
#, c-format
msgid "Failed to add PCI device ID '%s' to %s"
msgstr "Nepodařilo se přidat identifikátor PCI zařízení „%s“ do %s"
#, c-format
msgid "Failed to add capability %s: %d"
msgstr "Nepodařilo se přidat schopnost %s: %d"
@@ -4386,10 +4244,6 @@ msgstr "Nepodařilo se přidat schopnost %s: %d"
msgid "Failed to add signal handle watch"
msgstr "Nepodařilo se přidat hlídání obsluhy signálu"
#, c-format
msgid "Failed to add slot for PCI device '%s' to %s"
msgstr "Nepodařilo se přidat slot pro PCI zařízení „%s“ do „%s“"
#, c-format
msgid "Failed to add storage controller (name: %s, busType: %d), rc=%08x"
msgstr "Nepodařilo se přidat řadič úložiště (name: %s, busType: %d), rc=%08x"
@@ -4401,9 +4255,6 @@ msgstr "Nepodařilo se přidělit seznam PCI zařízení: %s"
msgid "Failed to allocate XML buffer"
msgstr "nepodařilo se přidělit XML vyrovnávací paměť"
msgid "Failed to allocate memory"
msgstr "Nepodařilo se alokovat paměť"
msgid "Failed to allocate memory for path"
msgstr "Nepodařil ose přidělit paměť pro umístění"
@@ -4423,9 +4274,6 @@ msgstr "Nepodařilo se přidělit model zabezpečení"
msgid "Failed to allocate tty"
msgstr "Nezdařilo se přiřazení tty"
msgid "Failed to allocate xen session"
msgstr "Nepodařilo se přidělit xen relaci"
#, c-format
msgid "Failed to apply firewall rules %s: %s"
msgstr "Nepodařilo se uplatnit pravidla brány firewall %s: %s"
@@ -4646,9 +4494,6 @@ msgstr "Nepodařilo se vytvořit kontext SASL klienta: %d (%s)"
msgid "Failed to create XML"
msgstr "Nepodařilo se vytvořit XML"
msgid "Failed to create XML conf object"
msgstr "Nepodařilo se vytvořit objekt XML nastavení"
msgid "Failed to create XML config object"
msgstr "Nepodařilo se vytvořit objekt XML nastavení"
@@ -5209,10 +5054,6 @@ msgstr "Nepodařilo se inicializovat libssh2 relaci"
msgid "Failed to initialize libvirt"
msgstr "libvirt se nepodařilo inicializovat"
#, c-format
msgid "Failed to initialize libvirt error handling"
msgstr "Nepodařilo se inicializovat libvirt obsluhu chyb"
msgid "Failed to initialize mutex"
msgstr "mutex se nepodařilo inicializovat"
@@ -5442,9 +5283,6 @@ msgstr "Nepodařilo se zpracovat MAC adresu z „%s“"
msgid "Failed to parse arguments for bhyve command"
msgstr "Nepodařilo se zpracovat argumenty pro příkaz bhyve"
msgid "Failed to parse arguments for bhyveload command"
msgstr "Nepodařilo se zpracovat argumenty pro příkaz bhyveload"
msgid "Failed to parse arguments: VM name mismatch"
msgstr "Nepodařilo se zpracovat argumenty: neshoda názvu virt. stroje"
@@ -5658,10 +5496,6 @@ msgstr "Nepodařilo se odebrat soubor spravovaného uložení „%s“"
msgid "Failed to remove managed save image for domain %s"
msgstr "Nepodařilo se odebrat obraz spravovaného uložení domény %s"
#, c-format
msgid "Failed to remove slot for PCI device '%s' from %s"
msgstr "Nepodařilo se odebrat slot pro PCI zařízení „%s“ z %s"
#, c-format
msgid "Failed to remove storage volume '%s'(%s)"
msgstr "Nepodařilo se odebrat svazek úložiště „%s“(%s)"
@@ -7003,9 +6837,6 @@ msgstr "Neplatná zpětná reference"
msgid "Invalid bandwidth %u"
msgstr "Neplatná šíře pásma %u"
msgid "Invalid base64 data"
msgstr "Neplatná data base64"
#, c-format
msgid "Invalid bridge mac address '%s' in network '%s'"
msgstr "Neplatná mac adresa síťového mostu „%s“ v síti „%s“"
@@ -7535,10 +7366,6 @@ msgstr ""
"Neplatné specifikovat MAC adres „%s“ v statické definici hosta v IPv6 síti "
"„%s“"
#, c-format
msgid "Invalid type '%s' requested for parameter '%s', actual type is '%s'"
msgstr "Neplatný typ „%s“ požadován pro parametr „%s“, skutečný typ je „%s“"
#, c-format
msgid "Invalid unsigned integer value '%s' in file '%s'"
msgstr "Neplatná celočíselná hodnota bez znaménka „%s“ v souboru „%s“"
@@ -7558,14 +7385,6 @@ msgstr "Neplatná hodnota '„%s“ pro prvek nebo atribut „%s“"
msgid "Invalid value for element priority"
msgstr "Neplatná hodnota pro prioritu prvku"
#, c-format
msgid "Invalid value for field '%s': expected int"
msgstr "Neplatná hodnota pro kolonku „%s“: očekáváno celé číslo"
#, c-format
msgid "Invalid value for field '%s': expected unsigned int"
msgstr "Neplatná hodnota pro kolonku „%s“: očekáváno celé číslo bez znaménka"
msgid "Invalid value for number of CPUs to show"
msgstr "Neplatná hodnota pro počet procesorů které ukázat"
@@ -7630,10 +7449,6 @@ msgstr "Průchod:"
msgid "Job type:"
msgstr "Typ úlohy:"
msgid "KVM device assignment is currently not supported on this system"
msgstr ""
"Přidělování KVM zařízení není na tomto systému v současnosti podporováno"
#, c-format
msgid "KVM is not supported by '%s' on this host"
msgstr "KVM není „%s“ na tomto hostiteli podporováno"
@@ -7693,6 +7508,9 @@ msgstr "Vypsat typy událostí nebo čekat na výskyt událostí sítě"
msgid "List event types, or wait for node device events to occur"
msgstr "Vypsat typy událostí, nebo čekat na výskyt události zařízení uzlu"
msgid "List event types, or wait for secret events to occur"
msgstr "Vypsat typy událostí nebo čekat na výskyt událostí tajemství"
msgid "List event types, or wait for storage pool events to occur"
msgstr "Vypsat typy událostí nebo čekat na výskyt událostí fondu úložiště"
@@ -8290,10 +8108,6 @@ msgstr "Vícero sériových zařízení není xen-xm podporováno"
msgid "Multiqueue devices are not supported on this system"
msgstr "Na tomto systému nejsou podporována zařízení s více frontami"
#, c-format
msgid "Multiqueue network is not supported for: %s"
msgstr "Vícefrontová síť není podporována pro: %s"
#, c-format
msgid "Must use --rename or --clone to change %s to %s"
msgstr "Pro změnu %s na %s je třeba použít --rename nebo --clone"
@@ -8590,12 +8404,6 @@ msgstr "Nejsou k dispozici žádné PCI sběrnice"
msgid "No UNIX caller UID available"
msgstr "Není k dispozici unixový identifikátor spouštějícího uživatele"
msgid "No UNIX process ID available"
msgstr "Není k dispozici žádný unixový identif. procesu"
msgid "No UNIX process start time available"
msgstr "Není k dispozici čas spuštění unixového procesu"
#, c-format
msgid "No active block job '%s'"
msgstr "Žádná aktivní bloková úloha „%s“"
@@ -8811,9 +8619,6 @@ msgstr "Žádný server, nazvaný „%s“"
msgid "No source device specified when formatting pool '%s'"
msgstr "Při formátování fondu „%s“ neurčeno žádné zdrojové zařízení"
msgid "No statedir specified"
msgstr "Neurčena žádná složka stavů"
#, c-format
msgid "No storage volume with key or path '%s'"
msgstr "Žádný svazek úložiště s klíčem nebo umístěním „%s“"
@@ -8968,17 +8773,6 @@ msgid "Number of CPUs in <numa> exceeds the desired maximum vcpu count"
msgstr ""
"Počet procesorů v <numa> překračuje požadované maximum počtu virt. procesorů"
#, c-format
msgid "Number of client info parameters %d exceeds max allowed limit: %d"
msgstr ""
"Počet parametrů informací o klientech %d přesahuje nejvyšší umožněný limit: "
"%d"
#, c-format
msgid "Number of client processing parameters %d exceeds max allowed limit: %d"
msgstr ""
"Počet parametrů zpracovávání klientů %d přesahuje nejvyšší umožněný limit: %d"
#, c-format
msgid "Number of leases is %d, which exceeds max limit: %d"
msgstr "Počet zápůjček je %d, což přesahuje limit: %d"
@@ -8990,10 +8784,6 @@ msgstr "Počet nejvýše zobrazených procesorů"
msgid "Number of stats entries is %d, which exceeds max limit: %d"
msgstr "Počet položek stavu je %d, což překračuje max limit: %d"
#, c-format
msgid "Number of threadpool parameters %d exceeds max allowed limit: %d"
msgstr "Počet threadpool parametrů %d překračuje nejvyšší umožněný limit: %d"
msgid "Number of vCPUs should be >= 1"
msgstr "Počet virt. procesorů by měl být vyšší nebo roven jednomu"
@@ -10152,6 +9942,10 @@ msgstr ""
msgid "SHUTDOWN_TIMEOUT must be equal or greater than 0"
msgstr "je třeba, aby SHUTDOWN_TIMEOUT bylo rovno nebo větší než 0"
#, c-format
msgid "SMM TSEG differs: source: %s, destination: '%s'"
msgstr "SMM TSEG se liší: zdroj: %s, cíl: „%s“"
msgid "SMM TSEG is only supported with q35 machine type"
msgstr "SMM TSEG je podporováno pouze s typem stroje q35"
@@ -10320,9 +10114,6 @@ msgstr "Vlastnost sériové číslo není pro sběrnici disku „%s“ podporov
msgid "Server count %zd greater than default name count %zu"
msgstr "Počet serveru %zd je vyšší než počet výchozích názvů %zu"
msgid "Server name not in URI"
msgstr "URI neobsahuje název serveru"
msgid "Server not found"
msgstr "Server nenalezen"
@@ -10488,10 +10279,6 @@ msgstr "Mapování sdílené paměti není tímto QEMU podporováno"
msgid "Shared memory:\n"
msgstr "Sdílená paměť: \n"
#, c-format
msgid "Shell '%s' should have absolute path"
msgstr "Shell „%s“ by měl mít absolutní popis umístění"
msgid "Show block device errors"
msgstr "Zobrazit chyby blokových zařízení"
@@ -10994,14 +10781,6 @@ msgstr "Cílové šasi se neshoduje se zdrojovým"
msgid "Target console type %s does not match source %s"
msgstr "Cílový typ konzole %s neodpovídá zdrojové %s"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"Adresa cílového PCI zařízení %04x:%02x:%02x.%02x neodpovídá zdrojové %04x:"
"%02x:%02x.%02x"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr "Typ adresy cílového zařízení %s neodpovídá zdroji %s"
@@ -11015,6 +10794,10 @@ msgid "Target device drive address %d:%d:%d does not match source %d:%d:%d"
msgstr ""
"Adresa jednotky cílového zařízení %d:%d:%d neodpovídá zdrojové %d:%d:%d"
#, c-format
msgid "Target device isa address %d:%d does not match source %d:%d"
msgstr "isa adresa %d:%d cílového zařízení neodpovídá zdrojové %d:%d"
#, c-format
msgid ""
"Target device virtio serial address %d:%d:%d does not match source %d:%d:%d"
@@ -11525,9 +11308,6 @@ msgstr "Příliš mnoho parametrů migrace „%d“ pro limit „%d“"
msgid "Too many model names '%d' for limit '%d'"
msgstr "Příliš mnoho názvů modelu „%d“ pro limit „%d“"
msgid "Too many monitors have the same vcpu as allocation"
msgstr "Příliš mnoho monitorů má přiřazený stejný virtuální procesor"
#, c-format
msgid "Too many network_ports '%d' for limit '%d'"
msgstr "Příliš mnoho network_ports „%d“ pro limit „%d“"
@@ -11882,10 +11662,6 @@ msgstr "Nedaří se změnit na %s"
msgid "Unable to change to root dir"
msgstr "Nelze se přesunout do kořenové složky"
#, c-format
msgid "Unable to chdir(%s)"
msgstr "Nedaří se chdir(%s)"
#, c-format
msgid "Unable to check interface %s"
msgstr "Nedaří se zjistit rozhraní %s"
@@ -12167,10 +11943,6 @@ msgstr "Nedaří se enkódovat počet popisovačů souborů"
msgid "Unable to enter mount namespace"
msgstr "Nedaří se zadat jmenný prostor připojování (mount)"
#, c-format
msgid "Unable to exec shell %s"
msgstr "Nedaří se spustit shell %s"
msgid "Unable to find 'cpuacct' cgroups controller mount"
msgstr "Nedaří se nalézt 'cpuacct' připojení (mount) řadiče cgroups"
@@ -12248,9 +12020,6 @@ msgstr "Nepodařilo se zjistit schopnosti"
msgid "Unable to get Console object for domain %s"
msgstr "Nedaří se získat objekt konzole pro doménu %s"
msgid "Unable to get Host CPU set"
msgstr "Nedaří se získat sadu procesoru hostitele"
msgid "Unable to get IP address on this platform"
msgstr "Na této platformě není možné získat IP adresu"
@@ -12388,9 +12157,6 @@ msgstr "Nedaří se získat identifikátor pevného disku, rc=%08x"
msgid "Unable to get hardDisk Id, rc=%08x"
msgstr "Nedaří se získat identifikátor hardDisk, rc=%08x"
msgid "Unable to get host metric Information"
msgstr "Nedaří se získat informace metriky hostitele"
#, c-format
msgid "Unable to get index for interface %s"
msgstr "Nedaří se získat pořadové číslo pro rozhraní %s"
@@ -12692,13 +12458,6 @@ msgstr "Nedaří se zpracovat identifikátor třídy „%s“"
msgid "Unable to parse current SELinux context '%s'"
msgstr "Nedaří se zpracovat stávající SELinux kontext „%s“"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "Nelze zpracovat parametr „%s“ devaddr"
msgid "Unable to parse given mac address"
msgstr "Nelze parsovat danou mac adresu"
msgid "Unable to parse group-name parameter"
msgstr "Nedaří se zpracovat parametr group-name"
@@ -13661,6 +13420,10 @@ msgstr "Neznámý stav SSH klíče vzdáleného serveru"
msgid "Unknown stdio handler %s"
msgstr "Neznámá obsluha stdio %s"
#, c-format
msgid "Unknown storage type: '%s'"
msgstr "Neznámý typ úložiště: „%s“"
#, c-format
msgid "Unknown uri scheme: '%s'"
msgstr "Neznámé uri schéma: „%s“"
@@ -14374,6 +14137,9 @@ msgstr "parametr řízení vstupu/výstupu není touto QEMU binárkou podporová
msgid "a device with the same address already exists "
msgstr "zařízení s touto adresou už existuje."
msgid "a redefined checkpoint must have a name"
msgstr "je třeba, aby znovu definovaný kontrolní bod měl název"
#, c-format
msgid "a secret with UUID %s already defined for use with %s"
msgstr ""
@@ -14804,6 +14570,10 @@ msgstr "rozhraní typu most postrádá prvek bond"
msgid "bool"
msgstr "bool"
#, c-format
msgid "boot order %u is already used by another device"
msgstr "pořadí zavádění %u už je používáno jiným zařízením"
#, c-format
msgid "boot order '%s' used for more than one device"
msgstr "pořadí zavádění „%s“ použito pro více než jedno zařízení"
@@ -14811,12 +14581,6 @@ msgstr "pořadí zavádění „%s“ použito pro více než jedno zařízení"
msgid "booted"
msgstr "zaveden operační systém"
msgid ""
"booting from assigned devices is only supported for PCI, USB and SCSI devices"
msgstr ""
"zavádění systému z přiřazených zařízení je podporováno pouze pro PCI, USB a "
"SCSI zařízení"
msgid "bootloader is not supported by QEMU"
msgstr "zavaděč není podporován QEMU"
@@ -16379,9 +16143,6 @@ msgstr "spojení není navázané"
msgid "connection vcpu maximum"
msgstr "maximum počtu virt. procesorů"
msgid "console stream EOF"
msgstr "Konec souboru proudu konzole"
msgid "control domain's incoming traffics"
msgstr "příchozí provoz řídící domény"
@@ -17125,6 +16886,10 @@ msgstr "disk „%s“ v tuto chvíli nemá přiřazený prostředek"
msgid "disk '%s' improperly configured for a device='lun'"
msgstr "disk „%s“ nesprávně nastaven pro device='lun'"
#, c-format
msgid "disk '%s' is empty or readonly"
msgstr "disk „%s“ je prázdný nebo pouze pro čtení"
#, c-format
msgid "disk '%s' must use snapshot mode '%s'"
msgstr "je třeba, aby disk „%s“ používal režim zachycování stavu „%s“"
@@ -17137,6 +16902,11 @@ msgstr "disk „%s“ je zadán dvakrát"
msgid "disk '%s' was not found in the domain config"
msgstr "disk „%s“ nebyl nalezen v nastavení domény"
msgid ""
"disk attributes: disk[,snapshot=type][,driver=type][,stype=type][,file=name]"
msgstr ""
"atributy disku: disk[,snapshot=typ][,driver=typ][,stype=typ][,file=název]"
#, c-format
msgid "disk backend not supported: %s"
msgstr "podpůrná vrstva disku není podporována: %s"
@@ -17465,6 +17235,10 @@ msgstr "informace o úloze domény"
msgid "domain master key file doesn't exist in %s"
msgstr "soubor hlavního klíče domény neexistuje v %s"
msgid "domain must have at least one disk to perform checkpoints"
msgstr ""
"pro provedení kontrolních bodů je třeba, aby doména měla alespoň jeden disk"
msgid "domain name or uuid"
msgstr "nikde se neopakující identifikátor názvu domény"
@@ -17653,6 +17427,9 @@ msgstr "upravit XML pro zachycený stav"
msgid "egl-headless display is not supported with this QEMU binary"
msgstr "zobrazení egl-headless není s touto binárkou QEMU podporováno"
msgid "either --list or --event <type> is required"
msgstr "je zapotřebí buď --list nebo --event <type>"
msgid "either inbound average or floor is mandatory"
msgstr "je nezbytný buď průměr vstupu nebo spodní hranice"
@@ -17842,6 +17619,10 @@ msgstr "událost „%s“ pro doménu %s: %s pro %s %s\n"
msgid "event '%s' for node device %s\n"
msgstr "událost „%s“ pro zařízení uzlu %s\n"
#, c-format
msgid "event '%s' for secret %s\n"
msgstr "událost „%s“ pro tajemství %s\n"
#, c-format
msgid "event '%s' for storage pool %s\n"
msgstr "událost „%s“ pro fond úložiště %s\n"
@@ -17850,14 +17631,32 @@ msgstr "událost „%s“ pro fond úložiště %s\n"
msgid "event 'io-error' for domain %s: %s (%s) %s\n"
msgstr "událost 'io-error' pro doménu %s: %s (%s) %s\n"
#, c-format
msgid "event 'lifecycle' for domain %s: %s %s\n"
msgstr "událost „lifecycle“ pro doménu %s: %s %s\n"
#, c-format
msgid "event 'lifecycle' for network %s: %s\n"
msgstr "událost „lifecycle“ pro síť %s: %s\n"
#, c-format
msgid "event 'lifecycle' for storage pool %s: %s\n"
msgstr "event 'lifecycle' for storage pool %s: %s\n"
#, c-format
msgid "event 'rtc-change' for domain %s: %lld\n"
msgstr "událost „rtc-change“ pro doménu %s: %lld\n"
#, c-format
msgid "event 'tunable' for domain %s:\n"
msgstr "událost „tunable“ pro doménu %s:\n"
#, c-format
msgid "event 'watchdog' for domain %s: %s\n"
msgstr ""
"událost „watchdog“ pro doménu %s: %s\n"
"\n"
msgid "event callback already tracked"
msgstr "zpětné volání události už sledováno"
@@ -18739,10 +18538,6 @@ msgstr "nepodařilo se posunout v souboru se záznamem událostí %s"
msgid "failed to seek to end of %s"
msgstr "nepodařilo se přesunout na konec %s"
#, c-format
msgid "failed to seek to end of '%s'"
msgstr "nepodařilo se přesunout na konec „%s“"
msgid "failed to serialize S-Expr"
msgstr "nezdařila se serializace S-Expr"
@@ -19374,10 +19169,6 @@ msgstr "hostitel nepodporuje funkci hyperv „%s“"
msgid "host isn't capable of IPv6"
msgstr "hostitel neumí IPv6"
#, c-format
msgid "host pci device %.4x:%.2x:%.2x.%.1x not found"
msgstr "pci zařízení hostitele %.4x:%.2x:%.2x.%.1x nenalezeno"
#, c-format
msgid "host usb device %03d.%03d not found"
msgstr "usb zařízení hostitele %03d.%03d nenalezeno"
@@ -19526,9 +19317,6 @@ msgstr "neúplný výsledek, nepodařilo se získat celkem"
msgid "incomplete result, unknown status string '%s'"
msgstr "neúplný výsledek, neznámý řetězec stavu „%s“"
msgid "incomplete return information"
msgstr "neúplná návratová informace"
#, c-format
msgid "incomplete save header in '%s'"
msgstr "nekompletní záhlaví uložení v „%s“"
@@ -19889,10 +19677,6 @@ msgstr "neplatná hodnota atributu autodeflate „%s“"
msgid "invalid backing protocol '%s'"
msgstr "neplatný protokol „%s“"
#, c-format
msgid "invalid base64 in '%s'"
msgstr "neplatné base64 v „%s“"
msgid "invalid cache size in query-migrate-cache-size reply"
msgstr "neplatná velikost mezipaměti v odpovědi na query-migrate-cache-size"
@@ -20527,10 +20311,6 @@ msgstr "libxenlight se nepodařilo připojit disk „%s“"
msgid "libxenlight failed to attach network device"
msgstr "libxenlight se nepodařilo připojit síťové zařízení"
#, c-format
msgid "libxenlight failed to attach pci device %.4x:%.2x:%.2x.%.1x"
msgstr "libxenlight se nepodařilo připojit pci zařízení %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "libxenlight failed to attach usb device Busnum:%3x, Devnum:%3x"
msgstr "libxenlight se nepodařilo připojit usb zařízení Busnum:%3x, Devnum:%3x"
@@ -20558,10 +20338,6 @@ msgstr "libxenlight se nepodařilo odpojit disk „%s“"
msgid "libxenlight failed to detach network device"
msgstr "libxenlight se nepodařilo odpojit síťové rozhraní"
#, c-format
msgid "libxenlight failed to detach pci device %.4x:%.2x:%.2x.%.1x"
msgstr "libxenlight se nepodařilo odpojit pci zařízení %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "libxenlight failed to parse UUID '%s'"
msgstr ""
@@ -21386,6 +21162,9 @@ msgstr "chybí cpuset pro iotheradpin"
msgid "missing cpuset for vcpupin"
msgstr "chybí cpuset pro vcpupin"
msgid "missing creationTime from existing checkpoint"
msgstr "chybí creationTime z existujícího kontrolního bodu"
msgid "missing creationTime from existing snapshot"
msgstr "v existujícím obrazu chybí čas vytvoření (creationTime)"
@@ -21416,6 +21195,9 @@ msgstr "chybí alternativní název diskového zařízení pro %s"
msgid "missing disk source for 'sheepdog' protocol"
msgstr "chybí zdroj disku pro protokol „sheepdog“"
msgid "missing domain in checkpoint"
msgstr "v kontrolním bodu chybí doména"
msgid "missing domain in snapshot"
msgstr "v zachyceném stavu chybí doména"
@@ -21954,12 +21736,6 @@ msgstr "dohodnuté SSF %d nebylo dostatečně silné"
msgid "negotiation SSF %d was not strong enough"
msgstr "SSF dohadování %d nebylo dostatečně odolné"
msgid ""
"neither VFIO nor KVM device assignment is currently supported on this system"
msgstr ""
"na tomto systému v tuto chvíli není podporováno ani vFIO, ani KVM "
"přiřazování zařízení"
msgid "netlink event service not running"
msgstr "služba netlink událostí není spuštěná"
@@ -22246,10 +22022,6 @@ msgstr "není k dispozici žádný ovladač spojení pro %s"
msgid "no console devices available"
msgstr "nejsou k dispozici žádná konzolová zařízení"
#, c-format
msgid "no device found on %.4x:%.2x:%.2x.%.1x"
msgstr "žádné zařízení nenalezeno na %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "no device found with alias %s"
msgstr "nenalezeno žádné zařízení s alternativním názvem %s"
@@ -22258,10 +22030,6 @@ msgstr "nenalezeno žádné zařízení s alternativním názvem %s"
msgid "no device matching MAC address %s found"
msgstr "nenalezeno žádné zařízení s MAC adresou %s"
#, c-format
msgid "no device matching MAC address %s found on %.4x:%.2x:%.2x.%.1x"
msgstr "nebylo nalezeno žádné zařízení s MAC adresou %s na %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "no disk found with alias '%s' or id '%s'"
msgstr ""
@@ -23457,14 +23225,6 @@ msgstr ""
"odpověď na query-cpu-definitions (dotaz na definice procesoru) postrádala "
"'name' (název)"
msgid "query-cpu-model-expansion reply data was missing 'model'"
msgstr ""
"odpověď na query-cpu-definitions (dotaz na definice procesoru) postrádala "
"'model'"
msgid "query-cpu-model-expansion reply data was missing 'name'"
msgstr "odpověď na query-cpu-expansion postrádala 'name' (název)"
msgid "query-events reply data was missing 'name'"
msgstr ""
"v datech odpovědi na query-events (dotaz na události) chybělo 'name' (název)"
@@ -24256,6 +24016,10 @@ msgstr "zachycený stav %s zmizel ze seznamu"
msgid "snapshot '%s' does not have a parent"
msgstr "zachycený stav „%s“ nemá sobě nadřazený"
#, c-format
msgid "snapshot '%s' has no parent"
msgstr "zachycený stav „%s“ nemá žádný jemu nadřazený"
#, c-format
msgid "snapshot '%s' lacks domain '%s' rollback info"
msgstr "zachycený stav „%s“ postrádá informace o rolback domény „%s“"
@@ -24643,6 +24407,10 @@ msgstr "cíl %s neexistuje."
msgid "target %s:%d already exists"
msgstr "cíl %s:%d už existuje"
#, c-format
msgid "target '%s' duplicated for disk sources '%s' and '%s'"
msgstr "cíl „%s“ duplikován pro diskové zdroje „%s“ a „%s“"
msgid "target NUMA node needs to be specified for memory device"
msgstr "pro paměťové zařízení je třeba určit cílový NUMA uzel"
@@ -24678,10 +24446,6 @@ msgstr "název cílové sítě"
msgid "target of disk device"
msgstr "cíl diskového zařízení"
#, c-format
msgid "target pci device %.4x:%.2x:%.2x.%.1x already exists"
msgstr "cílové pci zařízení %.4x:%.2x:%.2x.%.1x už existuje"
#, c-format
msgid "target type must be specified for %s device"
msgstr "pro zařízení %s je třeba, aby byl určen cíl"
@@ -24856,10 +24620,6 @@ msgstr "tato platforma postrádá dlopen"
msgid "this qemu does not support TLS transport for NBD"
msgstr "toto qemu nepodporuje TLS transport pro NBD"
#, c-format
msgid "this qemu doesn't support RNG device type '%s'"
msgstr "toto qemu nepodporuje zařízení generátoru náhodných čísel typu „%s“"
msgid "this qemu doesn't support the memory-backend-file object"
msgstr "toto qemu nepodporuje objekt memory-backend-file"
@@ -24931,6 +24691,9 @@ msgstr "tls-creds-x509 není touto binárkou QEMU podporováno"
msgid "too many current snapshots"
msgstr "příliš mnoho aktuálních zachycených stavů"
msgid "too many disk checkpoint requests for domain"
msgstr "příliš mnoho požadavků na kontrolní body disku pro doménu"
msgid "too many disk snapshot requests for domain"
msgstr "příliš mnoho požadavků na zachycené stavy disků pro doménu"
@@ -25526,14 +25289,6 @@ msgstr "neočekávaná akce %s: %d"
msgid "unexpected DateTime format: '%s'"
msgstr "neočekávaný formát DateTime: „%s“"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///session"
msgstr "neočekávané QEMU URI umístění „%s“, zkuste qemu:///session"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///system"
msgstr "neočekávané QEMU URI umístění „%s“, zkuste qemu:///system"
msgid "unexpected VIR_DOMAIN_DEVICE_NONE"
msgstr "neočekávané VIR_DOMAIN_DEVICE_NONE"
@@ -25683,14 +25438,6 @@ msgstr "neočekávaný vstupní model %d"
msgid "unexpected input type %d"
msgstr "neočekávaný typ vstupu %d"
#, c-format
msgid "unexpected interface URI path '%s', try interface:///session"
msgstr "neočekávané URI umístění „%s“, zkuste interface:///session"
#, c-format
msgid "unexpected interface URI path '%s', try interface:///system"
msgstr "neočekávané URI umístění „%s“, zkuste interface:///system"
#, c-format
msgid "unexpected interface type %d"
msgstr "neočekávaný typ rozhraní %d"
@@ -25815,8 +25562,8 @@ msgid "unexpected sound model %d"
msgstr "neočekávaný model zvukového zařízení %d"
#, c-format
msgid "unexpected storage URI path '%s', try storage:///system"
msgstr "neočekávaný popis umístění URI úložiště „%s“, zkuste storage:///system"
msgid "unexpected source mode %d"
msgstr "neočekávaný režim zdroje %d"
#, c-format
msgid "unexpected storage mode for '%s'"
@@ -25917,6 +25664,10 @@ msgstr "neznámý"
msgid "unknown %s action: %s"
msgstr "neznámá %s akce: %s"
#, c-format
msgid "unknown 'unknown' value '%s'"
msgstr "neznámá „unknown“ hodnota „%s“"
#, c-format
msgid "unknown CPU feature %s"
msgstr "neznámá funkce procesoru %s"
@@ -26167,14 +25918,6 @@ msgstr "neznámá hodnota formátu ovladače „%s“"
msgid "unknown driver name '%s'"
msgstr "neznámý název ovladače „%s“"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///session)"
msgstr "zadán neznámý popis umístění ovladače „%s“ (zkuste vbox:///session)"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///system)"
msgstr "zadán neznámý popis umístění ovladače „%s“ (zkuste vbox:///system)"
#, c-format
msgid "unknown dumpformat '%d'"
msgstr "neznámý formát výpisu „%d“"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-04-24 05:01+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Welsh (http://www.transifex.com/projects/p/fedora/language/"

View File

@@ -9,9 +9,9 @@
# Magnus Larsson <fedoratrans@gmail.com>, 2006.
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-26 08:52+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Danish (http://www.transifex.com/projects/p/fedora/language/"

View File

@@ -19,9 +19,9 @@
# Florian H. <postfuerflo@gmail.com>, 2016. #zanata
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2016-04-01 11:32+0000\n"
"Last-Translator: Florian H. <postfuerflo@gmail.com>\n"
"Language-Team: German (http://www.transifex.com/projects/p/libvirt/language/"
@@ -56,43 +56,6 @@ msgstr ""
"\n"
" BESCHREIBUNG\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" Standard Pfade:\n"
"\n"
" Konfigurationsdatei (sofern nicht mit -f überschrieben):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA Zertifikat: $HOME/.pki/libvirt/cacert.pem\n"
" Server Zertifikat: $HOME/.pki/libvirt/servercert.pem\n"
" Server Zertifikat Schlüssel: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID Datei:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" Default paths:\n"
@@ -120,34 +83,6 @@ msgstr ""
" $XDG_RUNTIME_DIR/libvirt/virtlockd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgstr ""
"\n"
" Standard Pfade:\n"
"\n"
" Konfigurationsdatei (sofern nicht ersetzt durch -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID Datei (sofern nicht ersetzt durch -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -196,40 +131,6 @@ msgstr ""
"\n"
"Domain %s Status gesichert durch libvirt\n"
#, c-format
msgid ""
"\n"
"Usage:\n"
" %s [options]\n"
"\n"
"Options:\n"
" -h | --help Display program help:\n"
" -v | --verbose Verbose messages.\n"
" -d | --daemon Run as a daemon & write PID file.\n"
" -l | --listen Listen for TCP/IP connections.\n"
" -t | --timeout <secs> Exit after timeout period.\n"
" -f | --config <file> Configuration file.\n"
" -V | --version Display version information.\n"
" -p | --pid-file <file> Change name of PID file.\n"
"\n"
"libvirt management daemon:\n"
msgstr ""
"\n"
"Verwendung:\n"
" %s [Optionen]\n"
"\n"
"Optionen:\n"
"-h | --help Anzeige Programm-Hilfe:\n"
"-v | --verbose Ausführliche Meldungen.\n"
"-d | --daemon Ausführen als Daemon & schreiben PID-Datei.\n"
"-l | --listen Horchen für TCP/IP Verbindungen.\n"
"-t | --timeout <secs> Ausstieg nach Timeout.\n"
"-f | --config <file> Konfigurationsdatei.\n"
"-V | --version Anzeige Versions-Information.\n"
" -p | --pid-file <file> Ändern Namen der PID-Datei.\n"
"\n"
"libvirt Verwaltungs Daemon:\n"
msgid " NAME\n"
msgstr " NAME\n"
@@ -328,18 +229,10 @@ msgstr "%s fehlt die 'type' Eigenschaft"
msgid "%s length greater than maximum: %d > %d"
msgstr "%s Länge größer als Höchstwert: %d > %d"
#, c-format
msgid "%s must be run by non root users"
msgstr "%s muss von Nicht-Root-Benutzer ausgeführt werden"
#, c-format
msgid "%s not implemented on Win32"
msgstr "%s nicht implementiert auf Win32"
#, c-format
msgid "%s not matched against 'allowed_users' in %s"
msgstr "%s nicht gegen 'allowed_users' in %s abgestimmt"
#, c-format
msgid "%s not parseable"
msgstr "%s konnte nicht analysiert werden"
@@ -356,10 +249,6 @@ msgstr "%s Objekt hat ungültigen dynamischen Typ"
msgid "%s object is missing the required '%s' property"
msgstr "Dem %s Objekt fehlt die erforderliche '%s' Eigenschaft"
#, c-format
msgid "%s takes no options"
msgstr "%s verwendet keine Optionen"
#, c-format
msgid "%s uri uuid action\n"
msgstr "%s uri uuid Aktion\n"
@@ -1197,10 +1086,6 @@ msgstr "Speicher kann nicht zugewiesen werden"
msgid "Can't connect to $uri. Skipping."
msgstr "Kann nicht mit $uri verbinden. Wird Übersprungen."
#, c-format
msgid "Can't create %s container: %s"
msgstr "Kann %s Container nicht erstellen: %s"
msgid "Can't create initial configuration"
msgstr "Kann initiale Konfiguration nicht erstellen"
@@ -1713,12 +1598,6 @@ msgstr "Kann virtio seriell nicht für parallele/serielle Einheiten verwenden"
msgid "Cannot write data"
msgstr "Kann Daten nicht schreiben"
msgid "Capabilities not available"
msgstr "Fähigkeiten nicht verfügbar"
msgid "Capabilities not found"
msgstr "Fähigkeiten nicht gefunden"
msgid "Capacity"
msgstr "Kapazität"
@@ -1939,20 +1818,6 @@ msgstr ""
msgid "Connected to domain %s\n"
msgstr "Verbunden mit der Domain: %s\n"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"libssh2 connection driver"
msgstr ""
"Anschluss an Sitzungs-Instanz ohne Socket-Pfad wird durch den libssh2 "
"Verbindungs-Treiber nicht unterstützt"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"ssh connection driver"
msgstr ""
"Anschluss an Sitzungs-Instanz ohne Socket-Pfad wird durch den ssh "
"Verbindungs-Treiber nicht unterstützt"
msgid "Constant pages:"
msgstr "Ständige Seiten:"
@@ -2688,33 +2553,6 @@ msgstr "Konnte nicht auf Stream schreiben"
msgid "Couldn't create lock file for device '%s' in path '%s'"
msgstr "Konnte Sperrdatei für Einheit '%s' im Pfad '%s' nicht erstellen"
msgid "Couldn't fetch Domain Information"
msgstr "Domain Information konnte nicht abgerufen werden "
msgid "Couldn't fetch Node Information"
msgstr "Knoten Information konnte nicht abgerufen werden "
msgid "Couldn't get VM information from XML"
msgstr "Konnte nicht VM information von XML erhalten"
msgid "Couldn't get VM record"
msgstr "VM Satz konnte nicht abgerufen werden"
msgid "Couldn't get host metrics"
msgstr "Konnte nicht Host-Kennzahlen abrufen"
msgid "Couldn't get host metrics - memory information"
msgstr "Konnte nicht Host-Kennzahlen - Speicher Informationen abrufen"
msgid "Couldn't get the Domain Pointer"
msgstr "Konnte Domain Zeiger nicht bekommen"
msgid "Couldn't get version info"
msgstr "Version-Info konnte nicht abgerufen werden"
msgid "Couldn't parse version info"
msgstr "Version Info kann nicht verarbeitet werden"
#, c-format
msgid "Couldn't read volume target path '%s'"
msgstr "Konnte Ziel-Pfad '%s' des Datenträgers nicht lesen"
@@ -3157,12 +2995,6 @@ msgstr "Domain '%s' läuft bereits"
msgid "Domain '%s' sysinfo are not available"
msgstr "Domäne '%s' System-Informationen sind nicht verfügbar"
msgid "Domain Pointer is invalid"
msgstr "Domain-Zeiger ist ungültig "
msgid "Domain Pointer not valid"
msgstr "Domain-Zeiger ist nicht gültig "
msgid ""
"Domain XML doesn't contain any disks, cannot deduce datastore and path for "
"VMX file"
@@ -3246,9 +3078,6 @@ msgstr "Domain ist nicht angehalten oder ausgeschaltet"
msgid "Domain name contains invalid escape sequence"
msgstr "Domäne-Name enthält ungültige Escape-Sequenz"
msgid "Domain name is not unique"
msgstr "Domain Name ist nicht eindeutig"
msgid "Domain not found"
msgstr "Domain nicht gefunden"
@@ -3298,9 +3127,6 @@ msgstr "Domain Titel dürfen keine Zeilenvorschübe enthalten"
msgid "Domain:"
msgstr "Domain:"
msgid "DomainID can't fit in 32 bits"
msgstr "DomainID passt nicht in 32 bits"
msgid "Done.\n"
msgstr "Erledigt.\n"
@@ -3673,10 +3499,6 @@ msgstr "FDC Unit index %d außerhalb dem [0..1] Bereich"
msgid "Failed"
msgstr "Fehlgeschlagen"
#, c-format
msgid "Failed opening %s"
msgstr "Öffnen von %s fehlgeschlagen"
#, c-format
msgid "Failed set TLS x509 credentials: %s"
msgstr "Konnte TLS x509 Credentials nicht setzen: %s"
@@ -3694,20 +3516,12 @@ msgstr ""
"IP Adresse %s konnte nicht zum IP Adressen-Cache für Schnittstelle %s "
"hinzugefügt werden"
#, c-format
msgid "Failed to add PCI device ID '%s' to %s"
msgstr "Hinzufügen der PCI-Geräte-ID '%s' zu %s fehlgeschlagen"
msgid "Failed to add netlink event handle watch"
msgstr " Hinzufügen von Netlink-Ereignis Handle-Überwachung fehlgeschlagen"
msgid "Failed to add signal handle watch"
msgstr " Hinzufügen von Signal Handle Überwachung fehlgeschlagen"
#, c-format
msgid "Failed to add slot for PCI device '%s' to %s"
msgstr "Hinzufügen von Slot für PCI-Gerät '%s' zu %s fehlgeschlagen"
#, c-format
msgid "Failed to allocate PCI device list: %s"
msgstr "Zuweisung für PCI Einheiten-Liste %s fehlgeschlagen"
@@ -3715,9 +3529,6 @@ msgstr "Zuweisung für PCI Einheiten-Liste %s fehlgeschlagen"
msgid "Failed to allocate XML buffer"
msgstr "Zuweisung von XML-Puffer schlug fehl"
msgid "Failed to allocate memory"
msgstr "Speicherzuweisung gescheitert"
msgid "Failed to allocate memory for path"
msgstr "Zuweisen von Speicher für Pfad fehlgeschlagen"
@@ -3734,9 +3545,6 @@ msgstr "Zuweisen Sicherheits-Modell fehlgeschlagen"
msgid "Failed to allocate tty"
msgstr "Zuweisen des TTY fehlgeschlagen"
msgid "Failed to allocate xen session"
msgstr "Zuweisen der xen Session fehlgeschlagen"
#, c-format
msgid "Failed to apply capabilities: %d"
msgstr "Anwenden der Fähigkeiten gescheitert: %d"
@@ -3766,10 +3574,6 @@ msgstr "Autostart von Speicherpool »%s« fehlgeschlagen: %s"
msgid "Failed to begin network config change transaction"
msgstr "Anfang der Netzwerk Konfig-Änderungs Transaktion gescheitert"
#, c-format
msgid "Failed to bind PCI device '%s' to %s"
msgstr "Verbinden von PCI-Gerät '%s' mit %s fehlgeschlagen"
#, c-format
msgid "Failed to bind mount directory %s to %s"
msgstr "Verbinden von Verzeichnis %s mit %s fehlgeschlagen"
@@ -3912,9 +3716,6 @@ msgstr "Erstellen des SASL-Client-Kontexts fehlgeschlagen: %d (%s)"
msgid "Failed to create XML"
msgstr "Erstellen von XML gescheitert"
msgid "Failed to create XML conf object"
msgstr "Erstellen von XML Konfigurations-Objekt gescheitert"
msgid "Failed to create XML config object"
msgstr "Erstellen von XML Konfigurations-Objekt gescheitert"
@@ -4720,10 +4521,6 @@ msgstr "Sperren Freigabe fehlgeschlagen"
msgid "Failed to release port %d"
msgstr "Port %d Freigabe fehlgeschlagen"
#, c-format
msgid "Failed to remove PCI ID '%s' from %s"
msgstr "Löschen von PCI-Gerät '%s' aus %s fehlgeschlagen"
msgid "Failed to remove domain managed save image"
msgstr "Fehler beim Entfernen des Domain-Verwalteten Sicherungs-Image"
@@ -4735,10 +4532,6 @@ msgstr "Kann verwaltete Sicherungs-Datei '%s' nicht entfernen"
msgid "Failed to remove managed save image for domain %s"
msgstr "Fehler beim Entfernen des verwalteten Sicherungs-Image der Domain %s"
#, c-format
msgid "Failed to remove slot for PCI device '%s' from %s"
msgstr "Löschen von Slot für PCI-Einheit '%s' von %s fehlgeschlagen"
#, c-format
msgid "Failed to remove storage volume '%s'(%s)"
msgstr "Konnte Datenträger '%s'(%s) nicht entfernen"
@@ -5008,11 +4801,6 @@ msgstr "Erstellen von Snapshot fehlgeschlagen: %s"
msgid "Failed to terminate process %lld with SIG%s"
msgstr "Fehler beim Beenden des Prozesses %lld mit SIG%s"
#, c-format
msgid "Failed to trigger a re-probe for PCI device '%s'"
msgstr ""
"Auslösen einer erneuten Überprüfung des PCI-Gerätes '%s' fehlgeschlagen"
#, c-format
msgid "Failed to truncate file '%s'"
msgstr "Kann Datei '%s' nicht kürzen"
@@ -5789,13 +5577,6 @@ msgstr "Ungültige Authentifikations-Methode: '%s'"
msgid "Invalid back reference"
msgstr "Ungültiger Rückverweis"
msgid "Invalid base64 data"
msgstr "Ungültige base64-Daten"
#, c-format
msgid "Invalid boolean value for field '%s'"
msgstr "Ungültige boolesche Variable für Feld »%s«"
#, c-format
msgid "Invalid bridge mac address '%s' in network '%s'"
msgstr "Ungültige Brücken MAC-Adresse '%s' in Netzwerk '%s'"
@@ -6118,12 +5899,6 @@ msgstr ""
"Unzulässige Angabe einer MAC-Adsesse '%s' in der Netzwerk '%s' IPv6 "
"statischen Host Definition "
#, c-format
msgid "Invalid type '%s' requested for parameter '%s', actual type is '%s'"
msgstr ""
"Ungültiger Typ '%s' für den Parameter '%s' angefordert, tatsächlicher Typ "
"ist '%s'"
#, c-format
msgid ""
"Invalid use of 'floor' on interface with MAC address %s - network '%s' has "
@@ -6136,26 +5911,6 @@ msgstr ""
msgid "Invalid value '%s' for VMX entry '%s'"
msgstr "Ungültiger Wert '%s' für VMX Eintrag '%s'"
#, c-format
msgid "Invalid value for field '%s': expected double"
msgstr "Ungültiger Wert für Feld '%s': Erwartete double"
#, c-format
msgid "Invalid value for field '%s': expected int"
msgstr "Ungültiger Wert für Feld '%s': Erwartete int"
#, c-format
msgid "Invalid value for field '%s': expected long long"
msgstr "Ungültiger Wert für Feld '%s': Erwartete long long"
#, c-format
msgid "Invalid value for field '%s': expected unsigned int"
msgstr "Ungültiger Wert für Feld '%s': Erwartete unsigned int"
#, c-format
msgid "Invalid value for field '%s': expected unsigned long long"
msgstr "Ungültiger Wert für Feld '%s': Erwartete unsigned long long"
msgid "Invalid value for number of CPUs to show"
msgstr "Ungültiger Wert für Anzahl der CPUs anzuzeigen"
@@ -6873,10 +6628,6 @@ msgstr "Mehrfache ältere USB-Controller werden nicht unterstützt"
msgid "Multiqueue devices are not supported on this system"
msgstr "Multiqueue Einheiten sind auf diesem System nicht unterstützt"
#, c-format
msgid "Multiqueue network is not supported for: %s"
msgstr "Multiqueue Netzwerk ist nicht unterstützt für: %s"
#, c-format
msgid "Must use --rename or --clone to change %s to %s"
msgstr "Muss --rename oder --clone verwenden um %s auf %s zu ändern"
@@ -6894,10 +6645,6 @@ msgstr "NULL NetworkDef"
msgid "NULL string parameter '%s'"
msgstr "NULL String Parameter '%s'"
#, c-format
msgid "NULL value for field '%s'"
msgstr "NULL-Wert für Feld »%s«"
msgid "NUMA cell number"
msgstr "NUMA-Zell-Nummer"
@@ -7101,12 +6848,6 @@ msgstr "Keine JSON-Parser-Implementierung verfügbar"
msgid "No PCI buses available"
msgstr "Keine PCI-Busse verfügbar"
msgid "No UNIX process ID available"
msgstr "Keine UNIX Prozess-ID verfügbar"
msgid "No UNIX process start time available"
msgstr "Keine UNIX Prozess-Startzeit verfügbar"
#, c-format
msgid "No active operation on device: %s"
msgstr "Keine aktive Operation auf Einheit: %s"
@@ -7905,10 +7646,6 @@ msgstr ""
"Abfrageparameter »no_verify« hat unerwarteten Wert »%s« (sollte 0 oder 1 "
"sein)"
msgid "Query parameter 'no_verify' has unexpected value (should be 0 or 1)"
msgstr ""
"Abfrageparameter 'no_verify' hat unerwarteten Wert (sollte 0 oder 1 sein)"
#, c-format
msgid ""
"Query parameter 'proxy' contains unexpected type '%s' (should be (http|"
@@ -8414,9 +8151,6 @@ msgstr "Senden Datei-Deskriptoren ist auf diesem Socket nicht unterstützt"
msgid "Serial port index %d out of [0..3] range"
msgstr "Serieller Port index %d außerhalb dem [0..3] Bereich"
msgid "Server name not in URI"
msgstr "Server Name nicht in URI"
msgid "Servname not supported for ai_socktype"
msgstr "Servname nicht unterstützt für ai_socktype"
@@ -8935,14 +8669,6 @@ msgstr "Ziel Controller Typ %s stimmt nicht mit der Quelle %s überein"
msgid "Target controller vectors %d does not match source %d"
msgstr "Ziel Controller Vektoren %d stimmen nicht mit der Quelle %d überein"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"Ziel Einheiten PCI Adresse %04x:%02x:%02x.%02x stimmt nicht mit der Quelle "
"%04x:%02x:%02x.%02x überein"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr "Ziel Einheiten-Adresstyp %s stimmt nicht mit der Quelle %s überein"
@@ -9438,10 +9164,6 @@ msgstr "Zu viele Datei-Systeme für %s festgestellt"
msgid "Too many interfaces '%d' for limit '%d'"
msgstr "Zu viele Schnittstellen '%d' für Grenze '%d'"
#, c-format
msgid "Too many job stats '%d' for limit '%d'"
msgstr "Zu viele Job Statistiken '%d' für Grenze '%d'"
#, c-format
msgid "Too many migration parameters '%d' for limit '%d'"
msgstr "Zu viele Migrations-Parameter '%d' für Grenze '%d'"
@@ -9691,10 +9413,6 @@ msgstr "Kann nicht auf %s ändern"
msgid "Unable to change to root dir"
msgstr "Wechseln ins root-Verzeichnis fehlgeschlagen"
#, c-format
msgid "Unable to chdir(%s)"
msgstr "Kann nicht chdir(%s)"
#, c-format
msgid "Unable to check interface %s"
msgstr "Konnte Schnittstelle %s nicht überprüfen"
@@ -9918,10 +9636,6 @@ msgstr "Kann Inhalt der Nachricht nicht verschlüsseln"
msgid "Unable to encode number of FDs"
msgstr "Kann Anzahl der FDs nicht verschlüsseln"
#, c-format
msgid "Unable to exec shell %s"
msgstr "Kann nicht exec shell %s"
msgid "Unable to find 'cpuacct' cgroups controller mount"
msgstr "Cgroups Controller Anschluss 'cpuacct' konnte nicht gefunden werden"
@@ -9976,9 +9690,6 @@ msgstr "Kann DBus Session-Bus Verbindung nicht erhalten: %s"
msgid "Unable to get DBus system bus connection: %s"
msgstr "Kann DBus System-Bus Verbindung nicht erhalten: %s"
msgid "Unable to get Host CPU set"
msgstr "Kann nicht Host-CPU festlegen"
#, c-format
msgid "Unable to get LVM key for %s"
msgstr "Kann LVM Schlüssel für %s nicht erhalten"
@@ -10037,9 +9748,6 @@ msgstr "Kann Domain-Status nicht abrufen"
msgid "Unable to get free slot number"
msgstr "Kann keine freie Slot Nummer erhalten"
msgid "Unable to get host metric Information"
msgstr "Kann nicht Host Metrische Informationen erhalten"
#, c-format
msgid "Unable to get index for interface %s"
msgstr "Konnte Index für Schnittstelle %s nicht erhalten"
@@ -10275,13 +9983,6 @@ msgstr "Kann Klassen ID '%s' nicht analysieren"
msgid "Unable to parse current SELinux context '%s'"
msgstr "Kann aktuellen SELinux Kontext nicht analysieren '%s'"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "devaddr-Parameter '%s' kann nicht geparst werden"
msgid "Unable to parse given mac address"
msgstr "MAC-Adresse konnte nicht analysiert werden"
msgid "Unable to parse integer parameter"
msgstr "Integer Parameter konnte nicht analysiert werden"
@@ -10565,15 +10266,6 @@ msgstr "Konnte stat für Bind-Ziel %s nicht erhalten"
msgid "Unable to truncate %s"
msgstr "Kann %s nicht kürzen"
msgid "Unable to unescape command"
msgstr "Kann Escape-Zeichen nicht vom Befehl entfernen"
#, c-format
msgid "Unable to use MAC address starting with reserved value 0xFE - '%s' - "
msgstr ""
"Kann MAC-Adresse beginnend mit reservierten Wert 0xFE nicht verwenden - '%s' "
"-"
#, c-format
msgid "Unable to verify TLS peer: %s"
msgstr "Kann TLS Partner nicht überprüfen: %s"
@@ -11765,12 +11457,6 @@ msgstr "Boot-Reihenfolge '%s' für mehr als eine Einheit verwendet"
msgid "booted"
msgstr "gestartet"
msgid ""
"booting from assigned devices is only supported for PCI, USB and SCSI devices"
msgstr ""
"Starten von zugewiesenen Einheiten ist nur für PCI, USB und SCSI Einheiten "
"unterstützt"
#, c-format
msgid "bridge %s doesn't exist"
msgstr "Bridge %s nicht vorhanden"
@@ -12237,12 +11923,6 @@ msgstr "Kann nach Snapshot der Übergangs-Domain nicht anhalten"
msgid "cannot halt after transient domain snapshot"
msgstr "Kann nach Übergangs-Domain Snapshot nicht anhalten"
#, c-format
msgid "cannot hot unplug multifunction PCI device: %.4x:%.2x:%.2x.%.1x"
msgstr ""
"Kann nicht eine Multifunktionale PCI-Einheit bei laufendem Betrieb abhängen: "
"%.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "cannot initialize cert object: %s"
msgstr "Kann Zertifikat-Object %s nicht initialsieren"
@@ -13591,10 +13271,6 @@ msgstr "dev->id Buffer Überlauf: %s %s"
msgid "dev->name buffer overflow: %.3d:%.3d"
msgstr "dev->name Buffer Überlauf: %.3d:%.3d"
#, c-format
msgid "dev->name buffer overflow: %.4x:%.2x:%.2x.%.1x"
msgstr "dev->name Buffer Überlauf: %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "device %s iommu_group symlink %s has invalid group number %s"
msgstr "Einheit %s iommu_group symlink %s hat ungültige Gruppennummer %s"
@@ -14782,9 +14458,6 @@ msgstr "Schreiben in Datei '%s' fehlgeschlagen"
msgid "fatal signal %d"
msgstr "Fatales Signal %d"
msgid "fd and fdset must be valid"
msgstr "fd und fdset müssen gültig sein"
msgid "fd must be valid"
msgstr "fd muss gültig sein"
@@ -15068,10 +14741,6 @@ msgstr "Host-CPU-Nummer(n) setzen, oder Möglichkeit abzufragen weglassen"
msgid "host device already exists"
msgstr "Host Einheit existiert bereits"
#, c-format
msgid "host pci device %.4x:%.2x:%.2x.%.1x not found"
msgstr "Host-Pci-Gerät %.4x:%.2x:%.2x.%.1x nicht gefunden"
#, c-format
msgid "host reports map buffer length exceeds maximum: %d > %d"
msgstr ""
@@ -15173,9 +14842,6 @@ msgstr "Vertrauliche sicherheitsrelevante Informationen in XML-Dump einbinden"
msgid "includes the password into the connection URI if available"
msgstr "Enthält das Passwort in das Verbindungs-URI, wenn verfügbar"
msgid "incomplete return information"
msgstr "Unvollständige Zurück Information"
#, c-format
msgid "incomplete save header in '%s'"
msgstr "Unvollständiger Speicher-Header in '%s'"
@@ -15424,10 +15090,6 @@ msgstr "Ungültiges Argument angegeben"
msgid "invalid argument: %s"
msgstr "Ungültiges Argument: %s"
#, c-format
msgid "invalid base64 in '%s'"
msgstr "ungültige base64 in '%s'"
msgid "invalid catchup limit"
msgstr "ungültige Aufhol-Grenze"
@@ -18867,10 +18529,6 @@ msgstr "Diese Domain existiert bereits"
msgid "this platform is missing dlopen"
msgstr "Auf dieser Plattform fehlt dlopen"
#, c-format
msgid "this qemu doesn't support RNG device type '%s'"
msgstr "Diese QEMU unterstützt RNG-Einheit Typ '%s' nicht"
msgid "this qemu doesn't support the rng-egd backend"
msgstr "Diese QEMU unterstützt das rng-egd Backend nicht"
@@ -19264,10 +18922,6 @@ msgstr "Kann Disk %s nicht statistisch erfassen: %s"
msgid "unable to unload already unloaded profile"
msgstr "Bereits entladenes Profil kann nicht entladen werden"
#, c-format
msgid "unable to visit backing chain file %s"
msgstr "kann Sicherungs-Ketten-Datei %s nicht besichtigen"
#, c-format
msgid "unable to wait for process %lld"
msgstr "Kann nicht auf Prozess %lld warten"
@@ -19330,14 +18984,6 @@ msgstr "Unerwartete %s Aktion: %d"
msgid "unexpected OpenVZ URI path '%s', try openvz:///system"
msgstr "Unerwarteter OpenVZ URI Pfad '%s', versuche openvz:///system"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///session"
msgstr "Unerwarteter QEMU URI-Pfad '%s', versuche qemu:///session"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///system"
msgstr "Unerwarteter QEMU URI-Pfad '%s', versuche qemu:///system"
#, c-format
msgid "unexpected accessmode %d"
msgstr "Unerwarteter Zugriffsmodus %d"
@@ -19833,14 +19479,6 @@ msgstr "Unbekannter Treiber-Format Wert '%s'"
msgid "unknown driver name '%s'"
msgstr "Unbekannter Treiber Name '%s'"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///session)"
msgstr "Unbekannter Treiberpfad '%s' angegeben (versuche vbox:///session)"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///system)"
msgstr "Unbekannter Treiberpfad '%s' angegeben (versuche vbox:///system)"
msgid "unknown error"
msgstr "Unbekannter Fehler"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: German (Switzerland)\n"

View File

@@ -7,9 +7,9 @@
# Pierros Papadeas <pierros@papadeas.gr>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-27 04:41+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Greek (http://www.transifex.com/projects/p/fedora/language/"
@@ -119,10 +119,6 @@ msgstr ""
msgid "Path %s too long for unix socket"
msgstr "Η διαδρομή %s είναι πολύ μεγάλη για τις υποδοχές (socket) unix"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "Αδυναμία ερμηνείας παραμέτρων devaddr '%s'"
#, c-format
msgid "Unknown protocol '%s'"
msgstr "Άγνωστο πρωτόκολλο '%s'"

View File

@@ -9,9 +9,9 @@
# readmanr <robert_readman@hotmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-24 06:05+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
@@ -46,43 +46,6 @@ msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" Default paths:\n"
@@ -110,74 +73,6 @@ msgstr ""
" $XDG_RUNTIME_DIR/libvirt/virtlockd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s\n"
"\n"
" Sockets:\n"
" %s\n"
" %s\n"
"\n"
" TLS:\n"
" CA certificate: %s\n"
" Server certificate: %s\n"
" Server private key: %s\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s\n"
"\n"
" Sockets:\n"
" %s\n"
" %s\n"
"\n"
" TLS:\n"
" CA certificate: %s\n"
" Server certificate: %s\n"
" Server private key: %s\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/libvirtd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgstr ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -226,40 +121,6 @@ msgstr ""
"\n"
"Domain %s state saved by libvirt\n"
#, c-format
msgid ""
"\n"
"Usage:\n"
" %s [options]\n"
"\n"
"Options:\n"
" -h | --help Display program help:\n"
" -v | --verbose Verbose messages.\n"
" -d | --daemon Run as a daemon & write PID file.\n"
" -l | --listen Listen for TCP/IP connections.\n"
" -t | --timeout <secs> Exit after timeout period.\n"
" -f | --config <file> Configuration file.\n"
" -V | --version Display version information.\n"
" -p | --pid-file <file> Change name of PID file.\n"
"\n"
"libvirt management daemon:\n"
msgstr ""
"\n"
"Usage:\n"
" %s [options]\n"
"\n"
"Options:\n"
" -h | --help Display program help:\n"
" -v | --verbose Verbose messages.\n"
" -d | --daemon Run as a daemon & write PID file.\n"
" -l | --listen Listen for TCP/IP connections.\n"
" -t | --timeout <secs> Exit after timeout period.\n"
" -f | --config <file> Configuration file.\n"
" -V | --version Display version information.\n"
" -p | --pid-file <file> Change name of PID file.\n"
"\n"
"libvirt management daemon:\n"
msgid " NAME\n"
msgstr " NAME\n"
@@ -361,18 +222,10 @@ msgstr "%s is missing 'type' property"
msgid "%s length greater than maximum: %d > %d"
msgstr "%s length greater than maximum: %d > %d"
#, c-format
msgid "%s must be run by non root users"
msgstr "%s must be run by non root users"
#, c-format
msgid "%s not implemented on Win32"
msgstr "%s not implemented on Win32"
#, c-format
msgid "%s not matched against 'allowed_users' in %s"
msgstr "%s not matched against 'allowed_users' in %s"
#, c-format
msgid "%s not parseable"
msgstr "%s not parseable"
@@ -389,10 +242,6 @@ msgstr "%s object has invalid dynamic type"
msgid "%s object is missing the required '%s' property"
msgstr "%s object is missing the required '%s' property"
#, c-format
msgid "%s takes no options"
msgstr "%s takes no options"
#, c-format
msgid "%s uri uuid action\n"
msgstr "%s uri uuid action\n"
@@ -1207,10 +1056,6 @@ msgstr "Can't allocate memory"
msgid "Can't connect to $uri. Skipping."
msgstr "Can't connect to $uri. Skipping."
#, c-format
msgid "Can't create %s container: %s"
msgstr "Can't create %s container: %s"
msgid "Can't create initial configuration"
msgstr "Can't create initial configuration"
@@ -1708,12 +1553,6 @@ msgstr "Cannot use virtio serial for parallel/serial devices"
msgid "Cannot write data"
msgstr "Cannot write data"
msgid "Capabilities not available"
msgstr "Capabilities not available"
msgid "Capabilities not found"
msgstr "Capabilities not found"
msgid "Capacity"
msgstr "Capacity"
@@ -1920,20 +1759,6 @@ msgstr ""
msgid "Connected to domain %s\n"
msgstr "Connected to domain %s\n"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"libssh2 connection driver"
msgstr ""
"Connecting to session instance without socket path is not supported by the "
"libssh2 connection driver"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"ssh connection driver"
msgstr ""
"Connecting to session instance without socket path is not supported by the "
"ssh connection driver"
msgid "Constant pages:"
msgstr "Constant pages:"
@@ -2654,33 +2479,6 @@ msgstr "Could not write to stream"
msgid "Couldn't create lock file for device '%s' in path '%s'"
msgstr "Couldn't create lock file for device '%s' in path '%s'"
msgid "Couldn't fetch Domain Information"
msgstr "Couldn't fetch Domain Information"
msgid "Couldn't fetch Node Information"
msgstr "Couldn't fetch Node Information"
msgid "Couldn't get VM information from XML"
msgstr "Couldn't get VM information from XML"
msgid "Couldn't get VM record"
msgstr "Couldn't get VM record"
msgid "Couldn't get host metrics"
msgstr "Couldn't get host metrics"
msgid "Couldn't get host metrics - memory information"
msgstr "Couldn't get host metrics - memory information"
msgid "Couldn't get the Domain Pointer"
msgstr "Couldn't get the Domain Pointer"
msgid "Couldn't get version info"
msgstr "Couldn't get version info"
msgid "Couldn't parse version info"
msgstr "Couldn't parse version info"
#, c-format
msgid "Couldn't read volume target path '%s'"
msgstr "Couldn't read volume target path '%s'"
@@ -3102,12 +2900,6 @@ msgstr "Domain '%s' is already running"
msgid "Domain '%s' sysinfo are not available"
msgstr "Domain '%s' sysinfo are not available"
msgid "Domain Pointer is invalid"
msgstr "Domain Pointer is invalid"
msgid "Domain Pointer not valid"
msgstr "Domain Pointer not valid"
msgid ""
"Domain XML doesn't contain any disks, cannot deduce datastore and path for "
"VMX file"
@@ -3187,9 +2979,6 @@ msgstr "Domain is not suspended or powered off"
msgid "Domain name contains invalid escape sequence"
msgstr "Domain name contains invalid escape sequence"
msgid "Domain name is not unique"
msgstr "Domain name is not unique"
msgid "Domain not found"
msgstr "Domain not found"
@@ -3239,9 +3028,6 @@ msgstr "Domain title can't contain newlines"
msgid "Domain:"
msgstr "Domain:"
msgid "DomainID can't fit in 32 bits"
msgstr "DomainID can't fit in 32 bits"
msgid "Done.\n"
msgstr "Done.\n"
@@ -3593,10 +3379,6 @@ msgstr "FDC unit index %d out of [0..1] range"
msgid "Failed"
msgstr "Failed"
#, c-format
msgid "Failed opening %s"
msgstr "Failed opening %s"
#, c-format
msgid "Failed set TLS x509 credentials: %s"
msgstr "Failed set TLS x509 credentials: %s"
@@ -3612,20 +3394,12 @@ msgstr "Failed to acquire pid file '%s'"
msgid "Failed to add IP address %s to IP address cache for interface %s"
msgstr "Failed to add IP address %s to IP address cache for interface %s"
#, c-format
msgid "Failed to add PCI device ID '%s' to %s"
msgstr "Failed to add PCI device ID '%s' to %s"
msgid "Failed to add netlink event handle watch"
msgstr "Failed to add netlink event handle watch"
msgid "Failed to add signal handle watch"
msgstr "Failed to add signal handle watch"
#, c-format
msgid "Failed to add slot for PCI device '%s' to %s"
msgstr "Failed to add slot for PCI device '%s' to %s"
#, c-format
msgid "Failed to allocate PCI device list: %s"
msgstr "Failed to allocate PCI device list: %s"
@@ -3633,9 +3407,6 @@ msgstr "Failed to allocate PCI device list: %s"
msgid "Failed to allocate XML buffer"
msgstr "Failed to allocate XML buffer"
msgid "Failed to allocate memory"
msgstr "Failed to allocate memory"
msgid "Failed to allocate memory for path"
msgstr "Failed to allocate memory for path"
@@ -3652,9 +3423,6 @@ msgstr "Failed to allocate security model"
msgid "Failed to allocate tty"
msgstr "Failed to allocate tty"
msgid "Failed to allocate xen session"
msgstr "Failed to allocate xen session"
#, c-format
msgid "Failed to apply capabilities: %d"
msgstr "Failed to apply capabilities: %d"
@@ -3684,10 +3452,6 @@ msgstr "Failed to autostart storage pool '%s': %s"
msgid "Failed to begin network config change transaction"
msgstr "Failed to begin network config change transaction"
#, c-format
msgid "Failed to bind PCI device '%s' to %s"
msgstr "Failed to bind PCI device '%s' to %s"
#, c-format
msgid "Failed to bind mount directory %s to %s"
msgstr "Failed to bind mount directory %s to %s"
@@ -3830,9 +3594,6 @@ msgstr "Failed to create SASL client context: %d (%s)"
msgid "Failed to create XML"
msgstr "Failed to create XML"
msgid "Failed to create XML conf object"
msgstr "Failed to create XML conf object"
msgid "Failed to create XML config object"
msgstr "Failed to create XML config object"
@@ -4629,10 +4390,6 @@ msgstr "Failed to release lock"
msgid "Failed to release port %d"
msgstr "Failed to release port %d"
#, c-format
msgid "Failed to remove PCI ID '%s' from %s"
msgstr "Failed to remove PCI ID '%s' from %s"
msgid "Failed to remove domain managed save image"
msgstr "Failed to remove domain managed save image"
@@ -4644,10 +4401,6 @@ msgstr "Failed to remove managed save file '%s'"
msgid "Failed to remove managed save image for domain %s"
msgstr "Failed to remove managed save image for domain %s"
#, c-format
msgid "Failed to remove slot for PCI device '%s' from %s"
msgstr "Failed to remove slot for PCI device '%s' from %s"
#, c-format
msgid "Failed to remove storage volume '%s'(%s)"
msgstr "Failed to remove storage volume '%s'(%s)"
@@ -4905,10 +4658,6 @@ msgstr "Failed to take snapshot: %s"
msgid "Failed to terminate process %lld with SIG%s"
msgstr "Failed to terminate process %lld with SIG%s"
#, c-format
msgid "Failed to trigger a re-probe for PCI device '%s'"
msgstr "Failed to trigger a re-probe for PCI device '%s'"
#, c-format
msgid "Failed to truncate file '%s'"
msgstr "Failed to truncate file '%s'"
@@ -5675,13 +5424,6 @@ msgstr "Invalid authentication method: '%s'"
msgid "Invalid back reference"
msgstr "Invalid back reference"
msgid "Invalid base64 data"
msgstr "Invalid base64 data"
#, c-format
msgid "Invalid boolean value for field '%s'"
msgstr "Invalid boolean value for field '%s'"
#, c-format
msgid "Invalid bridge mac address '%s' in network '%s'"
msgstr "Invalid bridge mac address '%s' in network '%s'"
@@ -6010,10 +5752,6 @@ msgstr ""
"Invalid to specify MAC address '%s' in network '%s' IPv6 static host "
"definition"
#, c-format
msgid "Invalid type '%s' requested for parameter '%s', actual type is '%s'"
msgstr "Invalid type '%s' requested for parameter '%s', actual type is '%s'"
#, c-format
msgid ""
"Invalid use of 'floor' on interface with MAC address %s - network '%s' has "
@@ -6026,26 +5764,6 @@ msgstr ""
msgid "Invalid value '%s' for VMX entry '%s'"
msgstr "Invalid value '%s' for VMX entry '%s'"
#, c-format
msgid "Invalid value for field '%s': expected double"
msgstr "Invalid value for field '%s': expected double"
#, c-format
msgid "Invalid value for field '%s': expected int"
msgstr "Invalid value for field '%s': expected int"
#, c-format
msgid "Invalid value for field '%s': expected long long"
msgstr "Invalid value for field '%s': expected long long"
#, c-format
msgid "Invalid value for field '%s': expected unsigned int"
msgstr "Invalid value for field '%s': expected unsigned int"
#, c-format
msgid "Invalid value for field '%s': expected unsigned long long"
msgstr "Invalid value for field '%s': expected unsigned long long"
msgid "Invalid value for number of CPUs to show"
msgstr "Invalid value for number of CPUs to show"
@@ -6752,10 +6470,6 @@ msgstr "Multiple legacy USB controllers are not supported"
msgid "Multiqueue devices are not supported on this system"
msgstr "Multiqueue devices are not supported on this system"
#, c-format
msgid "Multiqueue network is not supported for: %s"
msgstr "Multiqueue network is not supported for: %s"
#, c-format
msgid "Must use --rename or --clone to change %s to %s"
msgstr "Must use --rename or --clone to change %s to %s"
@@ -6773,10 +6487,6 @@ msgstr "NULL NetworkDef"
msgid "NULL string parameter '%s'"
msgstr "NULL string parameter '%s'"
#, c-format
msgid "NULL value for field '%s'"
msgstr "NULL value for field '%s'"
msgid "NUMA cell number"
msgstr "NUMA cell number"
@@ -6972,12 +6682,6 @@ msgstr "No PCI buses available"
msgid "No UNIX caller UID available"
msgstr "No UNIX caller UID available"
msgid "No UNIX process ID available"
msgstr "No UNIX process ID available"
msgid "No UNIX process start time available"
msgstr "No UNIX process start time available"
#, c-format
msgid "No active operation on device: %s"
msgstr "No active operation on device: %s"
@@ -7759,9 +7463,6 @@ msgid ""
msgstr ""
"Query parameter 'no_verify' has unexpected value '%s' (should be 0 or 1)"
msgid "Query parameter 'no_verify' has unexpected value (should be 0 or 1)"
msgstr "Query parameter 'no_verify' has unexpected value (should be 0 or 1)"
#, c-format
msgid ""
"Query parameter 'proxy' contains unexpected type '%s' (should be (http|"
@@ -8250,9 +7951,6 @@ msgstr "Sending file descriptors is not supported on this socket"
msgid "Serial port index %d out of [0..3] range"
msgstr "Serial port index %d out of [0..3] range"
msgid "Server name not in URI"
msgstr "Server name not in URI"
msgid "Servname not supported for ai_socktype"
msgstr "Servname not supported for ai_socktype"
@@ -8764,14 +8462,6 @@ msgstr "Target controller type %s does not match source %s"
msgid "Target controller vectors %d does not match source %d"
msgstr "Target controller vectors %d does not match source %d"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr "Target device address type %s does not match source %s"
@@ -9248,10 +8938,6 @@ msgstr "Too many filesystems detected for %s"
msgid "Too many interfaces '%d' for limit '%d'"
msgstr "Too many interfaces '%d' for limit '%d'"
#, c-format
msgid "Too many job stats '%d' for limit '%d'"
msgstr "Too many job stats '%d' for limit '%d'"
#, c-format
msgid "Too many migration parameters '%d' for limit '%d'"
msgstr "Too many migration parameters '%d' for limit '%d'"
@@ -9502,10 +9188,6 @@ msgstr "Unable to change to %s"
msgid "Unable to change to root dir"
msgstr "Unable to change to root dir"
#, c-format
msgid "Unable to chdir(%s)"
msgstr "Unable to chdir(%s)"
#, c-format
msgid "Unable to check interface %s"
msgstr "Unable to check interface %s"
@@ -9727,10 +9409,6 @@ msgstr "Unable to encode message payload"
msgid "Unable to encode number of FDs"
msgstr "Unable to encode number of FDs"
#, c-format
msgid "Unable to exec shell %s"
msgstr "Unable to exec shell %s"
msgid "Unable to find 'cpuacct' cgroups controller mount"
msgstr "Unable to find 'cpuacct' cgroups controller mount"
@@ -9785,9 +9463,6 @@ msgstr "Unable to get DBus session bus connection: %s"
msgid "Unable to get DBus system bus connection: %s"
msgstr "Unable to get DBus system bus connection: %s"
msgid "Unable to get Host CPU set"
msgstr "Unable to get Host CPU set"
#, c-format
msgid "Unable to get LVM key for %s"
msgstr "Unable to get LVM key for %s"
@@ -9849,9 +9524,6 @@ msgstr "Unable to get free loop device via ioctl"
msgid "Unable to get free slot number"
msgstr "Unable to get free slot number"
msgid "Unable to get host metric Information"
msgstr "Unable to get host metric Information"
#, c-format
msgid "Unable to get index for interface %s"
msgstr "Unable to get index for interface %s"
@@ -10087,13 +9759,6 @@ msgstr "Unable to parse class id '%s'"
msgid "Unable to parse current SELinux context '%s'"
msgstr "Unable to parse current SELinux context '%s'"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "Unable to parse devaddr parameter '%s'"
msgid "Unable to parse given mac address"
msgstr "Unable to parse given mac address"
msgid "Unable to parse integer parameter"
msgstr "Unable to parse integer parameter"
@@ -10372,13 +10037,6 @@ msgstr "Unable to stat bind target %s"
msgid "Unable to truncate %s"
msgstr "Unable to truncate %s"
msgid "Unable to unescape command"
msgstr "Unable to unescape command"
#, c-format
msgid "Unable to use MAC address starting with reserved value 0xFE - '%s' - "
msgstr "Unable to use MAC address starting with reserved value 0xFE - '%s' - "
#, c-format
msgid "Unable to verify TLS peer: %s"
msgstr "Unable to verify TLS peer: %s"
@@ -11533,11 +11191,6 @@ msgstr "boot order '%s' used for more than one device"
msgid "booted"
msgstr "booted"
msgid ""
"booting from assigned devices is only supported for PCI, USB and SCSI devices"
msgstr ""
"booting from assigned devices is only supported for PCI, USB and SCSI devices"
#, c-format
msgid "bridge %s doesn't exist"
msgstr "bridge %s doesn't exist"
@@ -12005,10 +11658,6 @@ msgstr "cannot halt after snapshot of transient domain"
msgid "cannot halt after transient domain snapshot"
msgstr "cannot halt after transient domain snapshot"
#, c-format
msgid "cannot hot unplug multifunction PCI device: %.4x:%.2x:%.2x.%.1x"
msgstr "cannot hot unplug multifunction PCI device: %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "cannot initialize cert object: %s"
msgstr "cannot initialise cert object: %s"
@@ -13333,10 +12982,6 @@ msgstr "dev->id buffer overflow: %s %s"
msgid "dev->name buffer overflow: %.3d:%.3d"
msgstr "dev->name buffer overflow: %.3d:%.3d"
#, c-format
msgid "dev->name buffer overflow: %.4x:%.2x:%.2x.%.1x"
msgstr "dev->name buffer overflow: %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "device %s iommu_group symlink %s has invalid group number %s"
msgstr "device %s iommu_group symlink %s has invalid group number %s"
@@ -14537,9 +14182,6 @@ msgstr "failed writing to file '%s'"
msgid "fatal signal %d"
msgstr "fatal signal %d"
msgid "fd and fdset must be valid"
msgstr "fd and fdset must be valid"
msgid "fd must be valid"
msgstr "fd must be valid"
@@ -14818,10 +14460,6 @@ msgstr "host cpu number(s) to set, or omit option to query"
msgid "host device already exists"
msgstr "host device already exists"
#, c-format
msgid "host pci device %.4x:%.2x:%.2x.%.1x not found"
msgstr "host pci device %.4x:%.2x:%.2x.%.1x not found"
#, c-format
msgid "host reports map buffer length exceeds maximum: %d > %d"
msgstr "host reports map buffer length exceeds maximum: %d > %d"
@@ -14924,9 +14562,6 @@ msgstr "includes the password into the connection URI if available"
msgid "incomplete metadata in '%s'"
msgstr "incomplete metadata in '%s'"
msgid "incomplete return information"
msgstr "incomplete return information"
#, c-format
msgid "incomplete save header in '%s'"
msgstr "incomplete save header in '%s'"
@@ -15179,10 +14814,6 @@ msgstr "invalid argument supplied"
msgid "invalid argument: %s"
msgstr "invalid argument: %s"
#, c-format
msgid "invalid base64 in '%s'"
msgstr "invalid base64 in '%s'"
msgid "invalid catchup limit"
msgstr "invalid catchup limit"
@@ -18565,10 +18196,6 @@ msgstr "this network exists already"
msgid "this platform is missing dlopen"
msgstr "this platform is missing dlopen"
#, c-format
msgid "this qemu doesn't support RNG device type '%s'"
msgstr "this qemu doesn't support RNG device type '%s'"
msgid "this qemu doesn't support the rng-egd backend"
msgstr "this qemu doesn't support the rng-egd backend"
@@ -18952,10 +18579,6 @@ msgstr "unable to stat for disk %s: %s"
msgid "unable to unload already unloaded profile"
msgstr "unable to unload already unloaded profile"
#, c-format
msgid "unable to visit backing chain file %s"
msgstr "unable to visit backing chain file %s"
#, c-format
msgid "unable to wait for process %lld"
msgstr "unable to wait for process %lld"
@@ -19015,14 +18638,6 @@ msgstr "unexpected %s action: %d"
msgid "unexpected OpenVZ URI path '%s', try openvz:///system"
msgstr "unexpected OpenVZ URI path '%s', try openvz:///system"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///session"
msgstr "unexpected QEMU URI path '%s', try qemu:///session"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///system"
msgstr "unexpected QEMU URI path '%s', try qemu:///system"
#, c-format
msgid "unexpected accessmode %d"
msgstr "unexpected accessmode %d"
@@ -19520,14 +19135,6 @@ msgstr "unknown driver format value '%s'"
msgid "unknown driver name '%s'"
msgstr "unknown driver name '%s'"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///session)"
msgstr "unknown driver path '%s' specified (try vbox:///session)"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///system)"
msgstr "unknown driver path '%s' specified (try vbox:///system)"
msgid "unknown error"
msgstr "unknown error"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Esperanto\n"

View File

@@ -26,7 +26,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-03-10 04:16+0000\n"
"Last-Translator: Javier Blanco <javi.deb@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/libvirt/language/"
@@ -62,43 +62,6 @@ msgstr ""
"\n"
" DESCRIPCIÓN\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" Rutas predeterminadas:\n"
"\n"
" Archivo de configuración (a menos que sea sobrescrito por -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Conectores:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" Certificado CA: $HOME/.pki/libvirt/cacert.pem\n"
" Certificado de servidor: $HOME/.pki/libvirt/servercert.pem\n"
" Llave privada de servidor: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" Archivo PID:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" Default paths:\n"
@@ -126,34 +89,6 @@ msgstr ""
" $XDG_RUNTIME_DIR/libvirt/virtlockd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgstr ""
"\n"
" Rutas predeterminadas:\n"
"\n"
" Archivo de configuración (a menos que sea sobrescrito por -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Conectores:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" Archivo PID (a menos que sea sobrescrito por -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -1662,12 +1597,6 @@ msgstr "No puede usar serial virtio para dispositivos paralelos o seriales"
msgid "Cannot write data"
msgstr "No se pueden escribir datos"
msgid "Capabilities not available"
msgstr "No se encuentran disponibles la capacidades"
msgid "Capabilities not found"
msgstr "No han sido encontradas capacidades"
msgid "Capacity"
msgstr "Capacidad"
@@ -1881,20 +1810,6 @@ msgstr ""
msgid "Connected to domain %s\n"
msgstr "Conectado con el dominio %s\n"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"libssh2 connection driver"
msgstr ""
"El controlador de conexión libssh2 no admite la conexión a la instancia de "
"sesión sin ruta de socket"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"ssh connection driver"
msgstr ""
"El controlador de conexión ssh no admite la conexión a instancia de sesión "
"sin ruta de socket"
msgid "Constant pages:"
msgstr "Páginas constantes:"
@@ -2628,33 +2543,6 @@ msgstr "No se pudo escribir a flujo"
msgid "Couldn't create lock file for device '%s' in path '%s'"
msgstr "No se pudo crear archivo de cerrojo para dispositivo '%s' en ruta '%s'"
msgid "Couldn't fetch Domain Information"
msgstr "No se pudo obtener información de dominio"
msgid "Couldn't fetch Node Information"
msgstr "No se pudo obtener información de nodo"
msgid "Couldn't get VM information from XML"
msgstr "No se pudo obtener información de MV desde XML"
msgid "Couldn't get VM record"
msgstr "No se pudo obtener registro MV"
msgid "Couldn't get host metrics"
msgstr "No se pudo obtener métricas del equipo"
msgid "Couldn't get host metrics - memory information"
msgstr "No se pudo obtener métricas del equipo - información de memoria"
msgid "Couldn't get the Domain Pointer"
msgstr "No se pudo obtener el puntero del dominio"
msgid "Couldn't get version info"
msgstr "No se pudo extraer información de versión"
msgid "Couldn't parse version info"
msgstr "No es posible analizar información de versión"
#, c-format
msgid "Couldn't read volume target path '%s'"
msgstr "No se ha podido leer la ruta de destino '%s'"
@@ -3098,12 +2986,6 @@ msgstr "El dominio '%s' ya se encuentra en ejecución"
msgid "Domain '%s' sysinfo are not available"
msgstr "Dominio '%s' sysinfo no está disponible"
msgid "Domain Pointer is invalid"
msgstr "El puntero del dominio es inválido"
msgid "Domain Pointer not valid"
msgstr "El puntero del dominio no es válido"
msgid ""
"Domain XML doesn't contain any disks, cannot deduce datastore and path for "
"VMX file"
@@ -3190,9 +3072,6 @@ msgstr "El dominio no se encuentra ni suspendido ni apagado"
msgid "Domain name contains invalid escape sequence"
msgstr "Nombre de dominio contiene secuencia de escape inválida"
msgid "Domain name is not unique"
msgstr "El nombre del dominio no es único"
msgid "Domain not found"
msgstr "No se encontró el dominio"
@@ -3242,9 +3121,6 @@ msgstr "Título de dominio no puede contener nuevas líneas"
msgid "Domain:"
msgstr "Dominio:"
msgid "DomainID can't fit in 32 bits"
msgstr "DomainID no cabe en 32 bits"
msgid "Done.\n"
msgstr "Listo.\n"
@@ -3622,10 +3498,6 @@ msgstr "El índice %d de la unidad FDC se encuentra fuera de [0..1] rango"
msgid "Failed"
msgstr "Falló"
#, c-format
msgid "Failed opening %s"
msgstr "Falló al abrir %s"
#, c-format
msgid "Failed set TLS x509 credentials: %s"
msgstr "No se pudieron definir credenciales de TLS x509: %s"
@@ -3642,20 +3514,12 @@ msgid "Failed to add IP address %s to IP address cache for interface %s"
msgstr ""
"No se pudo añadir dirección IP %s para cache de dirección IP para interfaz %s"
#, c-format
msgid "Failed to add PCI device ID '%s' to %s"
msgstr "Falló al añadir ID de dispositivo PCI '%s' en %s"
msgid "Failed to add netlink event handle watch"
msgstr "Falló al añadir vigilante de manipulador de evento de netlink"
msgid "Failed to add signal handle watch"
msgstr "No se pudo añadir señal "
#, c-format
msgid "Failed to add slot for PCI device '%s' to %s"
msgstr "Falló al añadir slot para dispositivo PCI '%s' hacia %s"
#, c-format
msgid "Failed to allocate PCI device list: %s"
msgstr "No se pudo asignar lista de dispositivo PCI: %s"
@@ -3663,9 +3527,6 @@ msgstr "No se pudo asignar lista de dispositivo PCI: %s"
msgid "Failed to allocate XML buffer"
msgstr "Falló la asignación del búfer XML"
msgid "Failed to allocate memory"
msgstr "Falló al asignar la memoria"
msgid "Failed to allocate memory for path"
msgstr "Fallo al intentar alojar memoria para la ruta"
@@ -3683,9 +3544,6 @@ msgstr "No se pudo asignar modelo de seguridad"
msgid "Failed to allocate tty"
msgstr "Falló al alojar tty"
msgid "Failed to allocate xen session"
msgstr "Falló al asignar sesión XEN"
#, c-format
msgid "Failed to apply capabilities: %d"
msgstr "Falló al aplicar capacidades: %d"
@@ -3715,10 +3573,6 @@ msgstr "Falló al iniciar automáticamente el grupo de almacenamiento '%s': %s"
msgid "Failed to begin network config change transaction"
msgstr "Falló al iniciar transacción de cambio de network config"
#, c-format
msgid "Failed to bind PCI device '%s' to %s"
msgstr "Falló al asociar dispositivo PCI '%s' con %s"
#, c-format
msgid "Failed to bind mount directory %s to %s"
msgstr "Falló al vincular el directorio de montaje %s a %s"
@@ -3860,9 +3714,6 @@ msgstr "Falló la creación del contexto de cliente SASL: %d (%s)"
msgid "Failed to create XML"
msgstr "Falló al crear XML"
msgid "Failed to create XML conf object"
msgstr "No se pudo crear objeto config XML"
msgid "Failed to create XML config object"
msgstr "No se pudo crear objeto config XML"
@@ -4668,10 +4519,6 @@ msgstr "Falló al emitir cerrojo"
msgid "Failed to release port %d"
msgstr "No se pudo lanzar puerto %d"
#, c-format
msgid "Failed to remove PCI ID '%s' from %s"
msgstr "Falló al eliminar ID de PCI '%s' de %s"
msgid "Failed to remove domain managed save image"
msgstr ""
"No se pudo retirar la imagen de almacenamiento administrado de dominio"
@@ -4686,10 +4533,6 @@ msgstr ""
"Falló al eliminar una imagen de almacenamiento administrado para el dominio "
"%s"
#, c-format
msgid "Failed to remove slot for PCI device '%s' from %s"
msgstr "Falló al retirar ranura para dispositivo PCI '%s' de %s"
#, c-format
msgid "Failed to remove storage volume '%s'(%s)"
msgstr "Falló al retirar volumen de almacenamiento '%s'(%s)"
@@ -4953,10 +4796,6 @@ msgstr "falló al intentar tomar una instantánea: %s"
msgid "Failed to terminate process %lld with SIG%s"
msgstr "No se pudo terminar el proceso %lld con SIG%s"
#, c-format
msgid "Failed to trigger a re-probe for PCI device '%s'"
msgstr "Falló al desencadenar una nueva comprobación del dispositivo PCI '%s'"
#, c-format
msgid "Failed to truncate file '%s'"
msgstr "Falló al truncar el archivo '%s'"
@@ -5722,13 +5561,6 @@ msgstr "Método de autenticación no válido: '%s'"
msgid "Invalid back reference"
msgstr "Referencia inversa inválida"
msgid "Invalid base64 data"
msgstr "Datos base64 inválidos"
#, c-format
msgid "Invalid boolean value for field '%s'"
msgstr "Valor booleano inválido para campo '%s'"
#, c-format
msgid "Invalid bridge mac address '%s' in network '%s'"
msgstr "dirección de puente mac '%s' no válida en la red '%s'"
@@ -6036,11 +5868,6 @@ msgstr ""
"Es inválido especificar dirección MAC '%s' en definición de host estático "
"IPv6 '%s'"
#, c-format
msgid "Invalid type '%s' requested for parameter '%s', actual type is '%s'"
msgstr ""
"Tipo solicitado '%s' no es válido para el parámetro '%s', tipo actual es '%s'"
#, c-format
msgid ""
"Invalid use of 'floor' on interface with MAC address %s - network '%s' has "
@@ -6057,26 +5884,6 @@ msgstr "Valor '%s' no válido parea la entrada VMX '%s'"
msgid "Invalid value '%s' for element or attribute '%s'"
msgstr "Valor '%s' no válido para elemento o atributo '%s'"
#, c-format
msgid "Invalid value for field '%s': expected double"
msgstr "Valor inválido para campo '%s': se esperaba double"
#, c-format
msgid "Invalid value for field '%s': expected int"
msgstr "Valor inválido para campo '%s': se esperaba int"
#, c-format
msgid "Invalid value for field '%s': expected long long"
msgstr "Valor inválido para campo '%s': se esperaba long long"
#, c-format
msgid "Invalid value for field '%s': expected unsigned int"
msgstr "Valor inválido para campo '%s': se esperaba sin firma int "
#, c-format
msgid "Invalid value for field '%s': expected unsigned long long"
msgstr "Valor inválido para campo '%s': se esperaba sin firma long long "
msgid "Invalid value for number of CPUs to show"
msgstr "Valor para número de CPU a mostrar es inválido"
@@ -6795,10 +6602,6 @@ msgstr "Múltiple legado de controladores USB no tiene soporte"
msgid "Multiqueue devices are not supported on this system"
msgstr "Dispositivos Multiqueue no tienen soporte en este sistema"
#, c-format
msgid "Multiqueue network is not supported for: %s"
msgstr "Red Multiqueue no tiene soporte para: %s"
#, c-format
msgid "Must use --rename or --clone to change %s to %s"
msgstr "Debe usar --rename o --clone para cambiar %s a %s"
@@ -6816,10 +6619,6 @@ msgstr "NULL NetworkDef"
msgid "NULL string parameter '%s'"
msgstr "Parámetro de cadena NULL '%s'"
#, c-format
msgid "NULL value for field '%s'"
msgstr "valor NULL para campo '%s'"
msgid "NUMA cell number"
msgstr "número de celda NUMA"
@@ -7030,12 +6829,6 @@ msgstr "No existe disponible una implementación para analizador JSON"
msgid "No PCI buses available"
msgstr "No hay buses PCI disponibles"
msgid "No UNIX process ID available"
msgstr "No hay ID de proceso UNIX disponible"
msgid "No UNIX process start time available"
msgstr "No hay un tiempo de inicio de proceso UNIX disponible"
#, c-format
msgid "No active operation on device: %s"
msgstr "No hay una operación activa en dispositivo: %s"
@@ -7834,11 +7627,6 @@ msgstr ""
"El parámetro de consulta 'no_verify' posee un valor '%s' no esperado "
"(debería ser 0 ó 1)"
msgid "Query parameter 'no_verify' has unexpected value (should be 0 or 1)"
msgstr ""
"El parámetro de consulta 'no_verify' posee un valor no esperado (debería ser "
"0 o 1)"
#, c-format
msgid ""
"Query parameter 'proxy' contains unexpected type '%s' (should be (http|"
@@ -8344,9 +8132,6 @@ msgstr "El envío de descriptores de archivo no tiene soporte en este socket"
msgid "Serial port index %d out of [0..3] range"
msgstr "Indice %d del puerto serial fuera de [0..3] rango "
msgid "Server name not in URI"
msgstr "No se encuentra el nombre del servidor en URI"
msgid "Servname not supported for ai_socktype"
msgstr "Nombre de servidor no soportado por ai_socktype"
@@ -8857,14 +8642,6 @@ msgstr "El tipo de controlador elegido %s no coincide con la fuente %s"
msgid "Target controller vectors %d does not match source %d"
msgstr "Los vectores del controlador elegido %d no coinciden con la fuente %d"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"La dirección PCI del dispositivo elegido %04x:%02x:%02x.%02x no coincide con "
"la fuente %04x:%02x:%02x.%02x"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr ""
@@ -9908,9 +9685,6 @@ msgstr "No se puede obtener conexión Bus de sesión DBus: %s"
msgid "Unable to get DBus system bus connection: %s"
msgstr "No se puede obtener conexión de sistema DBus: %s "
msgid "Unable to get Host CPU set"
msgstr "No es posible obtener conjunto de CPU del equipo"
#, c-format
msgid "Unable to get LVM key for %s"
msgstr "No se puede obtener llave LVM para %s"
@@ -9969,9 +9743,6 @@ msgstr "No es posible obtener estado del dominio"
msgid "Unable to get free slot number"
msgstr "No es posible obtener la cantidad de slots libres"
msgid "Unable to get host metric Information"
msgstr "No es posible obtener información de la métrica del equipo"
#, c-format
msgid "Unable to get index for interface %s"
msgstr "No se puede obtener índice para interfaz %s"
@@ -10201,13 +9972,6 @@ msgstr "No se puede leer ID clase '%s'"
msgid "Unable to parse current SELinux context '%s'"
msgstr "No se puede leer contexto SELinux actual '%s'"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "No es posible analizar parámetro devaddr '%s'"
msgid "Unable to parse given mac address"
msgstr "No es posible analizar la dirección mac ofrecida"
msgid "Unable to parse integer parameter"
msgstr "No se pudo leer el parámetro entero"
@@ -10493,14 +10257,6 @@ msgstr "No se puede 'stat bind' target %s"
msgid "Unable to truncate %s"
msgstr "No es posible truncar %s"
msgid "Unable to unescape command"
msgstr "No se pudo 'unescape' el comando"
#, c-format
msgid "Unable to use MAC address starting with reserved value 0xFE - '%s' - "
msgstr ""
"No se puede usar dirección MAC que inicia con valor reservado 0xFE - '%s' - "
#, c-format
msgid "Unable to verify TLS peer: %s"
msgstr "No se puede verificar par TLS: %s"
@@ -11681,12 +11437,6 @@ msgstr "orden de arranque '%s' se utiliza más que una de dispositivo"
msgid "booted"
msgstr "iniciado"
msgid ""
"booting from assigned devices is only supported for PCI, USB and SCSI devices"
msgstr ""
"Arranque desde dispositivos asignados solo tiene soporte para dispositivos "
"PCI, USB y SCSI"
#, c-format
msgid "bridge %s doesn't exist"
msgstr "puente %s no existe"
@@ -12168,12 +11918,6 @@ msgstr "No se puede deterne después de toma de pantalla de dominio transitorio"
msgid "cannot halt after transient domain snapshot"
msgstr "No se puede detener la toma de pantalla de dominio transitorio"
#, c-format
msgid "cannot hot unplug multifunction PCI device: %.4x:%.2x:%.2x.%.1x"
msgstr ""
"No se puede desconectar en caliente dispositivo multifunción PCI: %.4x:%.2x:"
"%.2x.%.1x"
#, c-format
msgid "cannot initialize cert object: %s"
msgstr "No se puede inicializar objeto de certificado:%s"
@@ -13517,10 +13261,6 @@ msgstr "dev->desbordamiento de ID de búfer: %s %s"
msgid "dev->name buffer overflow: %.3d:%.3d"
msgstr "dev->desbordamiento de búfer: %.3d:%.3d"
#, c-format
msgid "dev->name buffer overflow: %.4x:%.2x:%.2x.%.1x"
msgstr "dev->desbordamiento de nombre de búfer: %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "device %s iommu_group symlink %s has invalid group number %s"
msgstr ""
@@ -14724,9 +14464,6 @@ msgstr "Falló al escribir en el archivo '%s'"
msgid "fatal signal %d"
msgstr "Señal fatal %d"
msgid "fd and fdset must be valid"
msgstr "fd y fdset deben ser válidos"
msgid "fd must be valid"
msgstr "fd debe ser válido"
@@ -15011,10 +14748,6 @@ msgstr "Número(s) de CPU de host a establecer, u omitir opción a la solicitud"
msgid "host device already exists"
msgstr "Dispositivo de host ya existe"
#, c-format
msgid "host pci device %.4x:%.2x:%.2x.%.1x not found"
msgstr "dispositivo de host pci %.4x:%.2x:%.2x.%.1x no se encontró"
#, c-format
msgid "host reports map buffer length exceeds maximum: %d > %d"
msgstr ""
@@ -15117,9 +14850,6 @@ msgstr "incluye información de seguridad importante en la descarga XML"
msgid "includes the password into the connection URI if available"
msgstr "Incluye la contraseña en la conexión URI si está disponible"
msgid "incomplete return information"
msgstr "información de retorno incompleta"
#, c-format
msgid "incomplete save header in '%s'"
msgstr "guardado incompleto del encabezado en '%s'"
@@ -15374,10 +15104,6 @@ msgstr "Argumento proporcionado inválido"
msgid "invalid argument: %s"
msgstr "Argumento inválido: %s"
#, c-format
msgid "invalid base64 in '%s'"
msgstr "base64 inválida en '%s' "
msgid "invalid catchup limit"
msgstr "Límite de recuperación inválido"
@@ -18836,10 +18562,6 @@ msgstr "esta red ya existe"
msgid "this platform is missing dlopen"
msgstr "Falta dlopen en esta plataforma"
#, c-format
msgid "this qemu doesn't support RNG device type '%s'"
msgstr "Este QEMU no soporta el tipo de dispositivo RNG '%s'"
msgid "this qemu doesn't support the rng-egd backend"
msgstr "Este QEMU no soporta el segundo plano de rng-egd"
@@ -19228,10 +18950,6 @@ msgstr "No es posible hacer estadística para disco %s: %s"
msgid "unable to unload already unloaded profile"
msgstr "no se pudo descargar a un perfil que ya ha sido descargado "
#, c-format
msgid "unable to visit backing chain file %s"
msgstr "No se puede visitar archivo de cadena de respaldo %s"
#, c-format
msgid "unable to wait for process %lld"
msgstr "No es posible esperar proceso %lld"
@@ -19295,14 +19013,6 @@ msgstr "Acción %s inesperada: %d"
msgid "unexpected OpenVZ URI path '%s', try openvz:///system"
msgstr "ruta '%s' URI de OpenVZ inesperado, intente openvz:///system"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///session"
msgstr "ruta QEMU URI '%s' inesperada, intente qemu:///session"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///system"
msgstr "ruta QEMU URI '%s' inesperada, intente qemu:///system "
#, c-format
msgid "unexpected accessmode %d"
msgstr "modo de acceso %d no esperado"
@@ -19793,16 +19503,6 @@ msgstr "Se desconoce valor de formato de controlador '%s'"
msgid "unknown driver name '%s'"
msgstr "Nombre de controlador desconocido '%s' "
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///session)"
msgstr ""
"ruta '%s' de controlador especificado desconocido (intente vbox:///session) "
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///system)"
msgstr ""
"ruta '%s' de controlador especificado desconocido (intente vbox:///system)"
msgid "unknown error"
msgstr "error desconocido"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-04-24 06:15+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Estonian (http://www.transifex.com/projects/p/fedora/language/"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-04-24 06:19+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Basque (Spain) (http://www.transifex.com/projects/p/fedora/"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Persian\n"

View File

@@ -8,9 +8,9 @@
# Toni Rantala <trantalafilo@gmail.com>, 2017. #zanata
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2017-03-26 10:24+0000\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
"Language-Team: Finnish (http://www.transifex.com/projects/p/fedora/language/"
@@ -247,9 +247,6 @@ msgstr "Toimialuetta ei löytynyt: %s"
msgid "Domain restored from %s\n"
msgstr "Toimialue palautettu tiedostosta %s\n"
msgid "Failed to allocate memory"
msgstr "Muistin varaus epäonnistui."
#, c-format
msgid "Failed to attach device from %s"
msgstr "Laitteen liittäminen tiedostosta %s epäonnistui"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Filipino\n"

View File

@@ -19,13 +19,14 @@
# Sam Friedmann <sam.friedmann@redhat.com>, 2013
# Stéphane Aulery <lkppo@free.fr>, 2012
# Thomas Canniot <thomas.canniot@laposte.net>, 2007
# Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>, 2019. #zanata
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"PO-Revision-Date: 2015-02-26 09:47+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2019-08-30 08:18+0000\n"
"Last-Translator: Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr>\n"
"Language-Team: French <trans-fr@lists.fedoraproject.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -50,43 +51,6 @@ msgstr ""
"\n"
" DESCRIPTION\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" Chemins par défaut :\n"
"\n"
" Fichier de configuration (sauf si remplacé par -f) :\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets :\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" Certificat CA : $HOME/.pki/libvirt/cacert.pem\n"
" Certificat du serveur : $HOME/.pki/libvirt/servercert.pem\n"
" Clé privée du serveur : $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" Fichier PID :\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -111,6 +75,10 @@ msgstr ""
"(Temps : %.3f ms)\n"
"\n"
#, c-format
msgid " Bandwidth limit: %llu bytes/s (%-.3lf %s/s)"
msgstr " Limite de bande passante : %llu bytes/s (%-.3lf %s/s)"
msgid " NAME\n"
msgstr " NOM\n"
@@ -126,6 +94,18 @@ msgstr "Réseau :"
msgid " Storage:"
msgstr "Stockage :"
#, c-format
msgid ""
" type=%s\n"
" bandwidth=%lu\n"
" cur=%llu\n"
" end=%llu\n"
msgstr ""
" type=%s\n"
" bandwidth=%lu\n"
" cur=%llu\n"
" end=%llu\n"
#, c-format
msgid "%6s: Checking %-60s: "
msgstr "%6s : Vérification %-60s : "
@@ -134,6 +114,10 @@ msgstr "%6s : Vérification %-60s : "
msgid "%s\n"
msgstr "%s\n"
#, c-format
msgid "%s not found in %s"
msgstr "%s non trouvé dans %s"
#, c-format
msgid ""
"%s:\n"
@@ -166,10 +150,18 @@ msgstr ""
msgid "%s: error: unable to determine if daemon is running: %s\n"
msgstr "%s : erreur : impossible de déterminer si le daemon fonctionne : %s\n"
#, c-format
msgid "%s: failed to read temporary file: %s"
msgstr "%s : impossible d'écrire dans le fichier temporaire : %s"
#, c-format
msgid "%s: failed to write log file: %s"
msgstr "%s : impossible d'écrire dans le fichier journal : %s"
#, c-format
msgid "%s: initialization failed"
msgstr "%s : l'initialisation a échoué"
#, c-format
msgid "%s: initialization failed\n"
msgstr "%s : l'initialisation a échoué\n"
@@ -198,6 +190,10 @@ msgstr ""
msgid "%s:%zu: %s '%s'"
msgstr "%s:%zu: %s '%s'"
#, c-format
msgid "'%s' denied access"
msgstr "« %s » accès refusé"
#, c-format
msgid "'%s' does not exist"
msgstr "« %s » n'existe pas"
@@ -228,18 +224,105 @@ msgstr ""
msgid "'queues' attribute must be positive number: %s"
msgstr "l'attribut « queues » doit être un nombre positif : %s"
msgid "(CPU_definition)"
msgstr "(CPU_definition)"
msgid "(_migration_cookie)"
msgstr "(_migration_cookie)"
msgid "(bridge interface definition)"
msgstr "(domainCapabilities)"
msgid "(capabilities)"
msgstr "(domainCapabilities)"
msgid "(definition_of_secret)"
msgstr "(domainCapabilities)"
msgid "(device_definition)"
msgstr "(device_definition)"
msgid "(disk_definition)"
msgstr "(disk_definition)"
msgid "(domainCapabilities)"
msgstr "(domainCapabilities)"
msgid "(domain_checkpoint)"
msgstr "(domainCapabilities)"
msgid "(domain_definition)"
msgstr "(domain_definition)"
msgid "(domain_snapshot)"
msgstr "(domain_snapshot)"
msgid "(esx execute response)"
msgstr "(esx execute response)"
msgid "(gluster_cli_output)"
msgstr "(gluster_cli_output)"
msgid "(interface definition)"
msgstr "(définition de l'interface)"
msgid "(interface_definition)"
msgstr "(interface_definition)"
msgid "(libxl_migration_cookie)"
msgstr "(libxl_migration_cookie)"
msgid "(metadata_xml)"
msgstr "(metadata_xml)"
msgid "(network status)"
msgstr "(network status)"
msgid "(network_definition)"
msgstr "(network_definition)"
msgid "(node_device_definition)"
msgstr "(node_device_definition)"
msgid "(none)"
msgstr "(none)"
msgid "(nwfilter_definition)"
msgstr "(nwfilter_definition)"
msgid "(pool state)"
msgstr "(pool state)"
msgid "(qemu_migration_cookie)"
msgstr "(qemu_migration_cookie)"
msgid "(re)connect to hypervisor"
msgstr "(re)connecter à l'hyperviseur"
msgid "(save cookie)"
msgstr "(save cookie)"
msgid "(snapshot_tree)"
msgstr "(snapshot_tree)"
msgid "(storage_pool_definition)"
msgstr "(storage_pool_definition)"
msgid "(storage_source_specification)"
msgstr "(storage_source_specification)"
msgid "(storage_volume_definition)"
msgstr "(storage_volume_definition)"
msgid "(test driver)"
msgstr "(test driver)"
msgid "(volume_definition)"
msgstr "(volume_definition)"
msgid "-"
msgstr "-"
#, c-format
msgid "--%s <number>"
msgstr "--%s <nombre>"
@@ -248,6 +331,12 @@ msgstr "--%s <nombre>"
msgid "--%s <string>"
msgstr "--%s <chaîne>"
msgid "------------------------------"
msgstr "------------------------------"
msgid "-------------------------------------------------"
msgstr "-------------------------------------------------"
#, c-format
msgid "<virtualport> element unsupported for <interface type='%s'>"
msgstr "élément <virtualport> non pris en charge pour <interface type='%s'>"
@@ -333,6 +422,9 @@ msgstr "La taille du périphérique bloc « %s » a été modifiée"
msgid "Build a given pool."
msgstr "Construire le pool indiqué."
msgid "CPU Affinity"
msgstr "CPU Affinity"
msgid "CPU Affinity:"
msgstr "Affinité CPU :"
@@ -421,11 +513,62 @@ msgstr ""
msgid "Cannot find security driver '%s'"
msgstr "Pilote de sécurité « %s » introuvable"
msgid "Cannot parse <HardDisk> 'format' attribute"
msgstr "Impossible d'analyser l'attribut « format » <HardDisk>"
msgid "Cannot parse <HardDisk> 'location' attribute"
msgstr "Impossible d'analyser l'attribut « location » <HardDisk>"
msgid "Cannot parse <HardDisk> 'uuid' attribute"
msgstr "Impossible d'analyser l'attribut « uuid » <HardDisk>"
msgid "Cannot parse <Machine> 'currentSnapshot' attribute"
msgstr "Impossible d'analyser l'attribut « currentSnapshot » <Machine>"
msgid "Cannot parse <Machine> 'lastStateChange' attribute"
msgstr "Impossible d'analyser l'attribut « lastStateChange » <Machine>"
msgid "Cannot parse <Machine> 'name' attribute"
msgstr "Impossible d'analyser l'attribut « name » <Machine>"
msgid "Cannot parse <Machine> 'snapshotFolder' attribute"
msgstr "Impossible d'analyser l'attribut « snapshotFolder » <Machine>"
msgid "Cannot parse <Machine> 'uuid' attribute"
msgstr "Impossible d'analyser l'attribut « uuid » <Machine>"
msgid "Cannot parse <Machine> <Hardware> node"
msgstr "Impossible d'analyser le nœud <Machine> <Hardware>"
msgid "Cannot parse <Machine> <MediaRegistry> node"
msgstr "Impossible d'analyser le nœud <Machine> <MediaRegistry>"
msgid "Cannot parse <Machine> <StorageControllers> node"
msgstr "Impossible d'analyser le nœud <Machine> <StorageControllers>"
msgid "Cannot parse <Snapshot> 'name' attribute"
msgstr "Impossible d'analyser l'attribut « name » <Snapshot>"
msgid "Cannot parse <Snapshot> 'timeStamp' attribute"
msgstr "Impossible d'analyser l'attribut « timeStamp » <Snapshot>"
msgid "Cannot parse <Snapshot> 'uuid' attribute"
msgstr "Impossible d'analyser l'attribut « uuid » <Snapshot>"
msgid "Cannot parse <Snapshot> <Hardware> node"
msgstr "Impossible d'analyser le nœud <Snapshot> <Hardware>"
msgid "Cannot parse <Snapshot> <StorageControllers> node"
msgstr "Impossible d'analyser le nœud <Snapshot> <StorageControllers>"
msgid "Cannot parse <VirtualBox> <Machine> node"
msgstr "Impossible d'analyser le nœud <VirtualBox> <Machine>"
msgid "Cannot parse <address> 'bus' attribute"
msgstr "Impossible d'analyser l'attribut « bus » <address>"
msgstr "Impossible d'analyser l'attribut « bus » <address>"
msgid "Cannot parse <address> 'controller' attribute"
msgstr "Impossible d'analyser l'attribut « controller » <address> "
msgstr "Impossible d'analyser l'attribut « controller » <address>"
msgid "Cannot parse <address> 'cssid' attribute"
msgstr "Impossible d'analyser l'attribut « cssid » <address>"
@@ -434,11 +577,20 @@ msgid "Cannot parse <address> 'devno' attribute"
msgstr "Impossible d'analyser l'attribut « devno » <address>"
msgid "Cannot parse <address> 'domain' attribute"
msgstr "Impossible d'analyser l'attribut « domain » <address>"
msgstr "Impossible d'analyser l'attribut « domain » <address>"
msgid "Cannot parse <address> 'fid' attribute"
msgstr "Impossible d'analyser l'attribut « fid » <address>"
msgid "Cannot parse <address> 'function' attribute"
msgstr "Impossible d'analyser l'attribut « function » <address>"
msgid "Cannot parse <address> 'iobase' attribute"
msgstr "Impossible d'analyser l'attribut « iobase » <address>"
msgid "Cannot parse <address> 'irq' attribute"
msgstr "Impossible d'analyser l'attribut « irq » <address>"
msgid "Cannot parse <address> 'port' attribute"
msgstr "Impossible d'analyser l'attribut « port » <address>"
@@ -454,9 +606,16 @@ msgstr "Impossible d'analyser l'attribut « ssid » <address>"
msgid "Cannot parse <address> 'target' attribute"
msgstr "Impossible d'analyser l'attribut « target » <address>"
msgid "Cannot parse <address> 'uid' attribute"
msgstr "Impossible d'analyser l'attribut « uid » <address>"
msgid "Cannot parse <address> 'unit' attribute"
msgstr "Impossible d'analyser l'attribut « unit » <address>"
msgid "Cannot parse <local> 'port' attribute with socket interface"
msgstr ""
"Impossible d'analyser l'attribut « port » <local> avec une interface socket"
msgid "Cannot parse <master> 'startport' attribute"
msgstr "Impossible d'analyser l'attribut « startport » <master>"
@@ -480,11 +639,19 @@ msgstr "Impossible d'analyser l'ID de constructeur USB %s"
msgid "Cannot parse controller index %s"
msgstr "Impossible d'analyser l'index de contrôleur %s"
#, c-format
msgid "Cannot remove state PID file %s"
msgstr "Impossible de supprimer le fichier d'état PID %s"
#, c-format
msgid "Cannot specify a label if relabelling is turned off. model=%s"
msgstr ""
"Impossible de spécifier une étiquette si le réétiquetage est éteint. model=%s"
#, c-format
msgid "Cannot write device.map '%s'"
msgstr "Impossible d'écrire device.map « %s »"
msgid "Capacity:"
msgstr "Capacité :"
@@ -547,18 +714,53 @@ msgstr "Impossible d'analyser l'UUID depuis '%s'"
msgid "Could not set UUID"
msgstr "Impossible de sélectionner l'UUID"
msgid "Create a checkpoint from XML"
msgstr "Créer un point de passage depuis le XML"
msgid "Create a checkpoint from XML for use in future incremental backups"
msgstr ""
"Créer un point de passage depuis le XML pour l'utiliser dans les prochaines "
"sauvegardes incrémentales"
msgid "Create a domain."
msgstr "Créer un domaine"
msgid "Create a network port."
msgstr "Créer un port réseau."
msgid "Create a network."
msgstr "Créer un réseau"
msgid "Create a new network filter binding."
msgstr "Créer une nouvelle liaison de filtre réseau."
msgid "Create a pool."
msgstr "Créer un pool"
msgid "Create a restore point for interfaces settings"
msgstr "Créer un point de restauration pour les paramètres de l'interface"
msgid "Create a snapshot (disk and RAM) from XML"
msgstr "Créer un instantané (disque et RAM) depuis le XML"
msgid "Create a snapshot (disk and RAM) from arguments"
msgstr "Créer un instantané (disque et RAM) depuis les paramètres"
msgid "Create a snapshot from XML"
msgstr "Créer un instantané depuis le XML"
msgid "Create a snapshot from a set of args"
msgstr "Créer un instantané depuis un ensemble de drapeaux."
msgid "Create a vol from an existing volume."
msgstr "Créer un volume depuis un volume existant."
msgid "Create a vol."
msgstr "Créer un volume."
msgid "Created"
msgstr "Créé"
msgid "Define a domain."
msgstr "Définir un domaine"
@@ -665,9 +867,6 @@ msgstr "L'initialisation de l'état du pilote a échouée"
msgid "FAIL"
msgstr "FAIL"
msgid "Failed to allocate memory"
msgstr "Impossible d'allouer de la mémoire"
#, c-format
msgid "Failed to attach device from %s"
msgstr "Impossible d'attacher le périphérique depuis %s"
@@ -676,6 +875,9 @@ msgstr "Impossible d'attacher le périphérique depuis %s"
msgid "Failed to autostart VM '%s': %s"
msgstr "Impossible de démarrer automatiquement la VM « %s » : %s"
msgid "Failed to build pidfile path"
msgstr "Échec de la construction du chemin pidfile"
#, c-format
msgid "Failed to build pool %s"
msgstr "Impossible de construire le pool %s"
@@ -950,6 +1152,10 @@ msgstr "Élément « CPU feature policy » invalide"
msgid "Invalid CPU topology"
msgstr "Élément « CPU topology » invalide"
#, c-format
msgid "Invalid PID %d for VM"
msgstr "PID invalide %d pour la VM"
#, c-format
msgid "Invalid USB Class code %s"
msgstr "Code de la classe USB %s invalide"
@@ -1264,8 +1470,8 @@ msgstr ""
msgid "No <source> 'port' attribute specified with socket interface"
msgstr "Aucun attribut <source> « port » spécifié avec l'interface du socket"
msgid "No UNIX process ID available"
msgstr "Aucun ID de processus UNIX disponible"
msgid "No UNIX caller UID available"
msgstr "Aucun ID d'appelant UNIX n'est disponible"
msgid "No address associated with hostname"
msgstr "Aucune adresse associée avec le nom d'hôte"
@@ -1277,6 +1483,10 @@ msgstr "Aucune donnée fournie à l'élément <initarg>"
msgid "No domain with UUID %s"
msgstr "Aucun domaine avec l'UUID %s"
#, c-format
msgid "No domain with matching ID '%d'"
msgstr "Aucun domaine ne correspond avec l'ID « %d »"
#, c-format
msgid "No domain with matching uuid '%s'"
msgstr "Aucun domaine ne correspond à l'UUID '%s'"
@@ -1436,6 +1646,10 @@ msgstr "Rafraichir le pool indiqué."
msgid "Regular expression too big"
msgstr "Expression rationnelle trop grande"
#, c-format
msgid "Release %s %o failed"
msgstr "La version %s %o a échoué"
msgid "Request canceled"
msgstr "Requête annulée"
@@ -1451,6 +1665,9 @@ msgstr "Restaurer un domaine."
msgid "Resume a previously suspended domain."
msgstr "Réactiver un domaine précédemment suspendu"
msgid "Retrieve threadpool attributes from a server. "
msgstr "récupère les attributs du groupe d'unités d'exécution du serveur. "
msgid "Returns basic information about the domain virtual CPUs."
msgstr ""
"Renvoyer un résumé des informations sur les processeurs virtuels du domaine."
@@ -1498,6 +1715,13 @@ msgstr "Exécution de l'hyperviseur : %s %d.%d.%d\n"
msgid "Scheduler"
msgstr "Planificateur"
msgid "Server to alter threadpool attributes on."
msgstr ""
"Serveur sur lequel modifier les attributs du groupe d'unités d'exécution."
msgid "Server to retrieve threadpool attributes from."
msgstr "Serveur de récupération des attributs du groupe d'unités d'exécution."
msgid "Servname not supported for ai_socktype"
msgstr "Servname n'est pas pris en charge pour ai_socktype"
@@ -1657,14 +1881,6 @@ msgid "Target controller vectors %d does not match source %d"
msgstr ""
"Les vecteurs de contrôleurs cibles %d ne correspondent pas à la source %d"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"L'adresse PCI du périphérique cible %04x:%02x:%02x.%02x ne correspond pas à "
"la source %04x:%02x:%02x.%02x"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr ""
@@ -1833,6 +2049,13 @@ msgstr "Total"
msgid "Trailing backslash"
msgstr "Barre oblique inverse à la fin"
msgid ""
"Tune threadpool attributes on a server. See OPTIONS for currently supported "
"attributes."
msgstr ""
"Régler les attributs groupe du d'unités d'exécution sur un serveur. Lisez "
"les OPTIONS pour les attributs actuellement supportés."
msgid "Type:"
msgstr "Type :"
@@ -1857,12 +2080,18 @@ msgstr "UUID :"
msgid "Unable to change MaxMemorySize"
msgstr "Impossible de modifier MaxMemorySize"
msgid "Unable to create kqueue"
msgstr "Impossible de créer la kqueue"
msgid "Unable to format guestfwd port"
msgstr "Impossible de formater le port guestfwd"
msgid "Unable to generate random uuid."
msgstr "Impossible de générer un UUID aléatoire."
msgid "Unable to get Capabilities"
msgstr "Impossible d'obtenir les capacités"
msgid "Unable to initialize certificate"
msgstr "Impossible d'initialiser le certificat"
@@ -1879,9 +2108,14 @@ msgstr "Impossible d'obtenir l'UUID de l'hôte"
msgid "Unable to parse class id '%s'"
msgstr "Impossible d'analyser l'ID de classe « %s »"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "Impossible d'analyser le paramètre devaddr « %s »"
msgid "Unable to query kqueue"
msgstr "Impossible d'interroger la kqueue"
msgid "Unable to register process kevent"
msgstr "Impossible d'enregistrer le processus kevent"
msgid "Unable to retrieve threadpool parameters"
msgstr "Impossible de récupérer les paramètres groupe d'unités d'exécution"
msgid "Undefine the configuration for an inactive pool."
msgstr "Supprimer la configuration d'un pool inactif"
@@ -1984,6 +2218,9 @@ msgstr "« ( » ou « \\( » non fermé"
msgid "Unmatched ) or \\)"
msgstr "« ) » ou « \\) » non ouvert"
msgid "Unmatched [, [^, [:, [., or [="
msgstr "[, [^, [:, [., ou [= non fermé"
msgid "Unmatched \\{"
msgstr "« { » non fermé"
@@ -1995,6 +2232,10 @@ msgstr "Mode de placement du CPU « %s » non-pris en charge"
msgid "Unsupported NUMA memory tuning mode '%s'"
msgstr "Mode de réglage de la mémoire NUMA « %s » non-pris en charge"
#, c-format
msgid "Unsupported config type %s"
msgstr "Le type de configuration %s n'est pas pris en charge"
msgid "Upgrade to a kernel supporting namespaces"
msgstr "Mise à jour vers un noyau prenant en charges les espaces de nommages"
@@ -2090,6 +2331,9 @@ msgstr "démarrer automatiquement un pool"
msgid "balloon memory must contain model name"
msgstr "la mémoire ballon doit contenir le nom du modèle"
msgid "bhyve state driver is not active"
msgstr "le pilote d'état bhyve n'est pas actif"
msgid "block"
msgstr "bloc"
@@ -2432,6 +2676,9 @@ msgstr "le constructeur de disque fait plus de 8 caractères"
msgid "disk vendor is not printable string"
msgstr "le constructeur de disque n'est pas une chaîne imprimable"
msgid "display"
msgstr "affichage"
msgid "display available free memory for the NUMA cell."
msgstr "afficher la quantité de mémoire disponible pour les cellules NUMA."
@@ -3159,6 +3406,9 @@ msgstr "aucun nom d'utilisateur client n'a été trouvé"
msgid "no config file for %s"
msgstr "aucun fichier de configuration pour %s"
msgid "no console devices available"
msgstr "Aucun périphérique console n'est disponible"
msgid "no domain config"
msgstr "pas de configuration de domaine"
@@ -3215,6 +3465,9 @@ msgstr "un seul périphérique TPM est pris en charge"
msgid "only a single nvram device is supported"
msgstr "un seul périphérique nvram est pris en charge"
msgid "only nmdm console types are supported"
msgstr "seuls des types de console nmdm sont pris en charge"
msgid "only one TPM backend is supported"
msgstr "un seul arrière-plan TPM est pris en charge"
@@ -3230,6 +3483,9 @@ msgstr "un seul élément de ressources est pris en charge"
msgid "only one set of redirection filter rule is supported"
msgstr "un seul ensemble de règles de filtre de redirection est pris en charge"
msgid "only two serial ports are supported"
msgstr "seuls deux ports série sont pris en charge"
msgid "operation failed"
msgstr "opération échouée"
@@ -3517,6 +3773,9 @@ msgstr "Impossible de créer le répertoire d'exécution %s : %s"
msgid "unable to generate uuid"
msgstr "impossible de générer l'UUID"
msgid "unable to init mutex"
msgstr "Impossible d'initialiser le mutex"
#, c-format
msgid "unable to parse mac address '%s'"
msgstr "impossible d'analyser l'adresse mac « %s »"
@@ -3694,6 +3953,10 @@ msgstr "mode d'accès '%s' inconnu"
msgid "unknown address type '%s'"
msgstr "type d'adresse '%s' inconnue"
#, c-format
msgid "unknown architecture: %s"
msgstr "architecture inconnue : %s"
#, c-format
msgid "unknown auth type '%s'"
msgstr "type auth « %s » inconnu"
@@ -4004,6 +4267,10 @@ msgstr "type de source USB « %s » inconnu"
msgid "unknown video model '%s'"
msgstr "modèle vidéo « %s » inconnu"
#, c-format
msgid "unknown virttype: %s"
msgstr "virttype inconnu : %s"
#, c-format
msgid "unknown vnc display sharing policy '%s'"
msgstr "politique de partage de l'affichage vnc « %s » inconnue"
@@ -4012,6 +4279,12 @@ msgstr "politique de partage de l'affichage vnc « %s » inconnue"
msgid "unsupported HyperV Enlightenment feature: %s"
msgstr "fonctionnalité HyperV Enlightenment non-prise en charge : %s"
msgid "unsupported disk device"
msgstr "périphérique disque non pris en charge"
msgid "unsupported disk type"
msgstr "type de disque non pris en charge"
#, c-format
msgid "unsupported element '%s' of 'origstates'"
msgstr "élément « %s » de « origstates » non-pris en charge"
@@ -4111,3 +4384,10 @@ msgstr "où enregistrer les données"
#, c-format
msgid "xen bus does not support %s input device"
msgstr "le bus xen ne prend pas en charge le périphérique d'entrée %s"
msgid "yes"
msgstr "Oui"
#, c-format
msgid "{[--%s] <string>}..."
msgstr "{[--%s] <string>}..."

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Friulian\n"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Irish\n"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-04-24 06:22+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Galician (http://www.transifex.com/projects/p/fedora/language/"

View File

@@ -12,9 +12,9 @@
# sweta <swkothar@redhat.com>, 2013-2014
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-23 06:16+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Gujarati (http://www.transifex.com/projects/p/libvirt/"
@@ -49,43 +49,6 @@ msgstr ""
"\n"
" વર્ણન\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" મૂળભૂત પાથ:\n"
"\n"
" રૂપરેખાંકન ફાઇલ (નહિંતો -f દ્દારા ઉપર લખાયેલ છે):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" સોકેટ:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA પ્રમાણપત્ર: $HOME/.pki/libvirt/cacert.pem\n"
" સર્વર પ્રમાણપત્ર: $HOME/.pki/libvirt/servercert.pem\n"
" સર્વર ખાનગી કી: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID ફાઇલ:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" Default paths:\n"
@@ -113,74 +76,6 @@ msgstr ""
" $XDG_RUNTIME_DIR/libvirt/virtlockd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s\n"
"\n"
" Sockets:\n"
" %s\n"
" %s\n"
"\n"
" TLS:\n"
" CA certificate: %s\n"
" Server certificate: %s\n"
" Server private key: %s\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" મૂળભૂત પાથ:\n"
"\n"
" રૂપરેખાંકન ફાઇલ (નહિંતો -f દ્દારા ઉપર લખાયેલ છે):\n"
" %s\n"
"\n"
" સોકેટ:\n"
" %s\n"
" %s\n"
"\n"
" TLS:\n"
" CA પ્રમાણપત્ર: %s\n"
" સર્વર પ્રમાણપત્ર: %s\n"
" સર્વર ખાનગી કી: %s\n"
"\n"
" PID ફાઇલ (નહિંતો -p દ્દારા ઉપર લખાયેલ છે):\n"
" %s/run/libvirtd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgstr ""
"\n"
" મૂળભૂત પાથ:\n"
"\n"
" રૂપરેખાંકન ફાઇલ (નહિંતો -f દ્દારા ઉપર લખાયેલ છે):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" સોકેટ:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID ફાઇલ (નહિંતો -p દ્દારા ઉપર લખાયેલ છે):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -229,40 +124,6 @@ msgstr ""
"\n"
"libvirt દ્દારા સંગ્રહ થયેલ ડોમેઇન %s સ્થિતિ\n"
#, c-format
msgid ""
"\n"
"Usage:\n"
" %s [options]\n"
"\n"
"Options:\n"
" -h | --help Display program help:\n"
" -v | --verbose Verbose messages.\n"
" -d | --daemon Run as a daemon & write PID file.\n"
" -l | --listen Listen for TCP/IP connections.\n"
" -t | --timeout <secs> Exit after timeout period.\n"
" -f | --config <file> Configuration file.\n"
" -V | --version Display version information.\n"
" -p | --pid-file <file> Change name of PID file.\n"
"\n"
"libvirt management daemon:\n"
msgstr ""
"\n"
"વપરાશ:\n"
" %s [વિકલ્પો]\n"
"\n"
"વિકલ્પો:\n"
" -h | --help કાર્યક્રમ મદદ દર્શાવો:\n"
" -v | --verbose વર્બોસ સંદેશા.\n"
" -d | --daemon ડિમન તરીકે ચલાવો અને PID ફાઇલને લખો.\n"
" -l | --listen TCP/IP જોડાણો માટે સાંભળો.\n"
" -t | --timeout <secs> સમય સમાપ્ત થાય પછી બહાર નીકળો.\n"
" -f | --config <file> રૂપરેખાંકન ફાઇલ.\n"
" -V | --version આવૃત્તિ જાણકારીને દર્શાવો.\n"
" -p | --pid-file <file> PID ફાઇલનું નામ બદલો.\n"
"\n"
"libvirt સંચાલન ડિમન:\n"
msgid " NAME\n"
msgstr " નામ\n"
@@ -365,18 +226,10 @@ msgstr "%s એ 'type' ગુણધર્મ ગુમ થયેલ છે"
msgid "%s length greater than maximum: %d > %d"
msgstr "મહત્તમ કરતા %s લંબાઇ વધારે છે: %d > %d"
#, c-format
msgid "%s must be run by non root users"
msgstr "%s એ બિન રુટ વપરાશકર્તાઓ દ્દારા ચલાવેલ હોવુ જ જોઇએ"
#, c-format
msgid "%s not implemented on Win32"
msgstr "Win32 પર %s નું અમલીકરણ થયેલ નથી"
#, c-format
msgid "%s not matched against 'allowed_users' in %s"
msgstr "%s માં 'allowed_users' વિરુદ્દ %s એ બંધબેસેલ નથી"
#, c-format
msgid "%s not parseable"
msgstr "%s નું પદચ્છેદન કરી શક્યા નહિં"
@@ -393,10 +246,6 @@ msgstr "%s ઑબ્જેક્ટ પાસે અયોગ્ય ડાયન
msgid "%s object is missing the required '%s' property"
msgstr "%s ઑબ્જેક્ટનું જરૂરી '%s' ગુણધર્મ ગુમ થયેલ છે"
#, c-format
msgid "%s takes no options"
msgstr "%s એ વિકલ્પો લેતુ નથી"
#, c-format
msgid "%s uri uuid action\n"
msgstr "%s uri uuid ક્રિયા\n"
@@ -1219,10 +1068,6 @@ msgstr "મેમરીને ફાળવી શકાતી નથી"
msgid "Can't connect to $uri. Skipping."
msgstr "$uri માં જોડી શકાતુ નથી. છોડી રહ્યા છે."
#, c-format
msgid "Can't create %s container: %s"
msgstr "%s પાત્રને બનાવી શકાતુ નથી: %s"
msgid "Can't create initial configuration"
msgstr "પ્રારંભનુ રૂપરેખાંકન બનાવી શકાતુ નથી"
@@ -1728,12 +1573,6 @@ msgstr "વોલ્યુમ પાથ '%s' ને વાપરી શકાત
msgid "Cannot write data"
msgstr "માહિતીને લખી શકાતી નથી"
msgid "Capabilities not available"
msgstr "ક્ષમતા ઉપલબ્ધ નથી"
msgid "Capabilities not found"
msgstr "ક્ષમતાઓ મળી નથી"
msgid "Capacity"
msgstr "ક્ષમતા"
@@ -1940,17 +1779,6 @@ msgstr "સ્થાનિક હાયપરવિઝરમાં જોડા
msgid "Connected to domain %s\n"
msgstr "ડોમેઇન %s ને જોડાયેલ છે\n"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"libssh2 connection driver"
msgstr ""
"સોકેટ પાથ વગર સત્ર નમૂના સાથે જોડાવાનું libssh2 જોડાણ ડ્રાઇવર દ્દારા આધારભૂત નથી"
msgid ""
"Connecting to session instance without socket path is not supported by the "
"ssh connection driver"
msgstr "સોકેટ પાથ વગર સત્ર નમૂના સાથે જોડાવાનું ssh જોડાણ ડ્રાઇવર દ્દારા આધારભૂત નથી"
msgid "Constant pages:"
msgstr "સતત પૃષ્ઠો:"
@@ -2671,33 +2499,6 @@ msgstr "સ્ટ્રીમમાં લખી શક્યા નહિં"
msgid "Couldn't create lock file for device '%s' in path '%s'"
msgstr "પાથ '%s' માં ઉપકરણ '%s' માટે તાળુ ફાઇલને બનાવી શક્યા નહિં"
msgid "Couldn't fetch Domain Information"
msgstr "ડોમેઈન જાણકારીને લાવી શક્યા નહિં"
msgid "Couldn't fetch Node Information"
msgstr "નોડ જાણકારી લાવી શક્યા નહિં"
msgid "Couldn't get VM information from XML"
msgstr "XML માંથી VM જાણકારીને મેળવી શક્યા નહિં"
msgid "Couldn't get VM record"
msgstr "VM રેકોર્ડ મેળવી શક્યા નહિં"
msgid "Couldn't get host metrics"
msgstr "યજમાન મેટ્રીક્સને મેળવી શક્યા નહિં"
msgid "Couldn't get host metrics - memory information"
msgstr "યજમાન મેટ્રીક્સને મેળવી શક્યા નહિં - મેમરી જાણકારી"
msgid "Couldn't get the Domain Pointer"
msgstr "ડોમેઇન પોઇંટરને મેળવી શક્યા નહિં"
msgid "Couldn't get version info"
msgstr "આવૃત્તિ જાણકારી મેળવી શક્યા નહિં"
msgid "Couldn't parse version info"
msgstr "આવૃત્તિ જાણકારીનું પદચ્છેદન કરી શક્યા નહિં"
#, c-format
msgid "Couldn't read volume target path '%s'"
msgstr "વોલ્યુમ લક્ષ્ય પાથ '%s' વાંચી શકાયુ નહિં"
@@ -3122,12 +2923,6 @@ msgstr "ડોમેઇન '%s' sysinfo ઉપલબ્ધ નથી"
msgid "Domain Events"
msgstr "ડોમેઇન ઘટનાઓ"
msgid "Domain Pointer is invalid"
msgstr "ડોમેઇન પોઇંટર અયોગ્ય છે"
msgid "Domain Pointer not valid"
msgstr "ડોમેઇન પોઇંટર માન્ય નથી"
msgid ""
"Domain XML doesn't contain any disks, cannot deduce datastore and path for "
"VMX file"
@@ -3207,9 +3002,6 @@ msgstr "ડોમઇન અટકેલ અથવા બંધ થયેલ ન
msgid "Domain name contains invalid escape sequence"
msgstr "મોડલ નામ અયોગ્ય અક્ષરોને સમાવે છે"
msgid "Domain name is not unique"
msgstr "ડોમેઈન નામ અનન્ય નથી"
msgid "Domain not found"
msgstr "ડોમેઈન મળ્યું નહિં"
@@ -3261,9 +3053,6 @@ msgstr "ડોમેઇન શીર્ષક સફળતાપૂર્વક
msgid "Domain:"
msgstr "ડોમેઇન:"
msgid "DomainID can't fit in 32 bits"
msgstr "DomainID 32 બીટમાં બંધબેસતુ નથી"
msgid "Done.\n"
msgstr "પૂર્ણ થયું.\n"
@@ -3629,10 +3418,6 @@ msgstr "[..૧] સીમાની બહાર FDC એકમ અનુક્
msgid "Failed"
msgstr "નિષ્ફળ"
#, c-format
msgid "Failed opening %s"
msgstr "%s ને ખોલવામાં નિષ્ફળતા"
#, c-format
msgid "Failed set TLS x509 credentials: %s"
msgstr "TLS x509 શ્રેયને સુયોજિત કરવામાં નિષ્ફળતા: %s"
@@ -3648,20 +3433,12 @@ msgstr "pid ફાઇલ '%s' ને પ્રાપ્ત કરવામાં
msgid "Failed to add IP address %s to IP address cache for interface %s"
msgstr "ઇન્ટરફેસ %s માટે IP સરનામાં કેશમાં IP સરનામું %s ને ઉમેરવામાં નિષ્ફળતા"
#, c-format
msgid "Failed to add PCI device ID '%s' to %s"
msgstr "%s ને PCI ઉપકરણ ID '%s' ને ઉમેરવામાં નિષ્ફળ"
msgid "Failed to add netlink event handle watch"
msgstr "નેટલીંક ઘટના સંચાલન વોચને ઉમેરવાનું નિષ્ફળ"
msgid "Failed to add signal handle watch"
msgstr "સંકેત પાઇપ માંથી વાંચવા માટે નિષ્ફળ: %s"
#, c-format
msgid "Failed to add slot for PCI device '%s' to %s"
msgstr "%s ને PCI ઉપકરણ '%s' માટે સ્લોટ ઉમેરવામાં નિષ્ફળતા"
#, c-format
msgid "Failed to allocate PCI device list: %s"
msgstr "PCI ઉપકરણ યાદીને ફાળવવામાં નિષ્ફળતા: %s"
@@ -3669,9 +3446,6 @@ msgstr "PCI ઉપકરણ યાદીને ફાળવવામાં ન
msgid "Failed to allocate XML buffer"
msgstr "XML બફરની ફાળવણી કરવામાં નિષ્ફળ"
msgid "Failed to allocate memory"
msgstr "મેમરીની ફાળવણી કરવામાં નિષ્ફળ"
msgid "Failed to allocate memory for path"
msgstr "પાથ માચે મેમરી ને ફાળવવામાં નિષ્ફળતા"
@@ -3688,9 +3462,6 @@ msgstr "સુરક્ષા મોડલને ફાળવવામાં ન
msgid "Failed to allocate tty"
msgstr "tty ને ફાળવણી કરવાનું નિષ્ફળ"
msgid "Failed to allocate xen session"
msgstr "xen સત્રની ફાળવણી કરવામાં નિષ્ફળ"
#, c-format
msgid "Failed to apply capabilities: %d"
msgstr "ક્ષમતાઓ લાગુ કરવામાં નિષ્ફળ: %d"
@@ -3720,10 +3491,6 @@ msgstr "VM '%s' ને આપોઆપ શરૂ કરવાનું નિષ
msgid "Failed to begin network config change transaction"
msgstr "નેટવર્ક રૂપરેખાંકન બદલાવ સ્થળાંતરને શરૂ કરવામાં નિષ્ફળતા"
#, c-format
msgid "Failed to bind PCI device '%s' to %s"
msgstr "'%s' માટે PCI ઉપકરણ '%s' ને બાંધવામાં નિષ્ફળતા"
#, c-format
msgid "Failed to bind mount directory %s to %s"
msgstr "%s માં માઉન્ટ ડિરેક્ટરી %s ને બાંધવામાં નિષ્ફળતા"
@@ -3869,9 +3636,6 @@ msgstr "SASL ક્લાઇન્ટ સંદર્ભ બનાવવામ
msgid "Failed to create XML"
msgstr "XML બનાવવામાં નિષ્ફળ"
msgid "Failed to create XML conf object"
msgstr "XML રૂપરેખાંકન ઑબ્જેક્ટ બનાવવામાં નિષ્ફળતા"
msgid "Failed to create XML config object"
msgstr "XML રૂપરેખા ઑબ્જેક્ટને બનાવવામાં નિષ્ફળતા"
@@ -4674,10 +4438,6 @@ msgstr "તાળાને ખોલવાનું નિષ્ફળ"
msgid "Failed to release port %d"
msgstr "પોર્ટ %d ને પ્રકાશિત કરવામાં નિષ્ફળતા"
#, c-format
msgid "Failed to remove PCI ID '%s' from %s"
msgstr "%s માંથી PCI ID '%s' ને દૂર કરવાનું નિષ્ફળ"
msgid "Failed to remove domain managed save image"
msgstr "ડોમેઇન સંચાલિત થયેલ સંગ્રહ ઇમેજને દૂર કરવામાં નિષ્ફળતા"
@@ -4689,10 +4449,6 @@ msgstr "સંચાલિત થયેલ સંગ્રહ ફાઇલ '%s'
msgid "Failed to remove managed save image for domain %s"
msgstr "ડોમેઇન %s માટે સંચાલિત થયેલ સંગ્રહ ઇમેજને દૂર કરવામાં નિષ્ફળ"
#, c-format
msgid "Failed to remove slot for PCI device '%s' from %s"
msgstr "PCI ઉપકરણ '%s' માટે %s માંથી સ્લોટને દૂર કરવામાં નિષ્ફળતા"
#, c-format
msgid "Failed to remove storage volume '%s'(%s)"
msgstr "સંગ્રહ વોલ્યુમ '%s'(%s) ને દૂર કરવામાં નિષ્ફળ"
@@ -4953,10 +4709,6 @@ msgstr "સ્નેપશોટ લેવવાનું નિષ્ફળ: %s
msgid "Failed to terminate process %lld with SIG%s"
msgstr "પ્રક્રિયા %lld ને SIG%s સાથે કાઢી નાંખવામાં નિષ્ફળતા"
#, c-format
msgid "Failed to trigger a re-probe for PCI device '%s'"
msgstr "PCI ઉપકરણ '%s' માટે ફરી પ્રોબને ટ્રીગર કરવામાં નિષ્ફળ"
#, c-format
msgid "Failed to truncate file '%s'"
msgstr "ફાઇલ '%s' ને બનાવવામાં નિષ્ફળ"
@@ -5740,13 +5492,6 @@ msgstr "અયોગ્ય સત્તાધિકરણ પદ્દતિ: '%
msgid "Invalid back reference"
msgstr "અયોગ્ય બેક સંદર્ભ"
msgid "Invalid base64 data"
msgstr "અયોગ્ય base64 માહિતી"
#, c-format
msgid "Invalid boolean value for field '%s'"
msgstr "ક્ષેત્ર '%s' માટે અયોગ્ય બુલિયન કિંમત"
#, c-format
msgid "Invalid bridge mac address '%s' in network '%s'"
msgstr "નેટવર્ક '%s' માં અમાન્ય બ્રિજ mac સરનામું '%s' "
@@ -6081,10 +5826,6 @@ msgid ""
"definition"
msgstr "નેટવર્ક '%s' IPv6 સ્થિર યજમાન વ્યાખ્યામાં MAC સરનામાં '%s'ને સ્પષ્ટ કરવાનું અયોગ્ય"
#, c-format
msgid "Invalid type '%s' requested for parameter '%s', actual type is '%s'"
msgstr "પરિમાણ '%s' માટે સૂચિત અયોગ્ય પ્રકાર '%s', ચોક્કસ પ્રકાર '%s' છે"
#, c-format
msgid ""
"Invalid use of 'floor' on interface with MAC address %s - network '%s' has "
@@ -6101,26 +5842,6 @@ msgstr "'%s' માટે અયોગ્ય કિંમત '%s'"
msgid "Invalid value '%s' for VMX entry '%s'"
msgstr "VMX નોંધણી '%s' માટે અયોગ્ય કિંમત '%s'"
#, c-format
msgid "Invalid value for field '%s': expected double"
msgstr "ક્ષેત્ર '%s' માટે અમાન્ય કિંત: ઇચ્છિત બમણું"
#, c-format
msgid "Invalid value for field '%s': expected int"
msgstr "ક્ષેત્ર '%s' માટે અમાન્ય કિંત: ઇચ્છિત int"
#, c-format
msgid "Invalid value for field '%s': expected long long"
msgstr "ક્ષેત્ર '%s' માટે અયોગ્ય કિંમત: લાંબુ લાંબુ ઇચ્છા રાખેલ છે"
#, c-format
msgid "Invalid value for field '%s': expected unsigned int"
msgstr "ક્ષેત્ર '%s' માટે અયોગ્ય કિંમત: ઇચ્છિત હસ્તાક્ષર ન થયેલ int"
#, c-format
msgid "Invalid value for field '%s': expected unsigned long long"
msgstr "ક્ષેત્ર '%s' માટે અયોગ્ય કિંમત: હસ્તાક્ષર ન થયેલ લાંબા લાંબાની ઇચ્છા રાખેલ છે"
msgid "Invalid value for number of CPUs to show"
msgstr "બતાવવા માટે CPUs ની સંખ્યા માટે અયોગ્ય કિંમત"
@@ -6826,10 +6547,6 @@ msgstr "ઘણી લૅગસિ USB નિયંત્રકો આધાર
msgid "Multiqueue devices are not supported on this system"
msgstr "ઉપકરણોને ઘણી કતારોમાં રાખવાનું આ સિસ્ટમ પર આધારભૂત નથી"
#, c-format
msgid "Multiqueue network is not supported for: %s"
msgstr "નેટવર્કને ઘણી કતારોમાં રાખવાનુ તેની માટે આધારભૂત નથી: %s"
#, c-format
msgid "Must use --rename or --clone to change %s to %s"
msgstr "%s ને %s માં બદલવા માટે --rename અથવા --clone ને વાપરવુ જ જોઇએ"
@@ -6847,10 +6564,6 @@ msgstr "NULL NetworkDef"
msgid "NULL string parameter '%s'"
msgstr "NULL શબ્દમાળા પરિમાણ '%s'"
#, c-format
msgid "NULL value for field '%s'"
msgstr "ક્ષેત્ર '%s' માટે NULL કિંમત"
msgid "NUMA cell number"
msgstr "NUMA સેલ નંબર"
@@ -7043,9 +6756,6 @@ msgstr "JSON પાર્સર અમલીકરણ ઉપલબ્ધ છે"
msgid "No PCI buses available"
msgstr "PCI બસ ઉપલબ્ધ નથી"
msgid "No UNIX process ID available"
msgstr "UNIX પ્રક્રિયા ID ઉપલબ્ધ નથી"
#, c-format
msgid "No active operation on device: %s"
msgstr "ઉપકરણ પર સક્રિય ક્રિયા નથી: %s"
@@ -7822,9 +7532,6 @@ msgid ""
"Query parameter 'no_verify' has unexpected value '%s' (should be 0 or 1)"
msgstr "ક્વેરી પરિમાણ 'no_verify' પાસે અનિચ્છનીય કિંમત '%s' છે (0 અથવા 1 હોવુ જોઇએ)"
msgid "Query parameter 'no_verify' has unexpected value (should be 0 or 1)"
msgstr "ક્વેરી પરિમાણ 'no_verify' પાસે અનિચ્છનીય કિંમત છે ( અથવા ૧ હોવુ જોઇએ)"
#, c-format
msgid ""
"Query parameter 'proxy' contains unexpected type '%s' (should be (http|"
@@ -8311,9 +8018,6 @@ msgstr "ફાઇલ વર્ણનકર્તાને મોકલવાન
msgid "Serial port index %d out of [0..3] range"
msgstr "[..૩] સીમાની બહાર શ્રેણી પોર્ટ અનુક્રમણિકા %d"
msgid "Server name not in URI"
msgstr "સર્વર નામ URI માં નથી"
msgid "Servname not supported for ai_socktype"
msgstr "Servname એ ai_socktype માટે આધારભૂત નથી"
@@ -8827,14 +8531,6 @@ msgstr "લક્ષ્ય નિયંત્રક પ્રકાર %s સ્
msgid "Target controller vectors %d does not match source %d"
msgstr "લક્ષ્ય નિયંત્રક વેક્ટર %d સ્ત્રોત %d સાથે બંધબેસતુ નથી"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"લક્ષ્ય ઉપકરણ PCI સરનામું %04x:%02x:%02x.%02x એ સ્ત્રોત %04x:%02x:%02x સાથે બંધબેસતુ "
"નથી.%02x"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr "લક્ષ્ય ઉપકરણ સરનામાં પ્રકાર %s એ સ્ત્રોત %s સાથે બંધબેસતુ નથી"
@@ -9306,10 +9002,6 @@ msgstr "%s માટે શોધાયેલ ઘણી ફાઇલસિસ્
msgid "Too many interfaces '%d' for limit '%d'"
msgstr "મર્યાદા '%d' માટે ઘણાં ઇન્ટરફેસો '%d'"
#, c-format
msgid "Too many job stats '%d' for limit '%d'"
msgstr "મર્યાદા '%d' માટે ધણી કાર્ય સ્થિતિઓ '%d'"
#, c-format
msgid "Too many migration parameters '%d' for limit '%d'"
msgstr "મર્યાદા '%d' માટે ઘણાં સ્થળાંતર પરિમાણો '%d'"
@@ -9559,10 +9251,6 @@ msgstr "%s ને બદલવાનું અસમર્થ"
msgid "Unable to change to root dir"
msgstr "રુટ dir ને બદલવાનું અસમર્થ"
#, c-format
msgid "Unable to chdir(%s)"
msgstr "chdir(%s) માટે અસમર્થ"
#, c-format
msgid "Unable to check interface %s"
msgstr "ઇન્ટરફસે %s ને ચકાસવાનું અસમર્થ"
@@ -9794,10 +9482,6 @@ msgstr "સંદેશા પેલોડનુ એનકોડ કરવાન
msgid "Unable to encode number of FDs"
msgstr "FDs ની સંખ્યાને એનકોડ કરવાનું અસમર્થ"
#, c-format
msgid "Unable to exec shell %s"
msgstr "exec shell %s માટે અસમર્થ"
msgid "Unable to find 'cpuacct' cgroups controller mount"
msgstr "'cpuacct' cgroups નિયંત્રક માઉન્ટ શોધવામાં અસમર્થ"
@@ -9856,9 +9540,6 @@ msgstr "DBus સત્ર બસ જોડાણને મેળવવાનુ
msgid "Unable to get DBus system bus connection: %s"
msgstr "DBus સિસ્ટમ બસ જોડાણને મેળવવાનું અસમર્થ: %s"
msgid "Unable to get Host CPU set"
msgstr "યજમાન CPU સુયોજનને મેળવવાનું અસમર્થ"
#, c-format
msgid "Unable to get LVM key for %s"
msgstr "%s માટે LVM કીને મેળવવાનું અસમર્થ"
@@ -9926,9 +9607,6 @@ msgstr "ioctl મારફતે મુક્ત લુપ ઉપકરણને
msgid "Unable to get free slot number"
msgstr "મુક્ત સ્લોટ નંબરને મેળવવાનું અસમર્થ"
msgid "Unable to get host metric Information"
msgstr "યજમાન મેટ્રીક જાણકારીને મેળવવાનું અસમર્થ"
#, c-format
msgid "Unable to get index for interface %s"
msgstr "ઈન્ટરફેસ %s માટે અનુક્રમણિકાને મેળવવાનું અસમર્થ"
@@ -10174,13 +9852,6 @@ msgstr "વર્ગ '%s' ને પદચ્છેદન કરવાનું
msgid "Unable to parse current SELinux context '%s'"
msgstr "વર્તમાન SELinux સંદર્ભ '%s' નું પદચ્છેદન કરવાનું અસમર્થ"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "પરિમાણ '%s' ને પદચ્છેદન કરવામાં અસમર્થ"
msgid "Unable to parse given mac address"
msgstr "આપેલ mac સરનામાંનુ પદચ્છેદન કરવામાં અસમર્થ"
msgid "Unable to parse integer parameter"
msgstr "પૂર્ણાંક પરિમાણનું પદચ્છેદન કરવાનું અસમર્થ"
@@ -10477,13 +10148,6 @@ msgstr "બાઇન્ડ લક્ષ્ય %s નાં આંકડા મ
msgid "Unable to truncate %s"
msgstr "%s ખોલવામાં નિષ્ફળ"
msgid "Unable to unescape command"
msgstr "unescape આદેશને ચલાવવાનું અસમર્થ"
#, c-format
msgid "Unable to use MAC address starting with reserved value 0xFE - '%s' - "
msgstr "આરક્ષિત થયેલ કિંમત 0xFE સાથે શરૂ થતા MAC સરનામાંને વાપરવાનું અસમર્થ - '%s' - "
#, c-format
msgid "Unable to verify TLS peer: %s"
msgstr "TLS પીઅરને ચકાસવાનું અસમર્થ: %s"
@@ -11689,10 +11353,6 @@ msgstr "એક ઉપકરણ કરતા વધારે માટે વા
msgid "booted"
msgstr "બુટ થયેલ"
msgid ""
"booting from assigned devices is only supported for PCI, USB and SCSI devices"
msgstr "સોંપેલ ઉપકરણોમાંથી બુટીંગ એ ફક્ત PCI, USB અને SCSI ઉપકરણો માટે આધારભૂત છે"
#, c-format
msgid "bridge %s doesn't exist"
msgstr "બ્રિજ %s અસ્તિત્વમાં નથી"
@@ -12192,10 +11852,6 @@ msgstr "અસ્થાયી ડોમેઇન માટે સ્નેપશ
msgid "cannot halt after transient domain snapshot"
msgstr "અસ્થાયી ડોમેઇન સ્નેપશોટ પછી રાહ જોઇ શકાતી નથી"
#, c-format
msgid "cannot hot unplug multifunction PCI device: %.4x:%.2x:%.2x.%.1x"
msgstr "host pci ઉપકરણ %.4x:%.2x:%.2x.%.1x મળ્યુ નથી"
#, c-format
msgid "cannot initialize cert object: %s"
msgstr "પ્રમાણપત્ર ઑબ્જેક્ટને પ્રારંભ કરી શકાતુ નથી: %s"
@@ -13540,10 +13196,6 @@ msgstr "dev->id બફર ઓવરફ્લો: %s %s"
msgid "dev->name buffer overflow: %.3d:%.3d"
msgstr "dev->નામ બફર ઓવરફ્લો: %.3d:%.3d"
#, c-format
msgid "dev->name buffer overflow: %.4x:%.2x:%.2x.%.1x"
msgstr "dev->name બફર ઓવરફ્લો: %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "device %s iommu_group symlink %s has invalid group number %s"
msgstr "ઉપકરણ %s iommu_group સીમલીંક %s પાસે અયોગ્ય જૂથ નંબર %s છે"
@@ -14755,9 +14407,6 @@ msgstr "ફાઇલ '%s' લખવામાં નિષ્ફળતા"
msgid "fatal signal %d"
msgstr "ફેટલ સંકેત %d"
msgid "fd and fdset must be valid"
msgstr "fd અને fdset યોગ્ય હોવુ જ જોઇએ"
msgid "fd must be valid"
msgstr "fd માન્ય હોવુ જ જોઇએ"
@@ -15042,10 +14691,6 @@ msgstr "યજમાન ઉપકરણ પહેલેથી અસ્તિત
msgid "host isn't capable of IPv6"
msgstr "યજમાન એ IPv6 ને સક્ષમ નથી"
#, c-format
msgid "host pci device %.4x:%.2x:%.2x.%.1x not found"
msgstr "host pci ઉપકરણ %.4x:%.2x:%.2x.%.1x મળ્યુ નથી"
#, c-format
msgid "host reports map buffer length exceeds maximum: %d > %d"
msgstr "યજમાન મહત્તમ કરતા વધારે મેપ બફર લંબાઇ ને રિપોર્ટ કરે છે: %d > %d"
@@ -15151,9 +14796,6 @@ msgstr "જોડાણ URI માં પાસવર્ડને સમાવ
msgid "incomplete metadata in '%s'"
msgstr "'%s' માં અપૂર્ણ મેટાડેટા"
msgid "incomplete return information"
msgstr "અપૂરતી પરત જાણકારી"
#, c-format
msgid "incomplete save header in '%s'"
msgstr "'%s' માં અપૂરતુ સંગ્રહ હેડર"
@@ -15412,10 +15054,6 @@ msgstr "લાગુ થયેલ અયોગ્ય દલીલ"
msgid "invalid argument: %s"
msgstr "અયોગ્ય દલીલ: %s"
#, c-format
msgid "invalid base64 in '%s'"
msgstr "'%s' માં અયોગ્ય base64"
msgid "invalid catchup limit"
msgstr "અજ્ઞાત catchup મર્યાદા"
@@ -18861,10 +18499,6 @@ msgstr "આ નેટવર્ક પહેલાથી જ હાજર છે"
msgid "this platform is missing dlopen"
msgstr "આ પ્લેટફોર્મ ગુમ થયેલ dlopen છે"
#, c-format
msgid "this qemu doesn't support RNG device type '%s'"
msgstr "આ qemu ને RNG ઉપકરણ પ્રકાર '%s' ને આધાર આપતુ નથી"
msgid "this qemu doesn't support the rng-egd backend"
msgstr "આ qemu rng-egd બૅકએન્ડને આધાર આપતુ નથી"
@@ -19264,10 +18898,6 @@ msgstr "ડિસ્ક %s માટે આંકડા મેળવવાનુ
msgid "unable to unload already unloaded profile"
msgstr "પહેલેથી અનલોડ રૂપરેખાને અનલોડ કરવાનું અસમર્થ"
#, c-format
msgid "unable to visit backing chain file %s"
msgstr "બેકીંગ ચેઇન ફાઇલ %s ને મુલાકાત કરવાનું અસમર્થ"
#, c-format
msgid "unable to wait for process %lld"
msgstr "પ્રક્રિયા %lld માટે રાહ જોવાનું અસમર્થ"
@@ -19327,14 +18957,6 @@ msgstr "અનિચ્છનીય %s ક્રિયા: %d"
msgid "unexpected OpenVZ URI path '%s', try openvz:///system"
msgstr "અનિચ્છનીય OpenVZ URI પાથ '%s', openvz:///system નો પ્રયત્ન કરો"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///session"
msgstr "અનિચ્છનીય QEMU URI પાથ '%s', qemu:///session નો પ્રયત્ન કરો"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///system"
msgstr "અનિચ્છનીય QEMU URI પાશ '%s', qemu:///system નો પ્રયત્ન કરો"
#, c-format
msgid ""
"unexpected VMware URI path '%s', try vmwareplayer:///session, vmwarews:///"
@@ -19859,14 +19481,6 @@ msgstr "અજ્ઞાત ડ્રાઇવર બંધારણ કિંમ
msgid "unknown driver name '%s'"
msgstr "અજ્ઞાત ડ્રાઇવર નામ '%s'"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///session)"
msgstr "અજ્ઞાત ડ્રાઇવર પાથ '%s' સ્પષ્ટ થયેલ છે (vbox:///session નો પ્રયત્ન કરો)"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///system)"
msgstr "અજ્ઞાત ડ્રાઇવર પાથ '%s' સ્પષ્ટ થયેલ છે (vbox:///system નો પ્રયત્ન કરો)"
#, c-format
msgid "unknown dumpformat '%d'"
msgstr "અજ્ઞાત dumpformat '%d'"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.3.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2018-04-24 06:25+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Hebrew (http://www.transifex.com/projects/p/fedora/language/"

View File

@@ -17,9 +17,9 @@
# sandeep shedmake <sandeep.shedmake@gmail.com>, 2007
msgid ""
msgstr ""
"Project-Id-Version: libvirt 5.6.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-07-30 11:31+0100\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: 2015-02-23 12:39+0000\n"
"Last-Translator: Copied by Zanata <copied-by-zanata@zanata.org>\n"
"Language-Team: Hindi (http://www.transifex.com/projects/p/fedora/language/"
@@ -47,43 +47,6 @@ msgstr ""
"\n"
" विवरण\n"
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" Sockets:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" CA certificate: $HOME/.pki/libvirt/cacert.pem\n"
" Server certificate: $HOME/.pki/libvirt/servercert.pem\n"
" Server private key: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID file:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgstr ""
"\n"
" तयशुदा पथ:\n"
"\n"
" विन्यास फ़ाइल (unless overridden by -f):\n"
" $XDG_CONFIG_HOME/libvirt/libvirtd.conf\n"
"\n"
" सॉकेट:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirt-sock\n"
"\n"
" TLS:\n"
" सीए प्रमाणपत्र: $HOME/.pki/libvirt/cacert.pem\n"
" सर्वर प्रमाणपत्र: $HOME/.pki/libvirt/servercert.pem\n"
" सर्वर निजी कुंजी: $HOME/.pki/libvirt/serverkey.pem\n"
"\n"
" PID फ़ाइल:\n"
" $XDG_RUNTIME_DIR/libvirt/libvirtd.pid\n"
"\n"
msgid ""
"\n"
" Default paths:\n"
@@ -111,34 +74,6 @@ msgstr ""
" $XDG_RUNTIME_DIR/libvirt/virtlockd.pid\n"
"\n"
#, c-format
msgid ""
"\n"
" Default paths:\n"
"\n"
" Configuration file (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" Sockets:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID file (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgstr ""
"\n"
" तयशुदा पथ:\n"
"\n"
" विन्यास फाइल (unless overridden by -f):\n"
" %s/libvirt/virtlockd.conf\n"
"\n"
" सॉकेट:\n"
" %s/run/libvirt/virtlockd-sock\n"
"\n"
" PID फ़ाइल (unless overridden by -p):\n"
" %s/run/virtlockd.pid\n"
"\n"
msgid ""
"\n"
" OPTIONS\n"
@@ -2171,10 +2106,6 @@ msgstr "FAIL"
msgid "Failed"
msgstr "असफल"
#, c-format
msgid "Failed opening %s"
msgstr "%s खोलने में विफल "
msgid "Failed to acquire lock"
msgstr "ताला पाने में असफल"
@@ -2182,20 +2113,9 @@ msgstr "ताला पाने में असफल"
msgid "Failed to add IP address %s to IP address cache for interface %s"
msgstr "अंतराफलक %s के लिए आई पी पते कैश को आई पी पता %s से जोड़ने में विफल"
#, c-format
msgid "Failed to add PCI device ID '%s' to %s"
msgstr "PCI युक्ति ID '%s' को %s में जोड़ने में विफल"
#, c-format
msgid "Failed to add slot for PCI device '%s' to %s"
msgstr "PCI युक्ति '%s' के लिए %s में स्लॉट जोड़ने में विफल"
msgid "Failed to allocate XML buffer"
msgstr "XML बफर आबंटित करने में विफल"
msgid "Failed to allocate memory"
msgstr "स्मृति संभाजित करने में विफल"
msgid "Failed to allocate memory for path"
msgstr "पथ के लिए स्मृति संभाजित करने में विफल"
@@ -2228,10 +2148,6 @@ msgstr "VM '%s' ऑटोस्टार्ट में विफल: %s"
msgid "Failed to autostart storage pool '%s': %s"
msgstr "भंडारण पूल को स्वतः शुरू करने में '% s' करने में असफ़ल: %s"
#, c-format
msgid "Failed to bind PCI device '%s' to %s"
msgstr "PCI युक्ति '%s' को %s में बाइंड करने में विफल"
#, c-format
msgid "Failed to bind mount directory %s to %s"
msgstr "%s को माउंट निर्देशिका %s बाइंड करने में विफल"
@@ -2815,10 +2731,6 @@ msgstr "xml namespace '%s' पंजीकरण विफल"
msgid "Failed to release lock"
msgstr "लॉक जारी करने में विफल"
#, c-format
msgid "Failed to remove PCI ID '%s' from %s"
msgstr "PCI ID '%s' को %s से हटाने में विफल"
msgid "Failed to remove domain managed save image"
msgstr "छवि सहेजने में प्रबंधित डोमेन को हटाने में विफल"
@@ -2968,10 +2880,6 @@ msgstr " %s को सांकेतिकलिंक %s उपकरण स
msgid "Failed to take snapshot: %s"
msgstr "तस्वीर लेने में विफल: %s"
#, c-format
msgid "Failed to trigger a re-probe for PCI device '%s'"
msgstr "PCI युक्ति '%s' के लिए फिर जाँच को ट्रिगर करने में विफल"
#, c-format
msgid "Failed to truncate volume with path '%s' to %ju bytes"
msgstr "पथ '%s' को %ju बाइट के साथ मात्रा रूंडन करने में विफल"
@@ -3358,9 +3266,6 @@ msgstr "अवैध तर्क"
msgid "Invalid back reference"
msgstr "अवैध बैक संदर्भ"
msgid "Invalid base64 data"
msgstr "अवैध base64 आँकड़ा"
#, c-format
msgid "Invalid bridge mac address '%s' in network '%s'"
msgstr "संजाल '%s' में अमान्य पुल mac पता '%s'"
@@ -4177,9 +4082,6 @@ msgstr "होस्ट '%s' के लिये कोई IP पता नह
msgid "No JSON parser implementation is available"
msgstr "कोई JSON पार्सर कार्यान्वयन उपलब्ध नहीं है"
msgid "No UNIX process ID available"
msgstr "कोई यूनिक्स प्रक्रिया आईडी उपलब्ध नहीं"
#, c-format
msgid "No active operation on device: %s"
msgstr "डिवाइस पर कोई सक्रिय कार्रवाई नहीं: %s"
@@ -5141,13 +5043,6 @@ msgstr "लक्ष्य नियंत्रक प्रकार %s का
msgid "Target controller vectors %d does not match source %d"
msgstr "लक्ष्य नियंत्रक सदिश %d का मेल स्रोत %d से नहीं है"
#, c-format
msgid ""
"Target device PCI address %04x:%02x:%02x.%02x does not match source %04x:"
"%02x:%02x.%02x"
msgstr ""
"लक्ष्य युक्ति PCI पता %04x:%02x:%02x.%02x का मेल स्रोत %04x:%02x:%02x.%02x से नहीं है"
#, c-format
msgid "Target device address type %s does not match source %s"
msgstr "लक्ष्य युक्ति पता प्रकार %s का मेल स्रोत %s से नहीं है"
@@ -5880,10 +5775,6 @@ msgstr "Peer2peer उत्प्रवासन यूआरआइ ओवरर
msgid "Unable to parse class id '%s'"
msgstr "वर्ग आईडी '%s' के विश्लेषण में असमर्थ"
#, c-format
msgid "Unable to parse devaddr parameter '%s'"
msgstr "devaddr पैरामीटर '%s' को विश्लेषित करने में असमर्थ"
#, c-format
msgid "Unable to parse lock state %s"
msgstr "लोक स्थिति %s विश्लेषण में अक्षम"
@@ -7035,10 +6926,6 @@ msgstr "vCPU स्थापन व pCPU समय नहीं पा सकत
msgid "cannot halt after transient domain snapshot"
msgstr "अस्थायी डोमेन स्नैपशॉट को रोक नहीं सकते"
#, c-format
msgid "cannot hot unplug multifunction PCI device: %.4x:%.2x:%.2x.%.1x"
msgstr "गर्म multifunction PCI डिवाइस अनप्लग नहीं कर सकते है: %.4x:%.2x:%.2x.%.1x"
#, c-format
msgid "cannot initialize cert object: %s"
msgstr "cert ऑब्जेक्ट को प्रारंभ नहीं कर सकता: %s"
@@ -8795,10 +8682,6 @@ msgstr "होस्ट के यूएसबी युक्ति पहल
msgid "host device already exists"
msgstr "होस्ट के युक्ति पहले से मौजूद है"
#, c-format
msgid "host pci device %.4x:%.2x:%.2x.%.1x not found"
msgstr "होस्ट pci युक्ति %.4x:%.2x:%.2x.%.1x नहीं मिला"
#, c-format
msgid "host reports map buffer length exceeds maximum: %d > %d"
msgstr "मेजबान ने नक्शा बफर को रिपोर्ट किया जो अधिकतम से अधिक है: %d > %d"
@@ -8876,9 +8759,6 @@ msgstr "निष्क्रिय"
msgid "include security sensitive information in XML dump"
msgstr "XML डंप में सुरक्षा संवेदनशील सूचना शामिल करें"
msgid "incomplete return information"
msgstr "अपूर्ण वापसी सूचना"
#, c-format
msgid "incomplete save header in '%s'"
msgstr "'%s' में अपूर्ण सहेज शीर्षिका"
@@ -9094,10 +8974,6 @@ msgstr "अवैध तर्क की आपूर्ति"
msgid "invalid argument: %s"
msgstr "अवैध आर्गुमेंट. %s"
#, c-format
msgid "invalid base64 in '%s'"
msgstr "'%s' में अवैध base64"
msgid "invalid catchup limit"
msgstr "अवैध catchup सीमा"
@@ -11425,10 +11301,6 @@ msgstr "डिस्क %s के लिए स्टेट करने मे
msgid "unable to unload already unloaded profile"
msgstr "पहले से ही अनलोड किये गयें प्रोफाइल को खाली करने में असमर्थ"
#, c-format
msgid "unable to visit backing chain file %s"
msgstr "समर्थन श्रृंखला फ़ाइल %s यात्रा करने में असमर्थ"
msgid "unable to write to child input"
msgstr "बच्चे को इनपुट के लिए लिखने में असमर्थ"
@@ -11458,14 +11330,6 @@ msgstr "अप्रत्याशित %s क्रिया: %d"
msgid "unexpected OpenVZ URI path '%s', try openvz:///system"
msgstr "अप्रत्याशित OpenVZ URI path '%s', try openvz:///system"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///session"
msgstr "अप्रत्याशित QEMU URI पथ '%s', qemu:///session आजमाएँ"
#, c-format
msgid "unexpected QEMU URI path '%s', try qemu:///system"
msgstr "अप्रत्याशित QEMU URI पथ '%s', qemu:///system आजमाएँ"
#, c-format
msgid "unexpected accessmode %d"
msgstr "अप्रत्याशित डिस्क कैश मोड %d"
@@ -11902,14 +11766,6 @@ msgstr "अज्ञात डिस्क प्रकार '%s'"
msgid "unknown driver format value '%s'"
msgstr "अज्ञात ड्राइवर स्वरूप मान '%s'"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///session)"
msgstr "अज्ञात ड्राइवर पथ '%s' निर्दिष्ट (try vbox:///session)"
#, c-format
msgid "unknown driver path '%s' specified (try vbox:///system)"
msgstr "अज्ञात ड्राइवर पथ '%s' निर्दिष्ट (try vbox:///system)"
msgid "unknown error"
msgstr "अज्ञात त्रुटि"

View File

@@ -1,13 +1,13 @@
# Libvirt package strings.
# Copyright (C) 2018 The Libvirt authors
# Copyright (C) 2019 The Libvirt authors
# This file is distributed under the same license as the libvirt package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libvirt 4.10.0\n"
"Project-Id-Version: libvirt 5.9.0\n"
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
"POT-Creation-Date: 2019-01-14 16:56+0000\n"
"POT-Creation-Date: 2019-10-18 13:39+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: Croatian\n"

Some files were not shown because too many files have changed in this diff Show More