- 18 5月, 2016 1 次提交
-
-
由 Jiri Denemark 提交于
The INPLACE variants of the VIR_APPEND macros cannot fail and they are inherently quiet.
-
- 16 5月, 2016 3 次提交
-
-
由 John Ferlan 提交于
Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
-
由 Peter Krempa 提交于
Add a new helper that sanitizes error semantics of base64_encode_alloc.
-
由 Peter Krempa 提交于
For a few cases where we handle secret information it's good to clear the buffers containing sensitive data before freeing them. Introduce VIR_DISPOSE, VIR_DISPOSE_N and VIR_DISPOSE_STRING that allow simple clearing fo the buffers holding sensitive information on cleanup paths.
-
- 13 5月, 2016 1 次提交
-
-
由 Michal Privoznik 提交于
Move some parts of virStorageFileRemoveLastPathComponent into a separate function so they can be reused. Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
-
- 12 5月, 2016 1 次提交
-
-
由 Erik Skultety 提交于
Both virGetLastError and virGetLastErrorMessage call virLastErrorObject method that returns a thread-local error object. However, if a direct call to malloc or pthread_setspecific (probably also due to malloc, since it sets ENOMEM) fail, virLastErrorObject returns NULL which, although incorrectly interpreted by virGetLastError as no error, still requires the caller to check for NULL pointer. This isn't the case with virGetLastErrorMessage that also treated it incorrectly as no error, but returned the literal "no error". This patch tweaks the checks in the virGetLastErrorMessage function, so that if virLastErrorObject failed, it returned "unknown error" which is equivalent to the current approach with virGetLastError and if it returned NULL, "unknown error" was set. Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
- 11 5月, 2016 3 次提交
-
-
由 John Ferlan 提交于
https://bugzilla.redhat.com/show_bug.cgi?id=1318993 Commit id 'dd519a29' caused a regression cloning a volume into a logical pool by removing just the 'allocation' adjustment during storageVolCreateXMLFrom. Combined with the change to not require the new volume input XML to have a capacity listed (commit id 'e3f1d2a8') left the possibility that a zero allocation value (e.g., not provided) would create a thin/sparse logical volume. When a thin lv becomes fully populated, then LVM sets the partition 'inactive' and the subsequent fdatasync() fails. Add a new 'has_allocation' flag to be set at XML parse time to indicate that allocation was provided. This is done so that if it's not provided the create-from code uses the capacity value since we document that if omitted, the volume will be fully allocated at time of creation. For a logical backend, that creation time is 'createVol', while for a file backend, creation doesn't set the size, but the 'createRaw' called during buildVolFrom will decide whether the file is sparse or not based on the provided capacity and allocation value. For volume clones that provide different allocation and capacity values to allow for sparse files, there is no change.
-
由 Erik Skultety 提交于
Usage of this keyword in front of function declaration that is exported via a header file is unnecessary, since internally, this has been the default for most compilers for quite some time. Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
由 Laine Stump 提交于
SRIOV VFs used in macvtap passthrough mode can take advantage of the SRIOV card's transparent vlan tagging. All the code was there to set the vlan tag, and it has been used for SRIOV VFs used for hostdev interfaces for several years, but for some reason, the vlan tag for macvtap passthrough devices was stubbed out with a -1. This patch moves a bit of common validation down to a lower level (virNetDevReplaceNetConfig()) so it is shared by hostdev and macvtap modes, and updates the macvtap caller to actually send the vlan config instead of -1.
-
- 09 5月, 2016 2 次提交
-
-
由 Peter Krempa 提交于
Commit 0b36b0e9 broke polkit agent startup when attempting to fix a coverity warning. Refactor it properly so that we don't need the 'cmd' intermediate variable.
-
由 Peter Krempa 提交于
For disks sources described by a libvirt volume we don't need to do a complicated check since virStorageTranslateDiskSourcePool already correctly determines the actual disk type. Replace the checks using a new accessor that does not open-code the whole logic.
-
- 06 5月, 2016 1 次提交
-
-
由 Michal Privoznik 提交于
Fron c3bd0019 on instead of creating the following path for cgroups: /sys/fs/cgroupX/$name.libvirt-$driver we generate rather more verbose one: /sys/fs/cgroupX/$driver-$id-$name.libvirt-$driver where $name is optional and included iff contains allowed chars. See original commit for more reasoning. Now, problem with the original commit is that we are unable to start any LXC domain after it. Because when starting LXC container, the CGroup layout is created by our lxc_controller process and then detected and validated by libvirtd. The validation is done by trying to match detected layout against all the possible patterns for cgroup paths that we've ever had. And the commit in question forgot to update this part of the code. Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
-
- 05 5月, 2016 1 次提交
-
-
由 Jiri Denemark 提交于
json_reformat uses two spaces for when indenting nested objects, let's do the same. The result of virJSONValueToString will be exactly the same as json_reformat would produce. Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
-
- 03 5月, 2016 3 次提交
-
-
由 Erik Skultety 提交于
Our socket address format is in a rather non-standard format and that is because sasl library requires the IP address and service to be delimited by a semicolon. The string form is a completely internal matter, however once the admin interfaces to retrieve client identity information are merged, we should return the socket address string in a common format, e.g. format defined by URI rfc-3986, i.e. the IP address and service are delimited by a colon and in case of an IPv6 address, square brackets are added: Examples: 127.0.0.1:1234 [::1]:1234 This patch changes our default format to the one described above, while adding separate methods to request the non-standard SASL format using semicolon as a delimiter. Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
由 Erik Skultety 提交于
Just like with server-related APIs, before any of client-based APIs can be called, a reference to a client-side client object needs to be obtained. For this purpose, a lookup method should exist. Apart from the client retrieval logic, a new error code for non-existent client had to be added as well. Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
由 Nikolay Shirokovskiy 提交于
Signed-off-by: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
-
- 02 5月, 2016 3 次提交
-
-
由 Martin Kletzander 提交于
We had both and the only difference was that the latter also included information about multifunction setting. The problem with that was that we couldn't use functions made for only one of the structs (e.g. parsing). To consolidate those two structs, use the one in virpci.h, include that in domain_conf.h and add the multifunction member in it. Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
-
由 Peter Krempa 提交于
-
由 Peter Krempa 提交于
The label is used only for the error path, thus rename cleanup.
-
- 22 4月, 2016 1 次提交
-
-
由 Cole Robinson 提交于
$ echo -n 'log_level=1' > ~/.config/libvirt/libvirtd.conf $ libvirtd --timeout=10 2014-10-10 10:30:56.394+0000: 6626: info : libvirt version: 1.1.3.6, package: 1.fc20 (Fedora Project, 2014-09-08-17:50:42, buildvm-05.phx2.fedoraproject.org) 2014-10-10 10:30:56.394+0000: 6626: error : main:1261 : Can't load config file: configuration file syntax error: /home/rjones/.config/libvirt/libvirtd.conf:1: expecting a value: /home/rjones/.config/libvirt/libvirtd.conf Rather than try to fix this in the depths of the parser, just catch the case when a config file doesn't end in a newline, and manually append a newline to the content before parsing https://bugzilla.redhat.com/show_bug.cgi?id=1151409
-
- 20 4月, 2016 2 次提交
-
-
由 Cole Robinson 提交于
This an ubuntu/debian packaging convention. At one point it may have been an actually different binary, but at least as of ubuntu precise (the oldest supported ubuntu distro, released april 2012) kvm-img is just a symlink to qemu-img for back compat. I think it's safe to drop support for it
-
由 Andrea Bolognani 提交于
QEMU introduced the query-gic-capabilities QMP command with commit 4468d4e0f383: use the command, if available, to probe available GIC capabilities. The information obtained is stored in a virQEMUCaps instance, and will be later used to fill in a virDomainCaps instance.
-
- 19 4月, 2016 1 次提交
-
-
由 Martin Kletzander 提交于
So in glibc-2.23 sys/sysmacros.h is no longer included from sys/types.h and we don't build because of the usage of major/minor/makedev macros. Autoconf already has AC_HEADER_MAJOR macro that check where exactly these functions/macros are defined, so let's use that. Signed-off-by: NMartin Kletzander <mkletzan@redhat.com>
-
- 18 4月, 2016 6 次提交
-
-
由 Erik Skultety 提交于
Since threadpool increments the current number of threads according to current load, i.e. how many jobs are waiting in the queue. The count however, is constrained by max and min limits of workers. The logic of this new API works like this: 1) setting the minimum a) When the limit is increased, depending on the current number of threads, new threads are possibly spawned if the current number of threads is less than the new minimum limit b) Decreasing the minimum limit has no possible effect on the current number of threads 2) setting the maximum a) Icreasing the maximum limit has no immediate effect on the current number of threads, it only allows the threadpool to spawn more threads when new jobs, that would otherwise end up queued, arrive. b) Decreasing the maximum limit may affect the current number of threads, if the current number of threads is less than the new maximum limit. Since there may be some ongoing time-consuming jobs that would effectively block this API from killing any threads. Therefore, this API is asynchronous with best-effort execution, i.e. the necessary number of workers will be terminated once they finish their previous job, unless other workers had already terminated, decreasing the limit to the requested value. 3) setting priority workers - both increase and decrease in count of these workers have an immediate impact on the current number of workers, new ones will be spawned or some of them get terminated respectively. Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
由 Erik Skultety 提交于
In order for the client to see all thread counts and limits, current total and free worker count getters need to be introduced. Client might also be interested in the job queue length, so provide a getter for that too. As with the other getters, preparing for the admin interface, mutual exclusion is used within all getters. Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
由 Erik Skultety 提交于
So far, the values the affected getters retrieve are static, i.e. there's no way of changing them during runtime. But admin interface will later enable not only getting but changing them as well. So to prevent phenomenons like torn reads or concurrent reads and writes of unaligned values, use mutual exclusion when getting these values (writes do, understandably, use them already). Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
由 Erik Skultety 提交于
Otherwise 'Unknown' error will be returned to client. Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
由 Erik Skultety 提交于
When either creating a threadpool, or creating a new thread to accomplish a job that had been placed into the jobqueue, every time thread-specific data need to be allocated, threadpool needs to be (re)-allocated and thread count indicators updated. Make the code clearer to read by compressing these operations into a more complex one. Signed-off-by: NErik Skultety <eskultet@redhat.com>
-
由 Jason J. Herne 提交于
virTypedParamsValidate currently uses an index based check to find duplicate parameters. This check does not work. Consider the following simple example: We have only 2 keys A (multiples allowed) B (multiples NOT allowed) We are given the following list of parameters to check: A A B If you work through the validation loop you will see that our last iteration through the loop has i=2 and j=1. In this case, i > j and keys[j].value.i will indicate that multiples are not allowed. Both conditionals are satisfied so an incorrect error will be given: "parameter '%s' occurs multiple times" This patch replaces the index based check with code that remembers the name of the last parameter seen and only triggers the error case if the current parameter name equals the last one. This works because the list is sorted and duplicate parameters will be grouped together. In reality, we hit this bug while using selective block migration to migrate a guest with 5 disks. 5 was apparently just the right number to push i > j and hit this bug. virsh migrate --live guestname --copy-storage-all --migrate-disks vdb,vdc,vdd,vde,vdf qemu+ssh://dsthost/systemSigned-off-by: NJason J. Herne <jjherne@linux.vnet.ibm.com> Reviewed-by: NEric Farman <farman@linux.vnet.ibm.com>
-
- 15 4月, 2016 3 次提交
-
-
由 Richard W.M. Jones 提交于
In a few places in libvirt we busy-wait for events, for example qemu creating a monitor socket. This is problematic because: - We need to choose a sufficiently small polling period so that libvirt doesn't add unnecessary delays. - We need to choose a sufficiently large polling period so that the effect of busy-waiting doesn't affect the system. The solution to this conflict is to use an exponential backoff. This patch adds two functions to hide the details, and modifies a few places where we currently busy-wait. Signed-off-by: NRichard W.M. Jones <rjones@redhat.com>
-
由 Olga Krishtal 提交于
Refreshes meta-information such as allocation, capacity, format, etc. Ploop volumes differ from other volume types. Path to volume is the path to directory with image file root.hds and DiskDescriptor.xml. https://openvz.org/Ploop/format Due to this fact, operations of opening the volume have to be done once again. get the information. To decide whether the given volume is ploops one, it is necessary to check the presence of root.hds and DiskDescriptor.xml files in volumes' directory. Only in this case the volume can be manipulated as the ploops one. Such strategy helps us to resolve problems that might occure, when we upload some other volume type from ploop source. Signed-off-by: NOlga Krishtal <okrishtal@virtuozzo.com> Signed-off-by: NJán Tomko <jtomko@redhat.com>
-
由 Cole Robinson 提交于
Take setlocale/gettext error handling pattern from tools/virsh-* and use it for all standalone binaries via a new shared virGettextInitialize routine. The virsh* pattern differed slightly from other callers. All users now consistently: * Ignore setlocale errors. virsh has done this forever, presumably for good reason. This has been partially responsible for some bug reports: https://bugzilla.redhat.com/show_bug.cgi?id=1312688 https://bugzilla.redhat.com/show_bug.cgi?id=1026514 https://bugzilla.redhat.com/show_bug.cgi?id=1016158 * Report the failed function name * Report strerror
-
- 13 4月, 2016 2 次提交
-
-
由 Ján Tomko 提交于
This is just a wrapper for virCommand that takes two strings and runs them. Move it to virnetdev.c for easier mocking.
-
由 Peter Krempa 提交于
-
- 12 4月, 2016 1 次提交
-
-
由 Andrea Bolognani 提交于
-
- 11 4月, 2016 1 次提交
-
-
由 Pavel Hrdina 提交于
Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
-
- 08 4月, 2016 4 次提交
-
-
由 Peter Krempa 提交于
VIR_SOCKET_ADDR_VALID dereferences the pointer, thus if we pass NULL into virNetDevSetIPAddress it crashes. Regression introduced by b3d06987. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1325120
-
由 Andrea Bolognani 提交于
virSocketAddrFormat() wants a single pointer, not a double pointer. Fixes the following compilation error on FreeBSD: util/virnetdev.c:1448:72: error: incompatible pointer types passing 'virSocketAddr **' to parameter of type 'const virSocketAddr *'; remove & [-Werror,-Wincompatible-pointer-types] if (VIR_SOCKET_ADDR_VALID(peer) && !(peerstr = virSocketAddrFormat(&peer))) ^~~~~ ./util/virsocketaddr.h:92:48: note: passing argument to parameter 'addr' here char *virSocketAddrFormat(const virSocketAddr *addr); ^
-
由 Roman Bogorodskiy 提交于
FreeBSD lacks ENODATA, and viruuid.c redefines it to EIO, but it's not actually using it. On the other hand, we have virrandom.c that's using ENODATA. So make this re-definition common by moving it to internal.h, so all the current and possible future users don't need to care about that.
-
由 Vasiliy Tolstov 提交于
Signed-off-by: NVasiliy Tolstov <v.tolstov@selfip.ru>
-