libvirt.git
19 hours agoremote: disable unused function on win32 platform build master
Daniel P. Berrangé [Tue, 24 Apr 2018 18:30:16 +0000]
remote: disable unused function on win32 platform build

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

21 hours agoutil: improve virNetDevTapGetRealDeviceName
Roman Bogorodskiy [Sun, 8 Apr 2018 15:30:29 +0000]
util: improve virNetDevTapGetRealDeviceName

virNetDevTapGetRealDeviceName() is used on FreeBSD because interface
names (such as one sees in output of tools like ifconfig(8)) might not
match their /dev entity names, and for bhyve we need the latter.

Current implementation is not very efficient because in order to find
/dev name, it goes through all /dev/tap* entries and tries to issue
TAPGIFNAME ioctl on it. Not only this is slow, but also there's a bug in
this implementation when more than one NIC is passed to a VM: once we
find the tap interface we're looking for, we set its state to UP because
opening it for issuing ioctl sets it DOWN, even if it was UP before.
When we have more than 1 NIC for a VM, we have only last one UP because
others remain DOWN after unsuccessful attempts to match interface name.

New implementation just uses sysctl(3), so it should be faster and
won't make interfaces go down to get name.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

22 hours agoremote: refactor code for building UNIX socket paths
Daniel P. Berrangé [Fri, 23 Mar 2018 10:41:23 +0000]
remote: refactor code for building UNIX socket paths

The code for building UNIX socket paths will be getting more complex to
cope with accessing various different daemons. Refactor it to eliminate
the code duplication and isolation the logic for constructing paths.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agoremote: split URI scheme into driver and transport upfront
Daniel P. Berrangé [Fri, 13 Apr 2018 08:51:25 +0000]
remote: split URI scheme into driver and transport upfront

Currently the remote driver extracts the transport from URI scheme and
plays games to temporarily hide the driver part when formatting URIs.
Refactor the code to split the URI scheme upfront so the two pieces are
easily available where needed.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agoremote: honour errors from virDriverLoadModule
Daniel P. Berrangé [Thu, 19 Apr 2018 16:02:22 +0000]
remote: honour errors from virDriverLoadModule

The libvirtd daemon currently ignores the return status of
virDriverLoadModule entirely. This is way too loose, resulting in many
important problems going undiagnosed, resulting in a libvirtd that may
never work correctly. We should only ignore a non-existant module, and
pass back any fatal errors.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agodriver: add option to make missing drivers a fatal problem
Daniel P. Berrangé [Thu, 19 Apr 2018 15:50:56 +0000]
driver: add option to make missing drivers a fatal problem

Currently the driver module loading code does not report an error if the
driver module is physically missing on disk. This is useful for distro
packaging optional pieces. When the daemons are split up into one daemon
per driver, we will expect module loading to always succeed. If a driver
is not desired, the entire daemon should not be installed.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agodriver: use normal error reporting APIs when loading modules
Daniel P. Berrangé [Thu, 19 Apr 2018 15:21:38 +0000]
driver: use normal error reporting APIs when loading modules

The driver module loading code is one of the few places that still uses
VIR_ERROR for reporting failures. Convert it to normal error reporting
APIs.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agodriver: tighten check for whether loadable module exists or not
Daniel P. Berrangé [Thu, 19 Apr 2018 15:00:30 +0000]
driver: tighten check for whether loadable module exists or not

Currently we do a access(R_OK) check to see whether a loadable module
exists, treating failure as non-fatal. This is unreasonably loose, as a
module which exists but has had incorrect permissions set will turn into
a silent skip. We only want to skip loading if the module genuinely does
not exist on disk, due to the optional package not being installed.

Furthermore, checking the return value of virDriverLoadModuleFile() is
not a suitable witness that the module does not exist. This method can
return NULL if dlopen() fails, for example due to being unable to
resolve symbols in the library. This is should always be reported as an
error because it is a sign of the bad installation where either the
module build doesn't match the libvirtd build, or where some 3rd party
libraries are missing or broken.

Both these problems can be fixed by using virFileExists in the caller
instead.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agodriver: fix handling of error return from finding resource
Daniel P. Berrangé [Thu, 19 Apr 2018 14:25:01 +0000]
driver: fix handling of error return from finding resource

