]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-config: merge configured children max
authordongshengyuan <545258830@qq.com>
Mon, 13 Jul 2026 02:46:55 +0000 (10:46 +0800)
committerdongshengyuan <545258830@qq.com>
Mon, 13 Jul 2026 04:18:49 +0000 (12:18 +0800)
Merge children_max from the per-source UdevConfig values before
defaulting it from system resources.

Reproducer:
  systemd-udevd --debug --children-max=1

Before:
  Set children_max to 32

Follow-up:
  04fa5c1580ad388af3477ecfd7d4aa7d7f5cee30

src/udev/test-udev-manager.c
src/udev/udev-config.c

index 7de5a37289c65cad201a645a7ac9050cff8ebaf4..c2e70d3c8d92234b4c3466f825cac1d2fd01d780 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "alloc-util.h"
 #include "tests.h"
+#include "udev-config.h"
 #include "udev-manager.h"
 
 TEST(devpath_conflict) {
@@ -35,4 +36,16 @@ TEST(worker_free_detaches_event) {
         ASSERT_NULL(event->worker);
 }
 
+TEST(manager_load_merges_children_max) {
+        _cleanup_(manager_freep) Manager *manager = ASSERT_PTR(manager_new());
+        char *argv[] = {
+                (char*) "systemd-udevd",
+                (char*) "--children-max=1",
+                NULL,
+        };
+
+        ASSERT_OK_POSITIVE(manager_load(manager, ELEMENTSOF(argv) - 1, argv));
+        ASSERT_EQ(manager->config.children_max, 1U);
+}
+
 DEFINE_TEST_MAIN(LOG_DEBUG);
index 27a72f2ac8dcd039b0b87ab632b43f3241006f21..c108985c4df5bdcd14e44ab9ba81fc40d2328ed5 100644 (file)
@@ -281,6 +281,7 @@ static void manager_merge_config(Manager *manager) {
 
         manager_merge_config_log_level(manager);
         MERGE_NON_NEGATIVE(resolve_name_timing, RESOLVE_NAME_EARLY);
+        MERGE_NON_ZERO(children_max, 0);
         MERGE_NON_ZERO(exec_delay_usec, 0);
         MERGE_NON_ZERO(timeout_usec, DEFAULT_WORKER_TIMEOUT_USEC);
         MERGE_NON_ZERO(timeout_signal, SIGKILL);