- 11 3月, 2010 2 次提交
-
-
由 Ed Swierk 提交于
* Allow devices without parent links to be created and set their parent to the root "computer" node
-
由 David Allan 提交于
* The udev driver didn't properly free resources that it allocates when setting up the 'computer' device in the error case.
-
- 10 3月, 2010 5 次提交
-
-
由 Chris Lalancette 提交于
As pointed out by eblake, I made a real hash of the nodeinfo code with commit aa2f6f96. This patch cleans it up: 1) Do more work at compile time instead of runtime (minor) 2) Properly handle the hex digits that come from /sys/devices/system/cpu/cpu*/topology/thread_siblings 3) Fix up some error paths that could cause SEGV 4) Used unsigned's for the cpu numbers (cpu -1 doesn't make any sense) Along with the recent patch from jdenemar to zero out the nodeinfo structure, I've re-tested this on the machines having the problems, and it seems to be good. Signed-off-by: NChris Lalancette <clalance@redhat.com>
-
由 Eric Blake 提交于
* global: patch created by running: for f in $(git ls-files '*.[ch]') ; do cppi $f > $f.t && mv $f.t $f done
-
由 Eric Blake 提交于
It is a bad idea to call gettext on an already-translated string. In cases where a string must be translated separately from where it is exposed to xgettext, the gettext manual recommends the idiom of N_() wrapping gettext_noop for marking the string. * src/internal.h (N_): Fix definition to match gettext manual. * tools/virsh.c: (cmdHelp, cmdList, cmdDomstate, cmdDominfo) (cmdVcpuinfo, vshUsage): Replace incorrect use of N_ with _. (vshCmddefHelp): Likewise. Mark C format strings appropriately.
-
由 Jiri Denemark 提交于
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
-
由 Jiri Denemark 提交于
The nodeinfo structure wasn't initialized in qemu driver and with the recent change in CPU topology parsing, old value of nodeinfo->sockets could be used and incremented giving totally bogus results. Let's just wipe the structure completely. Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
-
- 09 3月, 2010 2 次提交
-
-
由 Laine Stump 提交于
A few more non-literal format strings in error log messages have crept in. Fix them in the standard way - turn the format string into "%s" with the original string as the arg.
-
由 Soren Hansen 提交于
If a special cache strategy for a disk has been specified in a domain definition, but no driverName has been set, virDomainGetXMLDesc would not include the <driver> tag at all. * src/conf/domain_conf.c: make sure any <driver> tag setting is serialized if set.
-
- 08 3月, 2010 4 次提交
-
-
由 Chris Lalancette 提交于
The current code for "nodeinfo" is pretty naive about socket and thread information. To determine the sockets, it just takes the number of cpus and divides by the number of cores. For the thread count, it always sets it to 1. With more recent Intel machines, however, hyperthreading is again an option, meaning that these heuristics no longer work and give bogus numbers. This patch goes through /sys to get the additional information so we properly report it. Note that I had to edit the tests not to report on socket and thread counts, since these are determined dynamically now. v2: As pointed out by Eric Blake, gnulib provides count-one-bits (which is LGPLv2+). Use it instead of a hand-coded popcnt. Signed-off-by: NChris Lalancette <clalance@redhat.com>
-
由 Adam Litke 提交于
When adding domainMemoryStats API support for the qemu driver, I didn't follow the locking rules exactly. The job condition must be held when executing monitor commands. This corrects the segfaults I was seeing when calling domainMemoryStats in a multi-threaded environment. * src/qemu/qemu_driver.c: in qemudDomainMemoryStats() add missing calls to qemuDomainObjBeginJob/qemuDomainObjEndJob
-
由 Laine Stump 提交于
doTunnelSendAll function (used by QEMU migration) uses a 64k buffer on the stack, which could be problematic. This patch replaces that with a buffer from the heap. While in the neighborhood, this patch also improves error reporting in the case that saferead fails - previously, virStreamAbort() was called (resetting errno) before reporting the error. It's been changed to report the error first. * src/qemu/qemu_driver.c: fix doTunnelSendAll() to use a malloc'ed buffer
-
由 Eric Blake 提交于
Prior to this patch, there was an inconsistent mix between GNU and C99. For consistency, and potential portability to other compilers, stick with the C99 vararg macro syntax. * src/conf/cpu_conf.c (virCPUReportError): Use C99 rather than GNU vararg macro syntax. * src/conf/domain_conf.c (virDomainReportError): Likewise. * src/conf/domain_event.c (eventReportError): Likewise. * src/conf/interface_conf.c (virInterfaceReportError): Likewise. * src/conf/network_conf.c (virNetworkReportError): Likewise. * src/conf/node_device_conf.h (virNodeDeviceReportError): Likewise. * src/conf/secret_conf.h (virSecretReportError): Likewise. * src/conf/storage_conf.h (virStorageReportError): Likewise. * src/esx/esx_device_monitor.c (ESX_ERROR): Use C99 rather than GNU vararg macro syntax. * src/esx/esx_driver.c (ESX_ERROR): Likewise. * src/esx/esx_interface_driver.c (ESX_ERROR): Likewise. * src/esx/esx_network_driver.c (ESX_ERROR): Likewise. * src/esx/esx_secret_driver.c (ESX_ERROR): Likewise. * src/esx/esx_storage_driver.c (ESX_ERROR): Likewise. * src/esx/esx_util.c (ESX_ERROR): Likewise. * src/esx/esx_vi.c (ESX_VI_ERROR): Likewise. * src/esx/esx_vi_methods.c (ESX_VI_ERROR): Likewise. * src/esx/esx_vi_types.c (ESX_VI_ERROR): Likewise. * src/esx/esx_vmx.c (ESX_ERROR): Likewise. * src/util/hostusb.c (usbReportError): Use C99 rather than GNU vararg macro syntax. * src/util/json.c (virJSONError): Likewise. * src/util/macvtap.c (ReportError): Likewise. * src/util/pci.c (pciReportError): Likewise. * src/util/stats_linux.c (virStatsError): Likewise. * src/util/util.c (virUtilError): Likewise. * src/util/xml.c (virXMLError): Likewise. * src/xen/proxy_internal.c (virProxyError): Use C99 rather than GNU vararg macro syntax. * src/xen/sexpr.c (virSexprError): Likewise. * src/xen/xen_driver.c (xenUnifiedError): Likewise. * src/xen/xen_hypervisor.c (virXenError): Likewise. * src/xen/xen_inotify.c (virXenInotifyError): Likewise. * src/xen/xend_internal.c (virXendError): Likewise. * src/xen/xm_internal.c (xenXMError): Likewise. * src/xen/xs_internal.c (virXenStoreError): Likewise. * src/cpu/cpu.h (virCPUReportError): Use C99 rather than GNU vararg macro syntax. * src/datatypes.c (virLibConnError): Likewise. * src/interface/netcf_driver.c (interfaceReportError): Likewise. * src/libvirt.c (virLibStreamError): Likewise. * src/lxc/lxc_conf.h (lxcError): Likewise. * src/network/bridge_driver.c (networkReportError): Likewise. * src/nodeinfo.c (nodeReportError): Likewise. * src/opennebula/one_conf.h (oneError): Likewise. * src/openvz/openvz_conf.h (openvzError): Likewise. * src/phyp/phyp_driver.c (PHYP_ERROR): Likewise. * src/qemu/qemu_conf.h (qemuReportError): Likewise. * src/remote/remote_driver.c (errorf): Likewise. * src/security/security_driver.h (virSecurityReportError): Likewise. * src/test/test_driver.c (testError): Likewise. * src/uml/uml_conf.h (umlReportError): Likewise. * src/vbox/vbox_driver.c (vboxError): Likewise. * src/vbox/vbox_tmpl.c (vboxError): Likewise.
-
- 06 3月, 2010 8 次提交
-
-
由 Jim Meyering 提交于
* src/util/ebtables.c (ebtablesAddRemoveRule): Avoid dead store to local, "s".
-
由 Jim Meyering 提交于
* src/conf/interface_conf.c (virInterfaceDefParseBond): Avoid dead stores to local, "node". Remove declaration, too.
-
由 Jim Meyering 提交于
* src/xen/xm_internal.c (xenXMDomainConfigParse): Avoid dead store to local, "data". Remove declaration, too.
-
由 Jim Meyering 提交于
* src/qemu/qemu_driver.c (qemudDomainAttachSCSIDisk): Handle the (theoretical) case of an empty controller list, so that clang does not think the subsequent dereference of "cont" would dereference an undefined variable (due to preceding loop not iterating even once).
-
由 Jim Meyering 提交于
* src/qemu/qemu_driver.c (qemudDomainRestore): A corrupt save file (in particular, a too-large header.xml_len value) would cause an unwarranted out-of-memory error. Do not trust the just-read header.xml_len. Instead, merely use that as a hint, and read/allocate up to that number of bytes from the file. Also verify that header.xml_len is positive; if it were negative, passing it to virFileReadLimFD could cause trouble.
-
由 Jim Meyering 提交于
to saferead_lim, which interprets it as a size_t. * src/util/util.c (virFileReadLimFD): Do not malfunction when maxlen < -1. Return -1,EINVAL in that case. Handle maxlen==0 in the same manner.
-
由 Jim Meyering 提交于
* src/xen/proxy_internal.c (xenProxyDomainDumpXML): An invalid packet could include a too-large "ans.len" value, which would make us allocate too much memory and then copy data from beyond the end of "ans", possibly evoking a segfault. Ensure that the value we use is no larger than the remaining portion of "ans". Also, change unnecessary memmove to memcpy (src and dest obviously do not overlap, so no need to use memmove). (xenProxyDomainGetOSType): Likewise. (xenProxyGetCapabilities): Likewise.
-
由 Jim Meyering 提交于
The code erroneously searched the entire "reply" for a comma, when its intent was to search only that portion after "balloon: actual=" * src/qemu/qemu_monitor_text.c (qemuMonitorTextGetMemoryStats): Search for "," only starting *after* the BALLOON_PREFIX string. Otherwise, we'd be more prone to false positives.
-
- 05 3月, 2010 8 次提交
-
-
由 Daniel P. Berrange 提交于
Changeset commit 5073aa99 Author: Cole Robinson <crobinso@redhat.com> Date: Mon Jan 11 11:40:46 2010 -0500 Added support for product/vendor based passthrough, but it only worked at the security driver layer. The main guest XML config was not updated with the resolved bus/device ID. When the QEMU argv refactoring removed use of product/vendor, this then broke launching guests. THe solution is to move the product/vendor resolution up a layer into the QEMU driver. So the first thing QEMU does is resolve the product/vendor to a bus/device and updates the XML config with this info. The rest of the code, including security drivers and QEMU argv generated can now rely on bus/device always being set. * src/util/hostusb.c, src/util/hostusb.h: Split vendor/product resolution code out of usbGetDevice and into usbFindDevice. Add accessors for bus/device ID * src/security/virt-aa-helper.c, src/security/security_selinux.c, src/qemu/qemu_security_dac.c: Remove vendor/product from the usbGetDevice() calls * src/qemu/qemu_driver.c: Use usbFindDevice to resolve vendor/product into a bus/device ID
-
由 Daniel P. Berrange 提交于
The pci_del command is not being ported to QMP. Convert all the QEMU hotplug code over to use device_del whenever it is available to avoid the pci_del problem * src/qemu/qemu_driver.c: Convert unplug code to device_del
-
由 Daniel P. Berrange 提交于
Previously hot-unplug could not be supported for USB devices in QEMU, since usb_del required the guest visible address which libvirt never knows. With 'device_del' command we can now unplug based on device alias, so support that. * src/qemu/qemu_driver.c: Use device_del to remove USB devices
-
由 Daniel P. Berrange 提交于
Upstart crashes & burns in a heap if $TERM environment variable is missing. Presumably the kernel always sets this when booting init on a real machine, so libvirt should set it for containers too. To make a typical inittab / mingetty setup happier, we need to symlink the primary console /dev/pts/0 to /dev/tty1. Improve logging in certain scenarios to make troubleshooting easier * src/lxc/lxc_container.c: Create /dev/tty1 and set $TERM
-
由 Daniel P. Berrange 提交于
When using the 'ns' cgroup controller, the moment a process calls 'unshare(CLONE_NEWNS)', it will be given a private cgroup tree under its current location. This really messages up the LXC controller process, because it ends up creating the containers' cgroup in the wrong place. The fix is fairly easy, just move the cgroup setup before the code which calls unshare(). The 'ns' controller will still create extra undesired cgroups, but they at least won't break libvirt's setup now. The patch also adds a missing cgroups allow rule for /dev/tty device node
-
由 Daniel P. Berrange 提交于
When getting the driver/domain cgroup it is possible to specify whether it should be auto created. If auto-creation was turned off, libvirt still mistakenly created its own top level cgroup * src/util/cgroup.c: Honour autocreate flag for top level cgroup
-
由 Laine Stump 提交于
This allows the config to have a setting that means "leave it alone", eg when building a pool where the directory already exists the user may want the current uid/gid of the directory left intact. This actually gets us back to older behavior - before recent changes to the pool building code, we weren't as insistent about honoring the uid/gid settings in the XML, and virt-manager was taking advantage of this behavior. As a side benefit, removing calls to getuid/getgid from the XML parsing functions also seems like a good idea. And having a default that is different from a common/useful value (0 == root) is a good thing in general, as it removes ambiguity from decisions (at least one place in the code was checking for (perms.uid == 0) to see if a special uid was requested). Note that this will only affect newly created pools and volumes. Due to the way that the XML is parsed, then formatted for newly created volumes, all existing pools/volumes already have an explicit uid and gid set. src/conf/storage_conf.c: Remove calls to setuid/setgid for default values of uid/gid, and set them to -1 instead src/storage/storage_backend.c: src/storage/storage_backend_fs.c: Make account for the new default values of perms.uid and perms.gid.
-
由 Diego Elio Pettenò 提交于
With the recent changes to the linking defaults in Fedora 13 (namely enabling --no-add-needed behaviour by default), we have to pass the dlopen()-providing libraries directly at the link of the module; use the same AC_SEARCH_LIBS function as used before to look for it and add it to the Makefile.
-
- 04 3月, 2010 8 次提交
-
-
由 Daniel P. Berrange 提交于
QEMU has a monitor command 'set_cpu' which allows a specific CPU to be toggled between online& offline state. libvirt CPU hotplug does not work in terms of individual indexes CPUs. Thus to support this, we iteratively toggle the online state when the total number of vCPUs is adjusted via libvirt NB, currently untested since QEMU segvs when running this! * src/qemu/qemu_driver.c: Toggle online state for CPUs when doing hotplug * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h, src/qemu/qemu_monitor_json.c, src/qemu/qemu_monitor_json.h, src/qemu/qemu_monitor_text.c, src/qemu/qemu_monitor_text.h: Add monitor API for toggling a CPU's online status via 'set_cpu
-
由 Daniel P. Berrange 提交于
The storage backend implementations all presume that the XML parser is validating correctness of the source specification. The check for a source device was lost at some point. This allowed for a potential crash in the disk backend. Re-introduce the sanity check * src/conf/storage_conf.c: Re-add check for source device
-
由 Daniel P. Berrange 提交于
When trying to delete a pool the error message claimed the volume could not be deleted. * src/storage/storage_driver.c: Error message referred to volumes instead of pools
-
由 Daniel P. Berrange 提交于
The QMP code was running query-migration instead of query-migrate. This doesn't work so well * src/qemu/qemu_monitor_json.c: s/query-migration/query-migrate/
-
由 Daniel P. Berrange 提交于
The code to remove the cgroup after QEMU failed to startup could be obscuring a real error from earlier on. It is not neccessary to raise an error in this case, so tell cgroups to keep quiet * src/qemu/qemu_driver.c: Don't raise cgroups error in QEMU start cleanup code.
-
由 Daniel P. Berrange 提交于
The QEMU hotunplug code for PCI devices was looking at host devices in the guest config without first filtering non PCI devices. This means it was reading garbage * src/qemu/qemu_driver.c: Filter out non-PCI devices
-
由 Chris Lalancette 提交于
Commit 3c12a67b added a dependency on the NFS_SUPER_MAGIC macro, which is defined in linux/magic.h. Unfortunately linux/magic.h is not available in RHEL-5, and causes a compile error. Just define it locally, since this is something that can't change. Signed-off-by: NChris Lalancette <clalance@redhat.com>
-
由 Laine Stump 提交于
Move *all* file operations related to creation and writing of libvirt header to the domain save file into a hook function that is called by virFileOperation. First try to call virFileOperation as root. If that fails with EACCESS, and (in the case of Linux) statfs says that we're trying to save the file on an NFS share, rerun virFileOperation, telling it to fork a child process and setuid to the qemu user. This is the only way we can successfully create a file on a root-squashed NFS server. This patch (along with setting dynamic_ownership=0 in qemu.conf) makes qemudDomainSave work on root-squashed NFS. * src/qemu/qemu_driver.c: provide new qemudDomainSaveFileOpHook() utility, use it in qemudDomainSave() if normal creation of the file as root failed, and after checking the filesystem type for the storage is NFS. In that case we also bypass the security driver, as this would fail on NFS.
-
- 03 3月, 2010 3 次提交
-
-
由 Laine Stump 提交于
If qemudDomainRestore fails to open the domain save file, create a pipe, then fork a process that does setuid(qemu_user) and opens the file, then reads this file and stuffs it into the pipe. the parent libvirtd process will use the other end of the pipe as its fd, then reap the child process after it's done reading. This makes domain restore work on a root-squash NFS share that is only visible to the qemu user. * src/qemu/qemu_driver.c: add new qemudOpenAsUID() helper function, and use it in qemudDomainRestore() if reading as root directly failed.
-
由 Daniel P. Berrange 提交于
The USB/PCI device hotplug code for the QEMU driver was forgetting to allocate a unique device alias. * src/qemu/qemu_driver.c: Fill in device alias for USB/PCI devices
-
由 Daniel P. Berrange 提交于
The code assumed that 'device_add' returned an empty string upon success. This is not true, it sometimes prints random debug info. THus we need to check for an explicit fail string * src/qemu/qemu_monitor_text.c: Fix error checking of the device_add monitor command
-