The virFileFindResource method merely builds up the expected fully
qualified path to the resource. It does not actually check if it exists
on disk. The loadable module callers were mistakenly thinking a NULL
indicates the file doesn't exist on disk, whereas it in fact indicates
an out of memory error.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agodriver: don't keep a pointer to the loaded library handle
Daniel P. Berrangé [Thu, 19 Apr 2018 14:20:44 +0000]
driver: don't keep a pointer to the loaded library handle

Now that we've activated two hacks to prevent unloading of modules,
there is no point passing back a pointer to the loaded library handle.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agobuild: prevent unloading of dlopen'd modules
Daniel P. Berrangé [Thu, 19 Apr 2018 10:42:22 +0000]
build: prevent unloading of dlopen'd modules

We previously added "-z nodelete" to the build of libvirt.so to prevent
crashes when thread local destructors run which point to a code that
has been dlclose()d:

  commit 8e44e5593eb9b89fbc0b54fde15f130707a0d81e
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Thu Sep 1 17:57:06 2011 +0100

      Prevent crash from dlclose() of libvirt.so

The libvirtd loadable modules can suffer from the same problem if they
were ever unloaded. Fortunately we don't ever call dlclose() on them,
but lets add a second layer of protection by linking them with the
"-z nodelete" flag. While we're doing this, lets add a third layer of
protection by passing RTLD_NODELETE to dlopen().

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agovirsh: remove left over print statement wrt Xen driver
Daniel P. Berrangé [Tue, 24 Apr 2018 15:59:21 +0000]
virsh: remove left over print statement wrt Xen driver

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agoremote: stop trying to load Xen driver module
Daniel P. Berrangé [Thu, 19 Apr 2018 16:12:44 +0000]
remote: stop trying to load Xen driver module

The Xen driver was recently deleted, but libvirtd has left over code
that tries to use it. Fortunately this is dead code because WITH_XEN
will never be defined anymore.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

22 hours agobuild: prevent unloading of all public libraries
Daniel P. Berrangé [Thu, 19 Apr 2018 14:14:04 +0000]
build: prevent unloading of all public libraries

We previously added "-z nodelete" to the build of libvirt.so to prevent
crashes when thread local destructors run which point to a code that
has been dlclose()d:

  commit 8e44e5593eb9b89fbc0b54fde15f130707a0d81e
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Thu Sep 1 17:57:06 2011 +0100

      Prevent crash from dlclose() of libvirt.so

We forgot to copy this protection into the libvirt-qemu.so, libvirt-lxc.so
and libvirt-admin.so libraries when we introduced them.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

25 hours agoCheck return status for virUUIDGenerate
John Ferlan [Mon, 9 Apr 2018 20:30:10 +0000]
Check return status for virUUIDGenerate

Although legal, a few paths were not checking a return value < 0
for failure instead they checked a non zero failure.

Clean them all up to be consistent.

Signed-off-by: John Ferlan <jferlan@redhat.com>

29 hours agovirNumaGetHugePageInfo: Return page_avail and page_free as ULL
Michal Privoznik [Mon, 23 Apr 2018 14:36:53 +0000]
virNumaGetHugePageInfo: Return page_avail and page_free as ULL

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

On some large systems (with ~400GB of RAM) it is possible for
unsigned int to overflow in which case we report invalid number
of 4K pages pool size. Switch to unsigned long long.

We hit overflow in virNumaGetPages when doing:

    huge_page_sum += 1024 * page_size * page_avail;

because although 'huge_page_sum' is an unsigned long long, the
page_size and page_avail are both unsigned int, so the promotion
to unsigned long long doesn't happen until the sum has been
calculated, by which time we've already overflowed.

Turning page_avail into a unsigned long long is not strictly
needed until we need ability to represent more than 2^32
4k pages, which equates to 16 TB of RAM. That's not
outside the realm of possibility, so makes sense that we
change it to unsigned long long to avoid future problems.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

29 hours agotools: do not report unknown guests in print_guests_shutdown
Christian Ehrhardt [Thu, 19 Apr 2018 06:41:03 +0000]
tools: do not report unknown guests in print_guests_shutdown

