summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2015-10-23 10:48:01 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2015-10-23 10:54:13 +0200
commite5b686d6932be9931a386d15e8d452153225952b (patch)
tree662d82c87fae0f2c680dd5fa926c526453080ad5
parent87a39d8bac572b67f927dad41548155606a50f4f (diff)
downloadlvm2-e5b686d6932be9931a386d15e8d452153225952b.tar.gz
tools: update for lvm2_disable_dmeventd_monitoring
Make lvm2_disable_dmeventd_monitoring() more explicit. As memlock_inc_daemon() is also used by clvmd, which does changes dmeventd and suspend ignore state at some stages - make updates of these 2 variable tied to the call of lvm2_disable_dmeventd_monitoring(). Once this call is made dmeventd monitoring and suspended devices are ignored. TODO: all lvm-global settings should really be moved to command context.
-rw-r--r--lib/misc/lvm-globals.c11
-rw-r--r--lib/misc/lvm-globals.h1
-rw-r--r--tools/lvmcmdlib.c4
3 files changed, 12 insertions, 4 deletions
diff --git a/lib/misc/lvm-globals.c b/lib/misc/lvm-globals.c
index 0cdcc885b..06c36e221 100644
--- a/lib/misc/lvm-globals.c
+++ b/lib/misc/lvm-globals.c
@@ -40,6 +40,8 @@ static int _security_level = SECURITY_LEVEL;
static char _cmd_name[30] = "";
static int _mirror_in_sync = 0;
static int _dmeventd_monitor = DEFAULT_DMEVENTD_MONITOR;
+/* When set, disables update of _dmeventd_monitor & _ignore_suspended_devices */
+static int _disable_dmeventd_monitoring = 0;
static int _background_polling = DEFAULT_BACKGROUND_POLLING;
static int _ignore_suspended_devices = 0;
static int _ignore_lvm_mirrors = DEFAULT_IGNORE_LVM_MIRRORS;
@@ -123,10 +125,15 @@ void init_mirror_in_sync(int in_sync)
void init_dmeventd_monitor(int reg)
{
- if (!memlock_count_daemon())
+ if (!_disable_dmeventd_monitoring)
_dmeventd_monitor = reg;
}
+void init_disable_dmeventd_monitoring(int reg)
+{
+ _disable_dmeventd_monitoring = reg;
+}
+
void init_background_polling(int polling)
{
_background_polling = polling;
@@ -134,7 +141,7 @@ void init_background_polling(int polling)
void init_ignore_suspended_devices(int ignore)
{
- if (!memlock_count_daemon())
+ if (!_disable_dmeventd_monitoring)
_ignore_suspended_devices = ignore;
}
diff --git a/lib/misc/lvm-globals.h b/lib/misc/lvm-globals.h
index 8628a890a..132af96f1 100644
--- a/lib/misc/lvm-globals.h
+++ b/lib/misc/lvm-globals.h
@@ -38,6 +38,7 @@ void init_lockingfailed(int level);
void init_security_level(int level);
void init_mirror_in_sync(int in_sync);
void init_dmeventd_monitor(int reg);
+void init_disable_dmeventd_monitoring(int disable);
void init_background_polling(int polling);
void init_ignore_suspended_devices(int ignore);
void init_ignore_lvm_mirrors(int scan);
diff --git a/tools/lvmcmdlib.c b/tools/lvmcmdlib.c
index ae8ff5c7e..b30cce032 100644
--- a/tools/lvmcmdlib.c
+++ b/tools/lvmcmdlib.c
@@ -80,8 +80,6 @@ int lvm2_run(void *handle, const char *cmdline)
/* FIXME Temporary - move to libdevmapper */
ret = ECMD_PROCESSED;
if (!strcmp(cmdline, "_memlock_inc")) {
- init_dmeventd_monitor(DMEVENTD_MONITOR_IGNORE);
- init_ignore_suspended_devices(1);
memlock_inc_daemon(cmd);
} else if (!strcmp(cmdline, "_memlock_dec"))
memlock_dec_daemon(cmd);
@@ -99,6 +97,8 @@ int lvm2_run(void *handle, const char *cmdline)
void lvm2_disable_dmeventd_monitoring(void *handle) {
init_dmeventd_monitor(DMEVENTD_MONITOR_IGNORE);
+ init_ignore_suspended_devices(1);
+ init_disable_dmeventd_monitoring(1); /* Lock settings */
}
void lvm2_log_level(void *handle, int level)