lock_manager: Allow disabling configFile for virLockManagerPluginNew

In some cases we might want to not load the lock driver config.
Alter virLockManagerPluginNew() and the lock drivers to cope with
this fact.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
Michal Privoznik 2018-08-21 14:08:54 +02:00
parent 385eb8399b
commit 35b5b244da
4 changed files with 17 additions and 5 deletions

View File

@ -124,6 +124,7 @@ struct _virLockManagerParam {
/**
* virLockDriverInit:
* @version: the libvirt requested plugin ABI version
* @configFile: path to config file
* @flags: the libvirt requested plugin optional extras
*
* Allow the plugin to validate the libvirt requested
@ -131,6 +132,9 @@ struct _virLockManagerParam {
* to block its use in versions of libvirtd which are
* too old to support key features.
*
* The @configFile variable points to config file that the driver
* should load. If NULL, no config file should be loaded.
*
* NB: A plugin may be loaded multiple times, for different
* libvirt drivers (eg QEMU, LXC, UML)
*

View File

@ -371,8 +371,10 @@ static int virLockManagerLockDaemonInit(unsigned int version,
driver->requireLeaseForDisks = true;
driver->autoDiskLease = true;
if (virLockManagerLockDaemonLoadConfig(configFile) < 0)
if (configFile &&
virLockManagerLockDaemonLoadConfig(configFile) < 0) {
goto error;
}
if (driver->autoDiskLease) {
if (driver->fileLockSpaceDir &&

View File

@ -450,8 +450,10 @@ static int virLockManagerSanlockInit(unsigned int version,
goto error;
}
if (virLockManagerSanlockLoadConfig(driver, configFile) < 0)
if (configFile &&
virLockManagerSanlockLoadConfig(driver, configFile) < 0) {
goto error;
}
if (driver->autoDiskLease && !driver->hostID) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",

View File

@ -105,6 +105,8 @@ static void virLockManagerLogParams(size_t nparams,
/**
* virLockManagerPluginNew:
* @name: the name of the plugin
* @driverName: the hypervisor driver that loads the plugin
* @configDir: path to dir where config files are stored
* @flag: optional plugin flags
*
* Attempt to load the plugin $(libdir)/libvirt/lock-driver/@name.so
@ -130,11 +132,13 @@ virLockManagerPluginPtr virLockManagerPluginNew(const char *name,
char *configFile = NULL;
VIR_DEBUG("name=%s driverName=%s configDir=%s flags=0x%x",
name, driverName, configDir, flags);
name, NULLSTR(driverName), NULLSTR(configDir), flags);
if (virAsprintf(&configFile, "%s/%s-%s.conf",
configDir, driverName, name) < 0)
if (driverName && configDir &&
virAsprintf(&configFile, "%s/%s-%s.conf",
configDir, driverName, name) < 0) {
return NULL;
}
if (STREQ(name, "nop")) {
driver = &virLockDriverNop;