If another event in background while running libvirt-guests.sh
completely undefines a guest it will no more be available for proper
reporting of its shutdown.

This appears in the log as:
  Failed to determint state of guest: <UUID>. Not tracking it anymore
  Shutdown of guest  complete

The first message already reports that we are giving up on the guest
(per UUID which is all we have left at that point). To avoid the message
with an empty guest_name in such a case lets check what guest_name
returned and only print a report on valid content.

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Dariusz Gadomski <dariusz.gadomski@canonical.com>

29 hours agotools: fix check_guests_shutdown loop
Christian Ehrhardt [Thu, 19 Apr 2018 06:41:02 +0000]
tools: fix check_guests_shutdown loop

The recent fix to libvirt-guests.sh.in works for what it intended to fix
(variable scope) but failed to adapt the loop in check_guests_shutdown
correctly. Due to that it currently might detect all guests as "Failed to
determine state of guest" by bad var content or just assumes they are shut
down by picking up an empty variable.

This commit fixes loop to use the passed value and the call in the loop
to actually use the variable assigned in the iterated.

Fixes: 7e476356 "tools: fix variable scope in in check_guests_shutdown"
Fixes: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1764668

Reviewed-by: Dariusz Gadomski <dariusz.gadomski@canonical.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>

2 days agonews: Document rom.enabled attribute for PCI devices
Andrea Bolognani [Fri, 20 Apr 2018 15:26:07 +0000]
news: Document rom.enabled attribute for PCI devices

Signed-off-by: Andrea Bolognani <abologna@redhat.com>

2 days agotests: Make sure rom.file='' for PCI devices keeps working
Andrea Bolognani [Mon, 23 Apr 2018 11:45:59 +0000]
tests: Make sure rom.file='' for PCI devices keeps working

Even though we just introduced the rom.enabled attribute to
properly cover the use case, there might be guests out there
that use the only previously available way of disabling PCI
ROM loading by not opting in to schema validation.

To make sure such guests will keep working going forward,
introduce a test case covering the legacy workaround.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>

2 days agoqemu: Format rom.enabled attribute for PCI devices
Andrea Bolognani [Fri, 20 Apr 2018 15:17:11 +0000]
qemu: Format rom.enabled attribute for PCI devices

The attribute can be used to disable ROM loading completely
for a device.

This might be needed because, even when the guest is configured
such that the PCI ROM will not be loaded in the PCI BAR, some
hypervisors (eg. QEMU) might still make it available to the
guest in a form (eg. fw_cfg) that some firmwares (eg. SeaBIOS)
will consume, thus not achieving the desired result.

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

Signed-off-by: Andrea Bolognani <abologna@redhat.com>

2 days agoconf: Add rom.enabled attribute for PCI devices
Andrea Bolognani [Thu, 19 Apr 2018 15:55:41 +0000]
conf: Add rom.enabled attribute for PCI devices

The attribute can be used to disable ROM loading completely
for a device.

This might be needed because, even when the guest is configured
such that the PCI ROM will not be loaded in the PCI BAR, some
hypervisors (eg. QEMU) might still make it available to the
guest in a form (eg. fw_cfg) that some firmwares (eg. SeaBIOS)
will consume, thus not achieving the desired result.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>

2 days agoconf: Rework/rename virDomainObjListFindByIDRef
John Ferlan [Fri, 9 Mar 2018 15:59:28 +0000]
conf: Rework/rename virDomainObjListFindByIDRef

Rework the code such that virDomainObjListFindByID will always
return a locked/ref counted object so that the callers can
always do the same cleanup logic to call virDomainObjEndAPI.
Makes accessing the objects much more consistent.

NB:
There were 2 callers (lxcDomainLookupByID and qemuDomainLookupByID)
that were already using the ByID name, but not virDomainObjEndAPI -
these were changed as well in this update/patch.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Jim Fehlig <jfehlig@suse.com>

2 days agoconf: Rework/rename virDomainObjListFindByUUIDRef
John Ferlan [Fri, 9 Mar 2018 15:47:46 +0000]
conf: Rework/rename virDomainObjListFindByUUIDRef

Now that every caller is using virDomainObjListFindByUUIDRef,
let's just remove it and keep the name as virDomainObjListFindByUUID.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Jim Fehlig <jfehlig@suse.com>

