summaryrefslogtreecommitdiff
path: root/sys-fs/lvm2/files/lvm2-2.03.20-dmeventd-no-idle-exit.patch
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-05-10 11:43:22 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-05-10 11:43:22 +0100
commit1d412f04b6e137f20cbe616b3203d2cbc8dfd5ad (patch)
tree37690cdf0c1532996a40987cf1d65e80d21886c4 /sys-fs/lvm2/files/lvm2-2.03.20-dmeventd-no-idle-exit.patch
parent100b0ae24e9b0d0fb3071efea2078a3bdabe4e38 (diff)
gentoo auto-resync : 10:05:2023 - 11:43:22
Diffstat (limited to 'sys-fs/lvm2/files/lvm2-2.03.20-dmeventd-no-idle-exit.patch')
-rw-r--r--sys-fs/lvm2/files/lvm2-2.03.20-dmeventd-no-idle-exit.patch73
1 files changed, 73 insertions, 0 deletions
diff --git a/sys-fs/lvm2/files/lvm2-2.03.20-dmeventd-no-idle-exit.patch b/sys-fs/lvm2/files/lvm2-2.03.20-dmeventd-no-idle-exit.patch
new file mode 100644
index 000000000000..b7030ccc084d
--- /dev/null
+++ b/sys-fs/lvm2/files/lvm2-2.03.20-dmeventd-no-idle-exit.patch
@@ -0,0 +1,73 @@
+From ab3ae0a22dfbe20e2d17e7dc60e0f76184ec098c Mon Sep 17 00:00:00 2001
+From: "Robin H. Johnson" <robbat2@gentoo.org>
+Date: Wed, 24 Jul 2019 11:22:32 +0200
+Subject: [PATCH] dmeventd configurable idle exit time
+
+dmeventd nominally exits after 1 hour of idle time. There are use cases for
+this, esp. with socket activation, but also cases where users don't expect
+dmeventd to exit.
+
+Provide a tuning knob via environment variable, DMEVENTD_IDLE_EXIT_TIMEOUT,
+that can be -1 to not exit, or a configurable time for different idle exit.
+
+Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
+Fixes: https://bugs.gentoo.org/682556
+---
+ daemons/dmeventd/dmeventd.c | 16 ++++++++++++++--
+ man/dmeventd.8_main | 4 ++++
+ 2 files changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/daemons/dmeventd/dmeventd.c b/daemons/dmeventd/dmeventd.c
+index 33859ef414..ac0b9743fc 100644
+--- a/daemons/dmeventd/dmeventd.c
++++ b/daemons/dmeventd/dmeventd.c
+@@ -2169,6 +2169,18 @@
+ .server_path = DM_EVENT_FIFO_SERVER
+ };
+ time_t now, idle_exit_timeout = DMEVENTD_IDLE_EXIT_TIMEOUT;
++
++ /* Provide a basic way to config the idle timeout */
++ char* idle_exit_timeout_env = getenv("DMEVENTD_IDLE_EXIT_TIMEOUT") ? : NULL;
++ if(NULL != idle_exit_timeout_env) {
++ char* endptr;
++ idle_exit_timeout = strtol(idle_exit_timeout_env, &endptr, 10);
++ if (errno == ERANGE || *endptr != '\0') {
++ fprintf(stderr, "DMEVENTD_IDLE_EXIT_TIMEOUT: bad time input\n");
++ exit(EXIT_FAILURE);
++ }
++ }
++
+ opterr = 0;
+ optind = 0;
+
+@@ -2265,7 +2277,7 @@
+ _process_initial_registrations();
+
+ for (;;) {
+- if (_idle_since) {
++ if (_idle_since || _exit_now) {
+ if (_exit_now) {
+ if (_exit_now == DM_SCHEDULED_EXIT)
+ break; /* Only prints shutdown message */
+@@ -2274,7 +2286,7 @@
+ (long) (time(NULL) - _idle_since));
+ break;
+ }
+- if (idle_exit_timeout) {
++ if (idle_exit_timeout && idle_exit_timeout > 0) {
+ now = time(NULL);
+ if (now < _idle_since)
+ _idle_since = now; /* clock change? */
+--- a/man/dmeventd.8_main
++++ b/man/dmeventd.8_main
+@@ -169,6 +169,10 @@
+ Variable is set by thin and vdo plugin to prohibit recursive interaction
+ with dmeventd by any executed lvm2 command from
+ a thin_command, vdo_command environment.
++.TP
++.B DMEVENTD_IDLE_EXIT_TIMEOUT
++Configure the dmeventd idle exit timeout behavior, value in seconds. Default
++is 3600 (1 hour). -1 means do not exit.
+ .
+ .SH SEE ALSO
+ .