summaryrefslogtreecommitdiffstats
path: root/lib/locking
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@redhat.com>2010-03-26 15:40:13 +0000
committerMike Snitzer <snitzer@redhat.com>2010-03-26 15:40:13 +0000
commit7b0f529d3e125d568599c4eed004c23a22ca97af (patch)
tree6afba579d4fd1ea65bc840504175a1c6e189a606 /lib/locking
parentd20956dcb1d9020642861ce3fb75540f918f03dc (diff)
downloadlvm2-7b0f529d3e125d568599c4eed004c23a22ca97af.tar.gz
lvm2-7b0f529d3e125d568599c4eed004c23a22ca97af.tar.xz
lvm2-7b0f529d3e125d568599c4eed004c23a22ca97af.zip
Fix clvmd cluster propagation of dmeventd monitoring mode.
clvmd's do_lock_lv() already properly controls dmeventd monitoring based on LCK_DMEVENTD_MONITOR_MODE in lock_flags -- though one small fix was needed for this to work: _lock_for_cluster() must treat dmeventd_monitor_mode()'s return as a tri-state value. Also cleanup do_lock_lv() to: - explicitly init_dmeventd_monitor() based on LCK_DMEVENTD_MONITOR_MODE - no longer reset init_dmeventd_monitor() to default at the end of do_lock_lv() -- it is unnecessary
Diffstat (limited to 'lib/locking')
-rw-r--r--lib/locking/cluster_locking.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/locking/cluster_locking.c b/lib/locking/cluster_locking.c
index b82b0778..082ebec8 100644
--- a/lib/locking/cluster_locking.c
+++ b/lib/locking/cluster_locking.c
@@ -307,6 +307,7 @@ static int _lock_for_cluster(struct cmd_context *cmd, unsigned char clvmd_cmd,
char *args;
const char *node = "";
int len;
+ int dmeventd_mode;
int saved_errno = errno;
lvm_response_t *response = NULL;
int num_responses;
@@ -324,7 +325,12 @@ static int _lock_for_cluster(struct cmd_context *cmd, unsigned char clvmd_cmd,
if (mirror_in_sync())
args[1] |= LCK_MIRROR_NOSYNC_MODE;
- if (dmeventd_monitor_mode())
+ /*
+ * Must handle tri-state return from dmeventd_monitor_mode.
+ * But DMEVENTD_MONITOR_IGNORE is not propagated across the cluster.
+ */
+ dmeventd_mode = dmeventd_monitor_mode();
+ if (dmeventd_mode != DMEVENTD_MONITOR_IGNORE && dmeventd_mode)
args[1] |= LCK_DMEVENTD_MONITOR_MODE;
if (cmd->partial_activation)