2 days agogit: add config file telling git-publish how to send patches
Daniel P. Berrangé [Wed, 18 Apr 2018 17:30:38 +0000]
git: add config file telling git-publish how to send patches

The "git-publish" tool is a useful git extension for sending patch
series for code review. It automatically creates versioned tags
each time code on a branch is sent, so that there is a record of
each version. It also remembers the cover letter so it does not
need re-entering each time the series is reposted.

With this config file present it is now sufficient[1] to run

  $ git publish

to send all patches in a branch to the list for review

[1] Assuming your $HOME/.gitconfig has an SMTP server listed
at least e.g.

   [sendemail]
        smtpserver = smtp.example.com

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

4 days agotests: Xen: use qemu-system-i386 for emulator
Jim Fehlig [Wed, 11 Apr 2018 16:38:14 +0000]
tests: Xen: use qemu-system-i386 for emulator

Many of the old xm and sexpr test files used qemu-dm as the emulator.
Modern Xen systems no longer use the old, forked qemu-dm, instead
preferring the distro provided qemu or an "upstream" qemu that is
built when the Xen tools are built. This qemu is typically installed
in /usr/lib/xen/bin/qemu-system-i386.

The libxl test files already use /usr/lib/xen/bin/qemu-system-i386.
For consistency, change the old test files to use the same emulator

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>

5 days agovz: Use virDomainObjListFindBy{UUID|ID}Ref
John Ferlan [Fri, 9 Mar 2018 15:30:47 +0000]
vz: Use virDomainObjListFindBy{UUID|ID}Ref

For vzDomainLookupByID and vzDomainLookupByUUID let's
return a locked and referenced @vm object so that callers
can then use the common and more consistent virDomainObjEndAPI
in order to handle cleanup rather than needing to know that the
returned object is locked and calling virObjectUnlock.

The LookupByName already returns the ref counted and locked object,
so this will make things more consistent.

Also adjust the prlsdkHandle{VmState|VmRemoved|Perf}Event APIs
in the same manner.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>

5 days agovz: Unify vzDomObjFromDomain{Ref}
John Ferlan [Fri, 9 Mar 2018 14:59:00 +0000]
vz: Unify vzDomObjFromDomain{Ref}

Rather than have two API's doing different things for different
callers, let's make one API that will always return a locked and
ref counted object. That way, the callers will always know that
they must call virDomainObjEndAPI and not have to decide whether
they should call virObjectUnlock instead.

This will make things consistent with LookupByName which returns
the locked and ref counted object.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>

5 days agovmware: Use virDomainObjListFindBy{UUID|ID}Ref
John Ferlan [Mon, 23 Oct 2017 17:25:34 +0000]
vmware: Use virDomainObjListFindBy{UUID|ID}Ref

For vmwareDomObjFromDomainLocked and vmwareDomainLookupByID
let's return a locked and referenced @vm object so that callers
can then use the common and more consistent virDomainObjEndAPI
in order to handle cleanup rather than needing to know that the
returned object is locked and calling virObjectUnlock.

The LookupByName already returns the ref counted and locked object,
so this will make things more consistent.

For vmwareDomainUndefineFlags and vmwareDomainShutdownFlags since
virDomainObjListRemove will return an unlocked object, we need to
relock before making the EndAPI call.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

5 days agovmware: Add more descriptive error message on Find failure
John Ferlan [Fri, 9 Mar 2018 14:46:47 +0000]
vmware: Add more descriptive error message on Find failure

If vmwareDomainLookupByID or vmwareDomainLookupByName fails
to find a vm, let's be a bit more descriptive by providing
the failing id or name in the error message.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

5 days agovmware: Create accessors to virDomainObjListFindByUUID
John Ferlan [Mon, 23 Oct 2017 17:19:46 +0000]
vmware: Create accessors to virDomainObjListFindByUUID

Rather than repeat code throughout, create and use a couple of
accessors in order to lookup by UUID.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

5 days agovmware: Properly clean up in vmwareDomainLookupByName
John Ferlan [Fri, 9 Mar 2018 14:48:07 +0000]
vmware: Properly clean up in vmwareDomainLookupByName

