- 06 12月, 2012 1 次提交
-
-
由 Daniel P. Berrange 提交于
https://bugzilla.redhat.com/show_bug.cgi?id=866524 Since the virConnect object is not locked wholely when doing virConenctDispose, a thread can get the lock and thus might cause the race. Detected by valgrind: ==23687== Invalid read of size 4 ==23687== at 0x38BAA091EC: pthread_mutex_lock (pthread_mutex_lock.c:61) ==23687== by 0x3FBA919E36: remoteClientCloseFunc (remote_driver.c:337) ==23687== by 0x3FBA936BF2: virNetClientCloseLocked (virnetclient.c:688) ==23687== by 0x3FBA9390D8: virNetClientIncomingEvent (virnetclient.c:1859) ==23687== by 0x3FBA851AAE: virEventPollRunOnce (event_poll.c:485) ==23687== by 0x3FBA850846: virEventRunDefaultImpl (event.c:247) ==23687== by 0x40CD61: vshEventLoop (virsh.c:2128) ==23687== by 0x3FBA8626F8: virThreadHelper (threads-pthread.c:161) ==23687== by 0x38BAA077F0: start_thread (pthread_create.c:301) ==23687== by 0x33F68E570C: clone (clone.S:115) ==23687== Address 0x4ca94e0 is 144 bytes inside a block of size 312 free'd ==23687== at 0x4A0595D: free (vg_replace_malloc.c:366) ==23687== by 0x3FBA8588B8: virFree (memory.c:309) ==23687== by 0x3FBA86AAFC: virObjectUnref (virobject.c:145) ==23687== by 0x3FBA8EA767: virConnectClose (libvirt.c:1458) ==23687== by 0x40C8B8: vshDeinit (virsh.c:2584) ==23687== by 0x41071E: main (virsh.c:3022) The above race is caused by the eventLoop thread tries to handle the net client event by calling the callback set by: virNetClientSetCloseCallback(priv->client, remoteClientCloseFunc, conn, NULL); I.E. remoteClientCloseFunc, which lock/unlock the virConnect object. This patch is to fix the bug by setting the callback to NULL when doRemoteClose.
-
- 05 12月, 2012 15 次提交
-
-
由 Peter Krempa 提交于
The pciWrite32 function assembled the array of data to be written to the fd with a bad offset on the last byte. This issue was probably caused by a typo (14, 24).
-
由 Jiri Denemark 提交于
Directly open and close PCI config file in the APIs that need it rather than keeping the file open for the whole life of PCI device structure.
-
由 Jiri Denemark 提交于
Unmanaged PCI devices were only leaked if pciDeviceListAdd failed but managed devices were always leaked. And leaking PCI device is likely to leave PCI config file descriptor open. This patch fixes qemuReattachPciDevice to either free the PCI device or add it to the inactivePciHostdevs list.
-
由 Jiri Denemark 提交于
In order to be able to steal PCI device by its index in the list.
-
由 Jiri Denemark 提交于
The device is still referenced from pcidevs and freeing it would leave an invalid pointer there.
-
由 Jiri Denemark 提交于
An attempt to attach device that is already attached to a domain results in the following error: virsh # attach-device rhel6 pci2 --persistent error: Failed to attach device from pci2 error: invalid argument: device is already in the domain configuration The "invalid argument" error code looks wrong, we usually use "operation invalid" when the action cannot be done in current state.
-
由 Eric Blake 提交于
https://bugzilla.redhat.com/show_bug.cgi?id=830201 In older Fedora, the spec file for libivrt depended on avahi, which included avahi-daemon, which in turn depended on dbus. But now that avahi libs and avahi-daemon are (correctly) in separate pacakges, and since we REALLY don't want a mandatory dependency on avahi-daemon, and considering that our init scripts require the messagebus service from dbus, we need to explicitly require dbus ourselves. * libvirt.spec.in (Requires): Add dbus for libvirt-daemon.
-
由 Eric Blake 提交于
https://bugzilla.redhat.com/show_bug.cgi?id=830201 The initscript and upstart services depend on dbus starting before libvirtd. When we first wrote the systemd script, we tried to do the same, but we depended on dbus.target (which does not exist) in comparison to network.target (which does exist), so we removed that in commit 4c7973e1. But we still need dbus up and running first, especially now that we want to support shutdown inhibition via dbus (whereas we originally needed dbus only for firewall control). http://www.freedesktop.org/software/systemd/man/systemd.target.html explains how a target (such as network.target) is just a collection of common services bundled together, and why we want network.target but dbus.service. * daemon/libvirtd.service.in (Unit): Depend on dbus starting first.
-
由 Osier Yang 提交于
"disk" is initialized to "dev->data.disk" in the beginning of the function.
-
由 Osier Yang 提交于
Pushed under trivial rule.
-
由 Eric Blake 提交于
Only one error in qemu_monitor was already using the relatively new OPERATION_UNSUPPORTED error, even though it is a better fit for all of the messages related to options that are unsupported due to the version of qemu in use rather than due to a user's XML or .conf file choice. Suggested by Osier Yang. * src/qemu/qemu_monitor.c (qemuMonitorSendFileHandle) (qemuMonitorAddHostNetwork, qemuMonitorRemoveHostNetwork) (qemuMonitorAttachDrive, qemuMonitorDiskSnapshot) (qemuMonitorDriveMirror, qemuMonitorTransaction) (qemuMonitorBlockCommit, qemuMonitorDrivePivot) (qemuMonitorBlockJob, qemuMonitorSystemWakeup) (qemuMonitorGetVersion, qemuMonitorGetMachines) (qemuMonitorGetCPUDefinitions, qemuMonitorGetCommands) (qemuMonitorGetEvents, qemuMonitorGetKVMState) (qemuMonitorGetObjectTypes, qemuMonitorGetObjectProps) (qemuMonitorGetTargetArch): Use better error category.
-
由 Eric Blake 提交于
Without this patch, attempts to create a disk snapshot when qemu is too old results in a cryptic message: virsh # snapshot-create 23 --disk-only error: operation failed: Failed to take snapshot: unknown command: 'snapshot_blkdev' Now it reports: virsh # snapshot-create 23 --disk-only error: unsupported configuration: live disk snapshot not supported with this QEMU binary All versions of qemu that support live disk snapshot also support QMP (basically upstream qemu 1.1 and later, and backports to RHEL 6.2). * src/qemu/qemu_capabilities.h (QEMU_CAPS_DISK_SNAPSHOT): New capability. * src/qemu/qemu_capabilities.c (qemuCaps): Track it. (qemuCapsProbeQMPCommands): Set it. * src/qemu/qemu_driver.c (qemuDomainSnapshotCreateDiskActive): Use it. * src/qemu/qemu_monitor.c (qemuMonitorDiskSnapshot): Simplify. * src/qemu/qemu_monitor_json.c (qemuMonitorJSONDiskSnapshot): Likewise. * src/qemu/qemu_monitor_text.h (qemuMonitorTextDiskSnapshot): Delete. * src/qemu/qemu_monitor_text.c (qemuMonitorTextDiskSnapshot): Likewise.
-
由 Eric Blake 提交于
RHEL 6.3 uses dbus-devel-1.2.24, which lacked support for the DBUS_TYPE_UNIX_FD define (contrast with Fedora 18 using 1.6.8). But since it is an older dbus, it also lacks support for shutdown inhibitions as provided by newer systemd. Compilation failure introduced in commit 31330926. * src/rpc/virnetserver.c (virNetServerAddShutdownInhibition): Compile out if dbus is too old.
-
由 Jim Fehlig 提交于
501bfad1 missed freeing priv->saveDir when opening the Xen unified driver failed.
-
由 Bamvor Jian Zhang 提交于
Implement the domainManagedSave, domainHasManagedSaveImage, and domainManagedSaveRemove functions in the libvirt legacy xen driver. domainHasManagedSaveImage check the managedsave image from filesystem everytime. This is different from qemu and libxl driver. In qemu or libxl driver, there is a hasManagesSave flag in virDomainObjPtr which is not used in xen legacy driver. This flag could not add into xen driver ptr either, because the driver ptr will be released at the end of every libvirt api call. Meanwhile, AFAIK, xen store all the flags in xen not in libvirt xen driver. There is no need to add this flag in xen. Signed-off-by: NBamvor Jian Zhang <bjzhang@suse.com>
-
- 04 12月, 2012 13 次提交
-
-
由 Osier Yang 提交于
Introduced by commit 1465876a, pushed under build-breaker && trivial rule.
-
由 Osier Yang 提交于
Commit 79b8a569 removes virStateActive, however it forgot to remove the symbol together. Pushed under build-breaker rule.
-
由 Daniel P. Berrange 提交于
Add code in the python binding to cope with the new APIs virConnectRegisterCloseCallback and virConnectUnregisterCloseCallback. Also demonstrate their use in the python domain events demo Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Alexander Larsson 提交于
When the session dies or when the system is going to be shut down we issue a virStateStop() call to instruct drivers to prepare to be stopped. This will remove any previously acquire inhibitions. Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Daniel P. Berrange 提交于
Use the freedesktop inhibition DBus service to prevent host shutdown or session logout while any VMs are running. Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Daniel P. Berrange 提交于
Currently to deal with auto-shutdown libvirtd must periodically poll all stateful drivers. Thus sucks because it requires acquiring both the driver lock and locks on every single virtual machine. Instead pass in a "inhibit" callback to virStateInitialize which drivers can invoke whenever they want to inhibit shutdown due to existance of active VMs. Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Daniel P. Berrange 提交于
The only important state that should prevent libvirtd shutdown is from running VMs. Networks, host devices, network filters and storage pools are all long lived resources that have no significant in-memory state. They should not block shutdown.
-
由 Daniel P. Berrange 提交于
When the virStateStop() method is invoked, perform a managed save of all VMs currently running Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Eric Blake 提交于
Commit 71d12562 tried to fix a problem where rebasing an old branch on top of newer libvirt.git resulted in automake failing because of a missing AUTHORS file. However, while the fix worked for an incremental 'make', it did not work for someone that directly reran './autogen.sh'. Reported by Laine Stump. * autogen.sh (autoreconf): Check for same conditions as cfg.mk. * cfg.mk (_update_required): Add comments.
-
由 Ata E Husain Bohra 提交于
The patch adds the backend driver to support iSCSI format storage pools and volumes for ESX host. The mapping of ESX iSCSI specifics to Libvirt is as follows: 1. ESX static iSCSI target <------> Libvirt Storage Pools 2. ESX iSCSI LUNs <------> Libvirt Storage Volumes. The above understanding is based on http://libvirt.org/storage.html. The operation supported on iSCSI pools includes: 1. List storage pools & volumes. 2. Get XML descriptor operaion on pools & volumes. 3. Lookup operation on pools & volumes by name, UUID and path (if applicable). iSCSI pools does not support operations such as: Create / remove pools and volumes.
-
由 Laine Stump 提交于
Since we can't (currently) rely on the ability to provide blanket support for all possible network changes by calling the toplevel netdev hostside disconnect/connect functions (due to qemu only supporting a lockstep between initialization of host side and guest side of devices), in order to support live change of an interface's nwfilter we need to make a special purpose function to only call the nwfilter teardown and setup functions if the filter for an interface (or its parameters) changes. The pattern is nearly identical to that used to change the bridge that an interface is connected to. This patch was inspired by a request from Guido Winkelmann <guido@sagersystems.de>, who tested an earlier version.
-
由 Stefan Berger 提交于
To detect if an interface's nwfilter has changed, we need to also compare the filterparams, which is a hashtable of virNWFilterVarValue. virHashEqual can do this nicely, but requires a pointer to a function that will compare two of the items being stored in the hashes.
-
由 Laine Stump 提交于
This resolves: https://bugzilla.redhat.com/show_bug.cgi?id=881480 These three functions: virDomainNetGetActualBridgeName virDomainNetGetActualDirectDev virDomainNetGetActualDirectMode return attributes that are in a union whose contents are interpreted differently depending on the actual->type and so they should only return non-0 when actual->type is 'bridge' (in the first case) or 'direct' (in the other two cases, but I had neglected to do that, so ...DirectDev() was returning bridge.brname (which happens to share the same spot in the union with direct.linkdev) if actual->type was 'bridge', and ...BridgeName was returning direct.linkdev when actual->type was 'direct'. How does this involve Bug 881480 (which was about the inability to switch between two networks that both have "<forward mode='bridge'/> <bridge name='xxx'/>"? Whenever the return value of virDomainNetGetActualDirectDev() for the new and old network definitions doesn't match, qemuDomainChangeNet() requires a "complete reconnect" of the device, which qemu currently doesn't support. ...DirectDev() *should* have been returning NULL for old and new, but was instead returning the old and new bridge names, which differ. (The other two functions weren't causing any behavioral problems in virDomainChangeNet(), but their problem and fix was identical, so I included them in this same patch).
-
- 03 12月, 2012 5 次提交
-
-
由 Peter Krempa 提交于
Libvirt's helper API's when called directly don't raise the error so that virsh remembers it. Subsequent calls to libvirt API's might reset the error. In case of schedinfo virDomainFree() in the cleanup section resets the error when virTypedParameterAssignFromStr() fails. This patch adds function vshSaveLibvirtError() that can be called after calling libvirt helper APIs to ensure the error is remembered.
-
由 Peter Krempa 提交于
-
由 Ján Tomko 提交于
Fix the null pointer access when UUID is not specified. Introduce a bool 'uuidUsable' to virStoragePoolAuthCephx that indicates if uuid was specified or not and use it instead of the pointless comparison of the static UUID array to NULL. Add an error message if both uuid and usage are specified. Fixes: Error: FORWARD_NULL (CWE-476): libvirt-0.10.2/src/conf/storage_conf.c:461: var_deref_model: Passing null pointer "uuid" to function "virUUIDParse(char const *, unsigned char *)", which dereferences it. (The dereference is assumed on the basis of the 'nonnull' parameter attribute.) Error: NO_EFFECT (CWE-398): libvirt-0.10.2/src/conf/storage_conf.c:979: array_null: Comparing an array to null is not useful: "src->auth.cephx.secret.uuid != NULL".
-
由 Osier Yang 提交于
Fix the "if ... else" coding style, and indentions problem.
-
由 Osier Yang 提交于
-
- 01 12月, 2012 6 次提交
-
-
由 Eric Blake 提交于
virStringSplit requires a non-NULL input, but commit cef78ed8 forgot to follow the rule. * tools/virsh-domain.c (cmdReboot, cmdShutdown): Avoid NULL deref.
-
由 Eric Blake 提交于
Commit a21f5112 fixed one API, but missed two others that also failed to log their 'flags' argument. * src/libvirt.c (virNodeSuspendForDuration, virDomainGetHostname): Log flags parameter.
-
由 Daniel P. Berrange 提交于
Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Daniel P. Berrange 提交于
The virNodeSuspend API allows for a duration of 0, to mean no timed wakup. virsh needlessly forbids this though Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Daniel P. Berrange 提交于
The shutdown and reboot commands in virsh allow a comma separated list of mode values Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Daniel P. Berrange 提交于
This introduces a few new APIs for dealing with strings. One to split a char * into a char **, another to join a char ** into a char *, and finally one to free a char ** There is a simple test suite to validate the edge cases too. No more need to use the horrible strtok_r() API, or hand-written code for splitting strings. Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-