summaryrefslogtreecommitdiff
path: root/backport-pid1-add-env-var-to-override-default-mount-rate-limit-interval.patch
diff options
context:
space:
mode:
Diffstat (limited to 'backport-pid1-add-env-var-to-override-default-mount-rate-limit-interval.patch')
-rw-r--r--backport-pid1-add-env-var-to-override-default-mount-rate-limit-interval.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/backport-pid1-add-env-var-to-override-default-mount-rate-limit-interval.patch b/backport-pid1-add-env-var-to-override-default-mount-rate-limit-interval.patch
new file mode 100644
index 0000000..2d1c9c9
--- /dev/null
+++ b/backport-pid1-add-env-var-to-override-default-mount-rate-limit-interval.patch
@@ -0,0 +1,57 @@
+From cc2030f928981947db8fb9ec185a82024abab2c4 Mon Sep 17 00:00:00 2001
+From: xujing <xujing125@huawei.com>
+Date: Wed, 16 Oct 2024 15:19:09 +0800
+Subject: [PATCH] pid1: add env var to override default mount rate limit
+ interval
+
+Similar to 24a4542c. 24a4542c can only be set 1 in 1s at most,
+sometimes we may need to set to something else(such as 1 in 2s).
+So it's best to let the user decide.
+
+This also allows users to solve #34690.
+
+Signed-off-by: xujing <xujing125@huawei.com>
+---
+ src/core/mount.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index ead9b46..f4bc6eb 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -1875,6 +1875,7 @@ static void mount_enumerate(Manager *m) {
+ mnt_init_debug(0);
+
+ if (!m->mount_monitor) {
++ usec_t mount_rate_limit_interval = 1 * USEC_PER_SEC;
+ unsigned mount_rate_limit_burst = 5;
+ int fd;
+
+@@ -1916,14 +1917,21 @@ static void mount_enumerate(Manager *m) {
+ }
+
+ /* Let users override the default (5 in 1s), as it stalls the boot sequence on busy systems. */
+- const char *e = secure_getenv("SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST");
++ const char *e = secure_getenv("SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_INTERVAL_SEC");
++ if (e) {
++ r = parse_sec(e, &mount_rate_limit_interval);
++ if (r < 0)
++ log_debug_errno(r, "Invalid value in $SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_INTERVAL_SEC, ignoring: %s", e);
++ }
++
++ e = secure_getenv("SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST");
+ if (e) {
+ r = safe_atou(e, &mount_rate_limit_burst);
+ if (r < 0)
+- log_debug("Invalid value in $SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST, ignoring: %s", e);
++ log_debug_errno(r, "Invalid value in $SYSTEMD_DEFAULT_MOUNT_RATE_LIMIT_BURST, ignoring: %s", e);
+ }
+
+- r = sd_event_source_set_ratelimit(m->mount_event_source, 1 * USEC_PER_SEC, mount_rate_limit_burst);
++ r = sd_event_source_set_ratelimit(m->mount_event_source, mount_rate_limit_interval, mount_rate_limit_burst);
+ if (r < 0) {
+ log_error_errno(r, "Failed to enable rate limit for mount events: %m");
+ goto fail;
+--
+2.33.0
+