The virDomainObjListFindByName returns a locked and reffed
domain object, all we did was unlock it, leaving an extra
ref. Use the virDomainObjEndAPI to cleanup instead.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>

5 days agoremote: always build generated source files
Daniel P. Berrangé [Fri, 20 Apr 2018 10:44:35 +0000]
remote: always build generated source files

The generated source files for dispatching libvirtd RPC messages contain
translations and are thus listed in POTFILES. This means they are
required in order to build libvirt.pot. Rather than changing the files
that go into libvirt.pot dynamically, just unconditionally build the
remote driver sources so they are always available for building
libvirt.pot. This ensures we don't silently loose translation messages
based on configure args.

This fixes the mingw build which needs to create libvirt.pot but has
libvirtd disabled.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

5 days agoformatdomain.html.in: Wrap long lines
Michal Privoznik [Fri, 20 Apr 2018 08:55:12 +0000]
formatdomain.html.in: Wrap long lines

While working on discard feature I've noticed some long lines
that should be wrapped.

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

5 days agovmx: write cpuid.coresPerSocket back from CPU topology
Pino Toscano [Thu, 19 Apr 2018 13:03:38 +0000]
vmx: write cpuid.coresPerSocket back from CPU topology

When writing the VMX file from the domain XML, write
cpuid.coresPerSocket if there is a specified CPU topology in the guest.

Use the domain XML of esx-in-the-wild-9 in vmx2xml as testcase for
xml2vmxtest.

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Acked-by: Richard W.M. Jones <rjones@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>

5 days agovmx: convert cpuid.coresPerSocket for CPU topology
Pino Toscano [Thu, 19 Apr 2018 13:03:37 +0000]
vmx: convert cpuid.coresPerSocket for CPU topology

Convert the cpuid.coresPerSocket key as both number of CPU sockets, and
cores per socket.

Add the VMX file attached to RHBZ#1568148 as testcase esx-in-the-wild-9;
adapt the resulting XML of testcase esx-in-the-wild-8 to the CPU
topology present in that VMX.

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

Signed-off-by: Pino Toscano <ptoscano@redhat.com>
Acked-by: Richard W.M. Jones <rjones@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>

5 days agotests: Fix incorrect check for virNetServerClientClose call
John Ferlan [Thu, 19 Apr 2018 18:37:00 +0000]
tests: Fix incorrect check for virNetServerClientClose call

Commit id '6df5d777' somehow during the move from one branch to
another added an erroneous '!'...

Signed-off-by: John Ferlan <jferlan@redhat.com>

5 days agouml: Use virDomainObjListFindBy{UUID|ID}Ref
John Ferlan [Mon, 23 Oct 2017 17:14:13 +0000]
uml: Use virDomainObjListFindBy{UUID|ID}Ref

For umlDomObjFromDomainLocked and umlDomainLookupByID let's
return a locked and referenced @vm object so that callers
can then use the common and more consistent virDomainObjEndAPI
in order to handle cleanup rather than needing to know that the
returned object is locked and calling virObjectUnlock. This
means for some consumers we need to relock the @dom after a
virDomainObjListRemove, but before calling virDomainObjEndAPI.

The LookupByName already returns the ref counted and locked object,
so this will make things more consistent.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

5 days agouml: Add more specific error message on failed FindBy call
John Ferlan [Fri, 9 Mar 2018 14:33:26 +0000]
uml: Add more specific error message on failed FindBy call

Rather than an empty failed to find, let's provide a bit more
knowledge about what we failed to find by using the name string
or the id value.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

5 days agouml: Create accessors to virDomainObjListFindByUUID
John Ferlan [Mon, 23 Oct 2017 17:05:18 +0000]
uml: Create accessors to virDomainObjListFindByUUID

Rather than repeat code throughout, create and use a couple of
accessors in order to lookup by UUID. This will also generate
a common error message including the failed uuidstr for lookup
rather than just returning nothing in some instances.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

5 days agouml: Fix umlInotifyEvent dom object handling
John Ferlan [Tue, 27 Mar 2018 18:26:02 +0000]
uml: Fix umlInotifyEvent dom object handling

The virDomainObjListFindByName will return a locked and reffed
object. If we call virDomainObjListRemove that will unlock the
object upon return, thus we need to relock the object before
making the call to virDomainObjEndAPI.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

