static char buf[128];
int len;
- len = sprintf(buf, "0x%x ( %s%s%s%s%s%s)", flags,
+ len = sprintf(buf, "0x%x ( %s%s%s%s%s%s%s)", flags,
flags & LCK_PARTIAL_MODE ? "PARTIAL_MODE|" : "",
flags & LCK_MIRROR_NOSYNC_MODE ? "MIRROR_NOSYNC|" : "",
flags & LCK_DMEVENTD_MONITOR_MODE ? "DMEVENTD_MONITOR|" : "",
flags & LCK_ORIGIN_ONLY_MODE ? "ORIGIN_ONLY|" : "",
flags & LCK_TEST_MODE ? "TEST|" : "",
- flags & LCK_CONVERT ? "CONVERT|" : "");
+ flags & LCK_CONVERT ? "CONVERT|" : "",
+ flags & LCK_DMEVENTD_MONITOR_IGNORE ? "DMEVENTD_MONITOR_IGNORE|" : "");
if (len > 1)
buf[len - 2] = ' ';
if (lock_flags & LCK_MIRROR_NOSYNC_MODE)
init_mirror_in_sync(1);
- if (lock_flags & LCK_DMEVENTD_MONITOR_MODE)
- init_dmeventd_monitor(1);
- else
- init_dmeventd_monitor(0);
+ if (lock_flags & LCK_DMEVENTD_MONITOR_IGNORE)
+ init_dmeventd_monitor(DMEVENTD_MONITOR_IGNORE);
+ else {
+ if (lock_flags & LCK_DMEVENTD_MONITOR_MODE)
+ init_dmeventd_monitor(1);
+ else
+ init_dmeventd_monitor(0);
+ }
cmd->partial_activation = (lock_flags & LCK_PARTIAL_MODE) ? 1 : 0;
* But DMEVENTD_MONITOR_IGNORE is not propagated across the cluster.
*/
dmeventd_mode = dmeventd_monitor_mode();
- if (dmeventd_mode != DMEVENTD_MONITOR_IGNORE && dmeventd_mode)
+ if (dmeventd_mode == DMEVENTD_MONITOR_IGNORE)
+ args[1] |= LCK_DMEVENTD_MONITOR_IGNORE;
+
+ if (dmeventd_mode)
args[1] |= LCK_DMEVENTD_MONITOR_MODE;
if (cmd->partial_activation)
#define LCK_ORIGIN_ONLY_MODE 0x20 /* Same as above */
#define LCK_TEST_MODE 0x10 /* Test mode: No activation */
#define LCK_REVERT_MODE 0x40 /* Remove inactive tables */
+#define LCK_DMEVENTD_MONITOR_IGNORE 0x80 /* Whether to ignore dmeventd */
/*
* Special cases of VG locks.