diff options
author | Mike Snitzer <snitzer@redhat.com> | 2010-03-26 15:40:13 +0000 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2010-03-26 15:40:13 +0000 |
commit | 7b0f529d3e125d568599c4eed004c23a22ca97af (patch) | |
tree | 6afba579d4fd1ea65bc840504175a1c6e189a606 /lib/locking | |
parent | d20956dcb1d9020642861ce3fb75540f918f03dc (diff) | |
download | lvm2-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.c | 8 |
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) |