5 days agouml: Fix umlProcessAutoDestroyDom dom processing
John Ferlan [Tue, 27 Mar 2018 14:18:06 +0000]
uml: Fix umlProcessAutoDestroyDom dom processing

There's no need to check if @dom exists before trying to
call virDomainObjListRemove since it must exist due to
prior checks.

Additionally, if we do remove the @dom, then set it to NULL
so that the virObjectUnlock isn't referencing something that
is deleted.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

5 days agoqemu: Fix possible memory leak in migration param processing
John Ferlan [Tue, 17 Apr 2018 15:43:30 +0000]
qemu: Fix possible memory leak in migration param processing

If virJSONValueArraySize(caps) <= 0, then we will still need to
virJSONValueFree(caps) because qemuMonitorSetMigrationCapabilities
won't consume it.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>

5 days agotests: Don't call virNetServerClientClose without valid client
John Ferlan [Mon, 2 Apr 2018 11:19:38 +0000]
tests: Don't call virNetServerClientClose without valid client

If @client hasn't been opened, then don't call virNetServerClientClose
since that'll cause certain failure.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>

5 days agotests: Return failure if log not fopen'd
John Ferlan [Mon, 2 Apr 2018 11:13:33 +0000]
tests: Return failure if log not fopen'd

If @log is not fopen'd then, going to cleanup and calling fclose
will make for an unhappy callee. So just fail immediately instead
since there's nothing to clean up.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>

5 days agoremote: Fix usage of ATTRIBUTE_FALLTHROUGH
John Ferlan [Mon, 2 Apr 2018 11:09:28 +0000]
remote: Fix usage of ATTRIBUTE_FALLTHROUGH

Move to within the #if since the #else portion ends with a goto
and that raised concern by Coverity.

Signed-off-by: John Ferlan <jferlan@redhat.com>

5 days agoconf: Add error checking to virDomainSnapshotDiskDefFormat
John Ferlan [Wed, 8 Nov 2017 12:13:20 +0000]
conf: Add error checking to virDomainSnapshotDiskDefFormat

Commit id '43f2ccdc' called virDomainDiskSourceDefFormatInternal
rather than formatting the the disk source inline. However, it
did not handle the case where the helper failed. Over time the
helper has been renamed to virDomainDiskSourceFormat. Similar to
other consumers, if virDomainDiskSourceFormat fails, then the
formatting could be off, so it's better to fail than to continue
on with some possibly bad data. Alter the function and the caller
to check status and jump to error in that case.

Found by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>

5 days agoqemu_capabilities: Separate out device props fetching
Michal Privoznik [Thu, 12 Apr 2018 12:39:43 +0000]
qemu_capabilities: Separate out device props fetching

The code is generic enough to be reused. Move it into a
separate function.

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

5 days agoqemu_capabilities: s/ObjectProps/DeviceProps/g
Michal Privoznik [Thu, 12 Apr 2018 11:31:03 +0000]
qemu_capabilities: s/ObjectProps/DeviceProps/g

So far all the properties we are trying to fetch are device
properties, i.e. -device $dev on qemu command line. Change
misleading variable names to express what's queried for better.

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

5 days agoqemu: Figure out nodeset bitmap size correctly
Andrea Bolognani [Tue, 10 Apr 2018 14:12:05 +0000]
qemu: Figure out nodeset bitmap size correctly

The current private XML parsing code relies on the assumption
that NUMA node IDs start from 0 and are densely allocated,
neither of which is necessarily the case.

Change it so that the bitmap size is dynamically calculated by
looking at NUMA node IDs instead, which ensures all nodes will
be able to fit and thus the bitmap will be parsed successfully.

Update one of the test cases so that it would fail with the
previous approach, but passes with the new one.

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

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

5 days agotests: Create full host NUMA topology in more cases
Andrea Bolognani [Tue, 10 Apr 2018 15:42:14 +0000]
tests: Create full host NUMA topology in more cases

vircapstest has code to add a full host NUMA topology, that
is, one that includes all information about nodes and CPUs
including IDs; testQemuCapsInit(), which is used to create a
mock virCapsPtr for QEMU tests, however, just fakes it by
setting nnumaCell_max to some number.

