* Returns -1 if the requested version/flags were inadequate
*/
typedef int (*virLockDriverInit)(unsigned int version,
+ const char *configFile,
unsigned int flags);
/**
static int virLockManagerNopInit(unsigned int version,
+ const char *configFile,
unsigned int flags)
{
- VIR_DEBUG("version=%u flags=%u", version, flags);
+ VIR_DEBUG("version=%u configFile=%s flags=%u", version, NULLSTR(configFile), flags);
return 0;
}
*/
static int virLockManagerSanlockInit(unsigned int version ATTRIBUTE_UNUSED,
+ const char *configFile ATTRIBUTE_UNUSED,
unsigned int flags)
{
virCheckFlags(0, -1);
*/
#if HAVE_DLFCN_H
virLockManagerPluginPtr virLockManagerPluginNew(const char *name,
+ const char *configFile,
unsigned int flags)
{
void *handle = NULL;
}
}
- if (driver->drvInit(VIR_LOCK_MANAGER_VERSION, flags) < 0) {
- virLockError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("plugin ABI is not compatible"));
+ if (driver->drvInit(VIR_LOCK_MANAGER_VERSION, configFile, flags) < 0)
goto cleanup;
- }
if (VIR_ALLOC(plugin) < 0) {
virReportOOMError();
}
#else /* !HAVE_DLFCN_H */
virLockManagerPluginPtr virLockManagerPluginNew(const char *name ATTRIBUTE_UNUSED,
+ const char *configFile ATTRIBUTE_UNUSED,
unsigned int flags ATTRIBUTE_UNUSED)
{
virLockError(VIR_ERR_INTERNAL_ERROR, "%s",
typedef virLockManagerPlugin *virLockManagerPluginPtr;
virLockManagerPluginPtr virLockManagerPluginNew(const char *name,
+ const char *configFile,
unsigned int flags);
void virLockManagerPluginRef(virLockManagerPluginPtr plugin);
void virLockManagerPluginUnref(virLockManagerPluginPtr plugin);
#endif
if (!(driver->lockManager =
- virLockManagerPluginNew("nop", 0)))
+ virLockManagerPluginNew("nop", NULL, 0)))
return -1;
/* Just check the file is readable before opening it, otherwise
p = virConfGetValue (conf, "lock_manager");
CHECK_TYPE ("lock_manager", VIR_CONF_STRING);
if (p && p->str) {
+ char *lockConf;
virLockManagerPluginUnref(driver->lockManager);
+ if (virAsprintf(&lockConf, "%s/libvirt/qemu-%s.conf", SYSCONFDIR, p->str) < 0) {
+ virReportOOMError();
+ virConfFree(conf);
+ return -1;
+ }
if (!(driver->lockManager =
- virLockManagerPluginNew(p->str, 0)))
+ virLockManagerPluginNew(p->str, lockConf, 0)))
VIR_ERROR(_("Failed to load lock manager %s"), p->str);
+ VIR_FREE(lockConf);
}
virConfFree (conf);