- 26 3月, 2010 4 次提交
-
-
由 Daniel P. Berrange 提交于
The internal domain events APIs are designed to handle the lifecycle events. This needs to be refactored to allow arbitrary new event types to be handled. * The signature of virDomainEventDispatchFunc changes to use virConnectDomainEventGenericCallback instead of the lifecycle event specific virConnectDomainEventCallback * Every registered callback gains a unique ID to allow its removal based on ID, instead of function pointer * Every registered callback gains an 'eventID' to allow callbacks for different types of events to be distinguished * virDomainEventDispatch is adapted to filter out callbacks whose eventID does not match the eventID of the event being dispatched * virDomainEventDispatch is adapted to filter based on the domain name and uuid, if this filter is set for a callback. * virDomainEvent type/detail fields are moved into a union to allow different data fields for other types of events to be added later * src/conf/domain_event.h, src/conf/domain_event.c: Refactor to allow handling of different types of events * src/lxc/lxc_driver.c, src/qemu/qemu_driver.c, src/remote/remote_driver.c, src/test/test_driver.c, src/xen/xen_driver.c: Change dispatch function signature to use virConnectDomainEventGenericCallback
-
由 Daniel P. Berrange 提交于
The virtual box driver was directly accesing the domain events structs instead of using the APIs provided. To prevent this kind of abuse, make the struct definitions private, forcing use of the internal APIs. This requires adding one extra internal API. * src/conf/domain_event.h, src/conf/domain_event.c: Move virDomainEventCallback and virDomainEvent structs into the source file instead of header * src/vbox/vbox_tmpl.c: Use official APIs for dispatching domain events instead of accessing structs directly.
-
由 Daniel P. Berrange 提交于
The current API for domain events has a number of problems - Only allows for domain lifecycle change events - Does not allow the same callback to be registered multiple times - Does not allow filtering of events to a specific domain This introduces a new more general purpose domain events API typedef enum { VIR_DOMAIN_EVENT_ID_LIFECYCLE = 0, /* virConnectDomainEventCallback */ ...more events later.. } int virConnectDomainEventRegisterAny(virConnectPtr conn, virDomainPtr dom, /* Optional, to filter */ int eventID, virConnectDomainEventGenericCallback cb, void *opaque, virFreeCallback freecb); int virConnectDomainEventDeregisterAny(virConnectPtr conn, int callbackID); Since different event types can received different data in the callback, the API is defined with a generic callback. Specific events will each have a custom signature for their callback. Thus when registering an event it is neccessary to cast the callback to the generic signature eg int myDomainEventCallback(virConnectPtr conn, virDomainPtr dom, int event, int detail, void *opaque) { ... } virConnectDomainEventRegisterAny(conn, NULL, VIR_DOMAIN_EVENT_ID_LIFECYCLE, VIR_DOMAIN_EVENT_CALLBACK(myDomainEventCallback) NULL, NULL); The VIR_DOMAIN_EVENT_CALLBACK() macro simply does a "bad" cast to the generic signature * include/libvirt/libvirt.h.in: Define new APIs for registering domain events * src/driver.h: Internal driver entry points for new events APIs * src/libvirt.c: Wire up public API to driver API for events APIs * src/libvirt_public.syms: Export new APIs * src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c, src/openvz/openvz_driver.c, src/phyp/phyp_driver.c, src/qemu/qemu_driver.c, src/remote/remote_driver.c, src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c, src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub out new API entries
-
由 Jim Meyering 提交于
* cfg.mk (useless_free_options): Add virDomainDefFree to the list of free-like functions. * src/test/test_driver.c (testDomainCreateXML): Remove useless-if- before-virDomainDefFree. * src/conf/domain_conf.c (virDomainAssignDef): Likewise
-
- 25 3月, 2010 3 次提交
-
-
由 Jiri Denemark 提交于
-
由 Matthias Bolte 提交于
The keys of entries in a VMX file are case insensitive. Both scsi0:1.fileName and scsi0:1.filename are valid. Therefore, make the conf parser compare names case insensitive in VMX mode to accept every capitalization variation. Also add test cases for this.
-
由 Matthias Bolte 提交于
<source file=''/> results in def->disks[i]->src == NULL. But vboxDomainDefineXML and vboxDomainAttachDevice didn't check def->disks[i]->src for NULL and expected it to be a valid string. Add checks for def->disks[i]->src != NULL to fix the segfault.
-
- 24 3月, 2010 1 次提交
-
-
由 Jim Meyering 提交于
* src/Makefile.am (augeas-check): New target, just to give the existing rule a name. At the same time, prefix the commands with $(AM_V_GEN), to avoid unexpected build output with V=0 which is the default.
-
- 23 3月, 2010 16 次提交
-
-
由 Jiri Denemark 提交于
-
由 Jiri Denemark 提交于
-
由 Jiri Denemark 提交于
-
由 Jim Meyering 提交于
Before, this function would blindly accept an invalid def->dst and then abuse the idx=-1 it would get from virDiskNameToIndex, when passing it invalid strings like "xvda:disk" and "sda1". Now, this function returns -1 upon failure. * src/conf/domain_conf.c (virDomainDiskDefAssignAddress): as above. Update callers. * src/conf/domain_conf.h: Update prototype. * src/qemu/qemu_conf.c: Update callers.
-
由 Jim Meyering 提交于
* src/util/util.c (virDiskNameToIndex): Accept sda1, and map it to "sda". I.e., accept and ignore any string of trailing digits.
-
由 Matthias Bolte 提交于
virSetCloseExec and virExecDaemonize were missing a body on Windows.
-
由 Matthias Bolte 提交于
Correctly disable pthread related code if pthread is not avialable, in order to get it compile with MinGW on Windows.
-
由 Matthias Bolte 提交于
Even if gnulib can provide stubs, it won't help that much. So just replace affected util functions (virFileOperation and virDirCreate) with stubs on Windows. Both functions aren't used on libvirt's client side, so this is fine for MinGW builds.
-
由 Matthias Bolte 提交于
Add dummy bodies for HAVE_GETPWUID_R and HAVE_MNTENT_H dependent functions for MinGW builds.
-
由 Matthias Bolte 提交于
Use the __declspec(dllexport/dllimport) stuff to export the symbol, otherwise accessing virConnectAuthPtrDefault triggers a segfault.
-
由 Matthias Bolte 提交于
This symbol is conditional, it would need to be exported conditional to work properly with MinGW. So just remove it, as no other driver register function is listed in the symbols files.
-
由 Matthias Bolte 提交于
This is necessary for MinGW builds.
-
由 Matthias Bolte 提交于
Used in esxDomainLookupByName and to be used in esxDomainDefineXML later.
-
由 Matthias Bolte 提交于
If esxVI_String_DeepCopyValue or esxVI_SelectionSpec_AppendToList fail then selectionSpec would leak. Add a free call in the failure path to fix the leak.
-
由 Matthias Bolte 提交于
Replace 'method' with 'function' and get the filename's suffix right.
-
由 Matthias Bolte 提交于
This is actually a consequence of the reworked required parameter checking: Unify the required parameter check into a Validate function instead of doing it separately im the (de)serialization part. The required parameter checking for the mapped methods parameter was done in the (de)serialize functions before. Now it's explicitly done in the mapped method itself.
-
- 22 3月, 2010 3 次提交
-
-
由 Jim Fehlig 提交于
Invoking virDomainSetMemory() on lxc driver results in libvirtd segfault when cgroups has not been configured on the host. Ensure driver->cgroup is non-null before invoking virCgroupForDomain(). To prevent similar segfaults in the future, ensure driver parameter to virCgroupForDomain() is non-null before dereferencing.
-
由 Cole Robinson 提交于
This can be triggered by the qemuStartVMDaemon cleanup path if a VM references a non-existent USB device (by product) in the XML.
-
由 Guido Günther 提交于
"virsh dominfo <vm>" crashes if there's no primary security driver set since we only intialize the secmodel.model and secmodel.doi if we have one. Attached patch checks for securityPrimaryDriver instead of securityDriver since the later is always set in qemudSecurityInit(). Closes: http://bugs.debian.org/574359
-
- 20 3月, 2010 10 次提交
-
-
由 Jiri Denemark 提交于
-
由 Jiri Denemark 提交于
-
由 Jiri Denemark 提交于
-
由 Jiri Denemark 提交于
-
由 Jiri Denemark 提交于
-
由 David Allan 提交于
-
由 David Allan 提交于
-
由 David Allan 提交于
-
由 David Allan 提交于
Also add vol wiping to ESX storage driver struct
-
由 David Allan 提交于
-
- 19 3月, 2010 3 次提交
-
-
由 Laine Stump 提交于
Attempt to turn on vhost-net mode for devices of type NETWORK, BRIDGE, and DIRECT (macvtap). * src/qemu/qemu_conf.h: add vhostfd to qemuBuildHostNetStr prototype add qemudOpenVhostNet prototype new flag to set when :,vhost=" found in qemu help * src/qemu/qemu_conf.c: * set QEMUD_CMD_FLAG_VNET_HOST is ",vhost=" found in qemu help - qemudOpenVhostNet - opens /dev/vhost-net to pass to qemu if everything is in place to use it. - qemuBuildHostNetStr - add vhostfd to commandline if it's not empty (higher levels decide whether or not to fill it in) - qemudBuildCommandLine - if /dev/vhost-net is successfully opened, add its fd to tapfds array so it isn't closed on qemu exec, and populate vhostfd_name to be passed in to commandline builder. * src/qemu/qemu_driver.c: add filler 0 for new arg to qemuBuildHostNetStr, along with a note that this must be implemented in order for hot-plug of vhost-net virtio devices to work properly (once qemu "netdev_add" monitor command is implemented).
-
由 Matthias Bolte 提交于
The logfile FD is dup2'ed in __virExec in the child. The FD needs to be closed in the parent, otherwise it leaks.
-
由 Eric Blake 提交于
POSIX states that creation of a mutex with default attributes is unspecified whether the mutex is recursive or non-recursive. We specifically want non-recursive (deadlock is desirable in flushing out coding bugs that used our mutex incorrectly). * src/util/threads-pthread.c (virMutexInit): Specifically request non-recursive mutex, rather than relying on unspecified default.
-