While the latter approach has served us well so far, we're
going to need all the information to be filled in soon. In
order to do that, we can just move the existing code from
vircapstest to testutils and, with some renaming and
trivial tweaking, use it as-is.

Interestingly, the NUMA topology generated by the function
is rigged up so that the NUMA nodes aren't (necessarily)
numbered starting from 0, which is a nice way to spot
mistaken assumptions in our codebase.

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

5 days agoqemuDomainObjPrivateDataClear: Don't leak @migParams
Michal Privoznik [Wed, 18 Apr 2018 08:49:00 +0000]
qemuDomainObjPrivateDataClear: Don't leak @migParams

Allocated in qemuMigrationParamsNew() we need to free
priv->job.migParams when no longer needed.

==8061== 234 (192 direct, 42 indirect) bytes in 1 blocks are definitely lost in loss record 112 of 123
==8061==    at 0x4C2CF26: calloc (vg_replace_malloc.c:711)
==8061==    by 0x5325D05: virAlloc (viralloc.c:144)
==8061==    by 0x1984F9: qemuMigrationParamsNew (qemu_migration_params.c:218)
==8061==    by 0x19A352: qemuMigrationParamsParse (qemu_migration_params.c:1185)
==8061==    by 0x1604D8: qemuDomainObjPrivateXMLParseJob (qemu_domain.c:2390)
==8061==    by 0x160AE9: qemuDomainObjPrivateXMLParse (qemu_domain.c:2517)
==8061==    by 0x5419EAE: virDomainObjParseXML (domain_conf.c:20442)
==8061==    by 0x541A25E: virDomainObjParseNode (domain_conf.c:20555)
==8061==    by 0x541A2FC: virDomainObjParseFile (domain_conf.c:20574)
==8061==    by 0x13607D: testCompareStatusXMLToXMLFiles (qemuxml2xmltest.c:75)
==8061==    by 0x14F3E8: virTestRun (testutils.c:180)
==8061==    by 0x14DCD0: mymain (qemuxml2xmltest.c:1200)

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

6 days agopo: attempt to fix srcdir != builddir builds
Daniel P. Berrangé [Thu, 19 Apr 2018 13:52:51 +0000]
po: attempt to fix srcdir != builddir builds

The .pot, .po and .gmo files are slightly unusual in that we generate
them in the srcdir when building form git. This is because they'll be
bundled in the tar archive, so a build-from-tar will see them in srcdir.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language zu
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:37 +0000]
po: minimize language zu

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language zh_TW
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:37 +0000]
po: minimize language zh_TW

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language zh_HK
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:37 +0000]
po: minimize language zh_HK

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language zh_CN
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:37 +0000]
po: minimize language zh_CN

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language yo
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language yo

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language wba
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language wba

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language vi
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language vi

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language ur
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language ur

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language uk
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language uk

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language tw
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language tw

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language tr
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language tr

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language th
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language th

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language tg
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language tg

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language te
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language te

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language ta
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:36 +0000]
po: minimize language ta

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language sv
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language sv

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language sr
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language sr

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language sr@latin
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language sr@latin

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language sq
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language sq

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language sl
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language sl

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language sk
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language sk

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language si
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language si

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language ru
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language ru

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language ro
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language ro

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language pt
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language pt

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language pt_BR
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language pt_BR

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language pl
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language pl

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language pa
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language pa

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language or
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:35 +0000]
po: minimize language or

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language nso
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language nso

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language nn
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language nn

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language nl
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language nl

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language ne
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language ne

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language nds
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language nds

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language nb
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language nb

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language my
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language my

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language ms
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language ms

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language mr
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language mr

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language mn
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language mn

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language ml
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language ml

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language mk
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language mk

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language mai
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:34 +0000]
po: minimize language mai

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language lv
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:33 +0000]
po: minimize language lv

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language lt
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:33 +0000]
po: minimize language lt

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language ky
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:33 +0000]
po: minimize language ky

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language kw@uccor
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:33 +0000]
po: minimize language kw@uccor

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

6 days agopo: minimize language kw
Daniel P. Berrangé [Fri, 6 Apr 2018 15:02:33 +0000]
po: minimize language kw

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>