From 61cf772e70b99ef000a55194d71ddebcfeb9d8d7 Mon Sep 17 00:00:00 2001 From: Petr Rockai Date: Wed, 19 Oct 2011 08:46:26 +0000 Subject: [PATCH] Keep the LVM-based dmeventd plugins from trying to manipulate the dmeventd monitoring state of the logical volumes they are currently acting on. Until now, every time a logical volume has been changed by a dmeventd plugin, this plugin would have called back to dmeventd through the external FIFO mechanism. I am fairly sure this was superfluous, inefficient and possibly even dangerous. --- daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c | 1 + tools/lvm2cmd.h | 6 ++++++ tools/lvmcmdlib.c | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c index 937d81d9f..789c68a3f 100644 --- a/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c +++ b/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c @@ -113,6 +113,7 @@ int dmeventd_lvm2_init(void) _mem_pool = NULL; goto out; } + lvm2_disable_dmeventd_monitoring(_lvm_handle); /* FIXME Temporary: move to dmeventd core */ lvm2_run(_lvm_handle, "_memlock_inc"); } diff --git a/tools/lvm2cmd.h b/tools/lvm2cmd.h index 66651d89b..bf93787a4 100644 --- a/tools/lvm2cmd.h +++ b/tools/lvm2cmd.h @@ -51,6 +51,12 @@ void lvm2_log_fn(lvm2_log_fn_t log_fn); */ void *lvm2_init(void); +/* + * Disable any dmeventd calls that the library may otherwise do. Useful to avoid + * recursive calls from dmeventd to itself. + */ +void lvm2_disable_dmeventd_monitoring(void *handle); + /* * Set log level (as above) if using built-in logging function. * Default is LVM2_LOG_PRINT. Use LVM2_LOG_SUPPRESS to suppress output. diff --git a/tools/lvmcmdlib.c b/tools/lvmcmdlib.c index 6b2bc9d10..47bf1c888 100644 --- a/tools/lvmcmdlib.c +++ b/tools/lvmcmdlib.c @@ -97,6 +97,10 @@ int lvm2_run(void *handle, const char *cmdline) return ret; } +void lvm2_disable_dmeventd_monitoring(void *handle) { + init_dmeventd_monitor(DMEVENTD_MONITOR_IGNORE); +} + void lvm2_log_level(void *handle, int level) { struct cmd_context *cmd = (struct cmd_context *) handle; -- 2.43.5