typedef virStateDriver *virStateDriverPtr;
struct _virStateDriver {
+ const char *name;
virDrvStateInitialize initialize;
virDrvStateCleanup cleanup;
virDrvStateReload reload;
for (i = 0 ; i < virStateDriverTabCount ; i++) {
if (virStateDriverTab[i]->initialize &&
- virStateDriverTab[i]->initialize(privileged) < 0)
+ virStateDriverTab[i]->initialize(privileged) < 0) {
+ VIR_ERROR("Initialization of %s state driver failed",
+ virStateDriverTab[i]->name);
ret = -1;
+ }
}
return ret;
}
* XXX remove this when valgrind is fixed
*/
ld = getenv("LD_PRELOAD");
- if (ld && strstr(ld, "vgpreload"))
- return -1;
+ if (ld && strstr(ld, "vgpreload")) {
+ VIR_INFO0("Running under valgrind, disabling driver");
+ return 0;
+ }
- /* Check that the user is root */
+ /* Check that the user is root, silently disable if not */
if (!privileged) {
- return -1;
+ VIR_INFO0("Not running privileged, disabling driver");
+ return 0;
+ }
+
+ /* Check that this is a container enabled kernel */
+ if (lxcContainerAvailable(0) < 0) {
+ VIR_INFO0("LXC support not available in this kernel, disabling driver");
+ return 0;
}
if (VIR_ALLOC(lxc_driver) < 0) {
}
lxcDriverLock(lxc_driver);
- /* Check that this is a container enabled kernel */
- if (lxcContainerAvailable(0) < 0) {
- VIR_INFO0("LXC support not available in this kernel, disabling driver");
- goto cleanup;
- }
-
if (virDomainObjListInit(&lxc_driver->domains) < 0)
goto cleanup;
};
static virStateDriver lxcStateDriver = {
+ .name = "LXC",
.initialize = lxcStartup,
.cleanup = lxcShutdown,
.active = lxcActive,
};
static virStateDriver networkStateDriver = {
+ "Network",
networkStartup,
networkShutdown,
networkReload,
static virStateDriver devkitStateDriver = {
+ .name = "DeviceKit",
.initialize = devkitDeviceMonitorStartup,
.cleanup = devkitDeviceMonitorShutdown,
.reload = devkitDeviceMonitorReload,
static virStateDriver halStateDriver = {
+ .name = "HAL",
.initialize = halDeviceMonitorStartup,
.cleanup = halDeviceMonitorShutdown,
.reload = halDeviceMonitorReload,
};
static virStateDriver oneStateDriver = {
+ .name = "OpenNebula",
.initialize = oneStartup,
.cleanup = oneShutdown,
.active = oneActive,
static virStateDriver qemuStateDriver = {
+ .name = "QEMU",
.initialize = qemudStartup,
.cleanup = qemudShutdown,
.reload = qemudReload,
#ifdef WITH_LIBVIRTD
static virStateDriver state_driver = {
+ .name = "Remote",
.initialize = remoteStartup,
};
#endif
};
static virStateDriver stateDriver = {
+ .name = "Secret",
.initialize = secretDriverStartup,
.cleanup = secretDriverCleanup,
.reload = secretDriverReload,
static virStateDriver stateDriver = {
+ .name = "Storage",
.initialize = storageDriverStartup,
.cleanup = storageDriverShutdown,
.reload = storageDriverReload,
static virStateDriver umlStateDriver = {
+ .name = "UML",
.initialize = umlStartup,
.cleanup = umlShutdown,
.reload = umlReload,
}
static virStateDriver state_driver = {
+ .name = "Xen",
.initialize = xenInitialize,
};