diff options
Diffstat (limited to 'sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch')
-rw-r--r-- | sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch | 483 |
1 files changed, 0 insertions, 483 deletions
diff --git a/sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch b/sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch deleted file mode 100644 index 6d070e8d30d1..000000000000 --- a/sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch +++ /dev/null @@ -1,483 +0,0 @@ -From 4fa9d8f14523982482386d398d2b2669902f2098 Mon Sep 17 00:00:00 2001 -From: Yu Watanabe <watanabe.yu+github@gmail.com> -Date: Mon, 18 Oct 2021 14:11:53 +0900 -Subject: [PATCH] Revert "core: Check unit start rate limiting earlier" - -This reverts commit ed8fbbf1745c6a2dc0b8cd560ac8a3353f72e979. - -This was causing problems during boot, see -https://bodhi.fedoraproject.org/updates/FEDORA-2021-a1a52487e6, -https://bugzilla.redhat.com/show_bug.cgi?id=2013386. -https://github.com/systemd/systemd/issues/21025 ---- - src/core/automount.c | 23 ++++++----------------- - src/core/mount.c | 23 ++++++----------------- - src/core/path.c | 23 ++++++----------------- - src/core/service.c | 25 +++++++------------------ - src/core/socket.c | 23 ++++++----------------- - src/core/swap.c | 23 ++++++----------------- - src/core/timer.c | 23 ++++++----------------- - src/core/unit.c | 7 ------- - src/core/unit.h | 4 ---- - test/TEST-63-ISSUE-17433/Makefile | 1 - - test/TEST-63-ISSUE-17433/test.sh | 9 --------- - test/meson.build | 2 -- - test/testsuite-10.units/test10.service | 3 --- - test/testsuite-63.units/test63.path | 2 -- - test/testsuite-63.units/test63.service | 5 ----- - test/units/testsuite-63.service | 16 ---------------- - 16 files changed, 43 insertions(+), 169 deletions(-) - delete mode 120000 test/TEST-63-ISSUE-17433/Makefile - delete mode 100755 test/TEST-63-ISSUE-17433/test.sh - delete mode 100644 test/testsuite-63.units/test63.path - delete mode 100644 test/testsuite-63.units/test63.service - delete mode 100644 test/units/testsuite-63.service - -diff --git a/src/core/automount.c b/src/core/automount.c -index 0722abef23..edc9588165 100644 ---- a/src/core/automount.c -+++ b/src/core/automount.c -@@ -814,6 +814,12 @@ static int automount_start(Unit *u) { - if (r < 0) - return r; - -+ r = unit_test_start_limit(u); -+ if (r < 0) { -+ automount_enter_dead(a, AUTOMOUNT_FAILURE_START_LIMIT_HIT); -+ return r; -+ } -+ - r = unit_acquire_invocation_id(u); - if (r < 0) - return r; -@@ -1059,21 +1065,6 @@ static bool automount_supported(void) { - return supported; - } - --static int automount_test_start_limit(Unit *u) { -- Automount *a = AUTOMOUNT(u); -- int r; -- -- assert(a); -- -- r = unit_test_start_limit(u); -- if (r < 0) { -- automount_enter_dead(a, AUTOMOUNT_FAILURE_START_LIMIT_HIT); -- return r; -- } -- -- return 0; --} -- - static const char* const automount_result_table[_AUTOMOUNT_RESULT_MAX] = { - [AUTOMOUNT_SUCCESS] = "success", - [AUTOMOUNT_FAILURE_RESOURCES] = "resources", -@@ -1136,6 +1127,4 @@ const UnitVTable automount_vtable = { - [JOB_FAILED] = "Failed to unset automount %s.", - }, - }, -- -- .test_start_limit = automount_test_start_limit, - }; -diff --git a/src/core/mount.c b/src/core/mount.c -index 9bec190cb6..af39db214b 100644 ---- a/src/core/mount.c -+++ b/src/core/mount.c -@@ -1168,6 +1168,12 @@ static int mount_start(Unit *u) { - - assert(IN_SET(m->state, MOUNT_DEAD, MOUNT_FAILED)); - -+ r = unit_test_start_limit(u); -+ if (r < 0) { -+ mount_enter_dead(m, MOUNT_FAILURE_START_LIMIT_HIT); -+ return r; -+ } -+ - r = unit_acquire_invocation_id(u); - if (r < 0) - return r; -@@ -2137,21 +2143,6 @@ static int mount_can_clean(Unit *u, ExecCleanMask *ret) { - return exec_context_get_clean_mask(&m->exec_context, ret); - } - --static int mount_test_start_limit(Unit *u) { -- Mount *m = MOUNT(u); -- int r; -- -- assert(m); -- -- r = unit_test_start_limit(u); -- if (r < 0) { -- mount_enter_dead(m, MOUNT_FAILURE_START_LIMIT_HIT); -- return r; -- } -- -- return 0; --} -- - static const char* const mount_exec_command_table[_MOUNT_EXEC_COMMAND_MAX] = { - [MOUNT_EXEC_MOUNT] = "ExecMount", - [MOUNT_EXEC_UNMOUNT] = "ExecUnmount", -@@ -2249,6 +2240,4 @@ const UnitVTable mount_vtable = { - [JOB_TIMEOUT] = "Timed out unmounting %s.", - }, - }, -- -- .test_start_limit = mount_test_start_limit, - }; -diff --git a/src/core/path.c b/src/core/path.c -index 2b659696a4..e098e83a31 100644 ---- a/src/core/path.c -+++ b/src/core/path.c -@@ -590,6 +590,12 @@ static int path_start(Unit *u) { - if (r < 0) - return r; - -+ r = unit_test_start_limit(u); -+ if (r < 0) { -+ path_enter_dead(p, PATH_FAILURE_START_LIMIT_HIT); -+ return r; -+ } -+ - r = unit_acquire_invocation_id(u); - if (r < 0) - return r; -@@ -805,21 +811,6 @@ static void path_reset_failed(Unit *u) { - p->result = PATH_SUCCESS; - } - --static int path_test_start_limit(Unit *u) { -- Path *p = PATH(u); -- int r; -- -- assert(p); -- -- r = unit_test_start_limit(u); -- if (r < 0) { -- path_enter_dead(p, PATH_FAILURE_START_LIMIT_HIT); -- return r; -- } -- -- return 0; --} -- - static const char* const path_type_table[_PATH_TYPE_MAX] = { - [PATH_EXISTS] = "PathExists", - [PATH_EXISTS_GLOB] = "PathExistsGlob", -@@ -874,6 +865,4 @@ const UnitVTable path_vtable = { - .reset_failed = path_reset_failed, - - .bus_set_property = bus_path_set_property, -- -- .test_start_limit = path_test_start_limit, - }; -diff --git a/src/core/service.c b/src/core/service.c -index 701c145565..7b90822f68 100644 ---- a/src/core/service.c -+++ b/src/core/service.c -@@ -2456,6 +2456,13 @@ static int service_start(Unit *u) { - - assert(IN_SET(s->state, SERVICE_DEAD, SERVICE_FAILED)); - -+ /* Make sure we don't enter a busy loop of some kind. */ -+ r = unit_test_start_limit(u); -+ if (r < 0) { -+ service_enter_dead(s, SERVICE_FAILURE_START_LIMIT_HIT, false); -+ return r; -+ } -+ - r = unit_acquire_invocation_id(u); - if (r < 0) - return r; -@@ -4451,22 +4458,6 @@ static const char *service_finished_job(Unit *u, JobType t, JobResult result) { - return NULL; - } - --static int service_test_start_limit(Unit *u) { -- Service *s = SERVICE(u); -- int r; -- -- assert(s); -- -- /* Make sure we don't enter a busy loop of some kind. */ -- r = unit_test_start_limit(u); -- if (r < 0) { -- service_enter_dead(s, SERVICE_FAILURE_START_LIMIT_HIT, false); -- return r; -- } -- -- return 0; --} -- - static const char* const service_restart_table[_SERVICE_RESTART_MAX] = { - [SERVICE_RESTART_NO] = "no", - [SERVICE_RESTART_ON_SUCCESS] = "on-success", -@@ -4629,6 +4620,4 @@ const UnitVTable service_vtable = { - }, - .finished_job = service_finished_job, - }, -- -- .test_start_limit = service_test_start_limit, - }; -diff --git a/src/core/socket.c b/src/core/socket.c -index 31d88b71ff..f362a5baa8 100644 ---- a/src/core/socket.c -+++ b/src/core/socket.c -@@ -2515,6 +2515,12 @@ static int socket_start(Unit *u) { - - assert(IN_SET(s->state, SOCKET_DEAD, SOCKET_FAILED)); - -+ r = unit_test_start_limit(u); -+ if (r < 0) { -+ socket_enter_dead(s, SOCKET_FAILURE_START_LIMIT_HIT); -+ return r; -+ } -+ - r = unit_acquire_invocation_id(u); - if (r < 0) - return r; -@@ -3423,21 +3429,6 @@ static int socket_can_clean(Unit *u, ExecCleanMask *ret) { - return exec_context_get_clean_mask(&s->exec_context, ret); - } - --static int socket_test_start_limit(Unit *u) { -- Socket *s = SOCKET(u); -- int r; -- -- assert(s); -- -- r = unit_test_start_limit(u); -- if (r < 0) { -- socket_enter_dead(s, SOCKET_FAILURE_START_LIMIT_HIT); -- return r; -- } -- -- return 0; --} -- - static const char* const socket_exec_command_table[_SOCKET_EXEC_COMMAND_MAX] = { - [SOCKET_EXEC_START_PRE] = "ExecStartPre", - [SOCKET_EXEC_START_CHOWN] = "ExecStartChown", -@@ -3564,6 +3555,4 @@ const UnitVTable socket_vtable = { - [JOB_TIMEOUT] = "Timed out stopping %s.", - }, - }, -- -- .test_start_limit = socket_test_start_limit, - }; -diff --git a/src/core/swap.c b/src/core/swap.c -index b25f68fb7d..3843b19500 100644 ---- a/src/core/swap.c -+++ b/src/core/swap.c -@@ -933,6 +933,12 @@ static int swap_start(Unit *u) { - if (UNIT(other)->job && UNIT(other)->job->state == JOB_RUNNING) - return -EAGAIN; - -+ r = unit_test_start_limit(u); -+ if (r < 0) { -+ swap_enter_dead(s, SWAP_FAILURE_START_LIMIT_HIT); -+ return r; -+ } -+ - r = unit_acquire_invocation_id(u); - if (r < 0) - return r; -@@ -1582,21 +1588,6 @@ static int swap_can_clean(Unit *u, ExecCleanMask *ret) { - return exec_context_get_clean_mask(&s->exec_context, ret); - } - --static int swap_test_start_limit(Unit *u) { -- Swap *s = SWAP(u); -- int r; -- -- assert(s); -- -- r = unit_test_start_limit(u); -- if (r < 0) { -- swap_enter_dead(s, SWAP_FAILURE_START_LIMIT_HIT); -- return r; -- } -- -- return 0; --} -- - static const char* const swap_exec_command_table[_SWAP_EXEC_COMMAND_MAX] = { - [SWAP_EXEC_ACTIVATE] = "ExecActivate", - [SWAP_EXEC_DEACTIVATE] = "ExecDeactivate", -@@ -1692,6 +1683,4 @@ const UnitVTable swap_vtable = { - [JOB_TIMEOUT] = "Timed out deactivating swap %s.", - }, - }, -- -- .test_start_limit = swap_test_start_limit, - }; -diff --git a/src/core/timer.c b/src/core/timer.c -index 5ecc9f35cf..e064ad9a2d 100644 ---- a/src/core/timer.c -+++ b/src/core/timer.c -@@ -635,6 +635,12 @@ static int timer_start(Unit *u) { - if (r < 0) - return r; - -+ r = unit_test_start_limit(u); -+ if (r < 0) { -+ timer_enter_dead(t, TIMER_FAILURE_START_LIMIT_HIT); -+ return r; -+ } -+ - r = unit_acquire_invocation_id(u); - if (r < 0) - return r; -@@ -895,21 +901,6 @@ static int timer_can_clean(Unit *u, ExecCleanMask *ret) { - return 0; - } - --static int timer_test_start_limit(Unit *u) { -- Timer *t = TIMER(u); -- int r; -- -- assert(t); -- -- r = unit_test_start_limit(u); -- if (r < 0) { -- timer_enter_dead(t, TIMER_FAILURE_START_LIMIT_HIT); -- return r; -- } -- -- return 0; --} -- - static const char* const timer_base_table[_TIMER_BASE_MAX] = { - [TIMER_ACTIVE] = "OnActiveSec", - [TIMER_BOOT] = "OnBootSec", -@@ -969,6 +960,4 @@ const UnitVTable timer_vtable = { - .timezone_change = timer_timezone_change, - - .bus_set_property = bus_timer_set_property, -- -- .test_start_limit = timer_test_start_limit, - }; -diff --git a/src/core/unit.c b/src/core/unit.c -index 69ed43578e..38d3eb703f 100644 ---- a/src/core/unit.c -+++ b/src/core/unit.c -@@ -1851,13 +1851,6 @@ int unit_start(Unit *u) { - - assert(u); - -- /* Check start rate limiting early so that failure conditions don't cause us to enter a busy loop. */ -- if (UNIT_VTABLE(u)->test_start_limit) { -- int r = UNIT_VTABLE(u)->test_start_limit(u); -- if (r < 0) -- return r; -- } -- - /* If this is already started, then this will succeed. Note that this will even succeed if this unit - * is not startable by the user. This is relied on to detect when we need to wait for units and when - * waiting is finished. */ -diff --git a/src/core/unit.h b/src/core/unit.h -index 9babd07188..759104ffa7 100644 ---- a/src/core/unit.h -+++ b/src/core/unit.h -@@ -649,10 +649,6 @@ typedef struct UnitVTable { - * of this type will immediately fail. */ - bool (*supported)(void); - -- /* If this function is set, it's invoked first as part of starting a unit to allow start rate -- * limiting checks to occur before we do anything else. */ -- int (*test_start_limit)(Unit *u); -- - /* The strings to print in status messages */ - UnitStatusMessageFormats status_message_formats; - -diff --git a/test/TEST-63-ISSUE-17433/Makefile b/test/TEST-63-ISSUE-17433/Makefile -deleted file mode 120000 -index e9f93b1104..0000000000 ---- a/test/TEST-63-ISSUE-17433/Makefile -+++ /dev/null -@@ -1 +0,0 @@ --../TEST-01-BASIC/Makefile -\ No newline at end of file -diff --git a/test/TEST-63-ISSUE-17433/test.sh b/test/TEST-63-ISSUE-17433/test.sh -deleted file mode 100755 -index c595a9f2de..0000000000 ---- a/test/TEST-63-ISSUE-17433/test.sh -+++ /dev/null -@@ -1,9 +0,0 @@ --#!/usr/bin/env bash --set -e -- --TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/17433" -- --# shellcheck source=test/test-functions --. "${TEST_BASE_DIR:?}/test-functions" -- --do_test "$@" -diff --git a/test/meson.build b/test/meson.build -index 6f8f257c2d..47c7f4d49a 100644 ---- a/test/meson.build -+++ b/test/meson.build -@@ -33,8 +33,6 @@ if install_tests - install_dir : testdata_dir) - install_subdir('testsuite-52.units', - install_dir : testdata_dir) -- install_subdir('testsuite-63.units', -- install_dir : testdata_dir) - - testsuite08_dir = testdata_dir + '/testsuite-08.units' - install_data('testsuite-08.units/-.mount', -diff --git a/test/testsuite-10.units/test10.service b/test/testsuite-10.units/test10.service -index 2fb476b986..d0be786b01 100644 ---- a/test/testsuite-10.units/test10.service -+++ b/test/testsuite-10.units/test10.service -@@ -1,9 +1,6 @@ - [Unit] - Requires=test10.socket - ConditionPathExistsGlob=/tmp/nonexistent --# Make sure we hit the socket trigger limit in the test and not the service start limit. --StartLimitInterval=1000 --StartLimitBurst=1000 - - [Service] - ExecStart=true -diff --git a/test/testsuite-63.units/test63.path b/test/testsuite-63.units/test63.path -deleted file mode 100644 -index a6573bda0a..0000000000 ---- a/test/testsuite-63.units/test63.path -+++ /dev/null -@@ -1,2 +0,0 @@ --[Path] --PathExists=/tmp/test63 -diff --git a/test/testsuite-63.units/test63.service b/test/testsuite-63.units/test63.service -deleted file mode 100644 -index c83801874d..0000000000 ---- a/test/testsuite-63.units/test63.service -+++ /dev/null -@@ -1,5 +0,0 @@ --[Unit] --ConditionPathExists=!/tmp/nonexistent -- --[Service] --ExecStart=true -diff --git a/test/units/testsuite-63.service b/test/units/testsuite-63.service -deleted file mode 100644 -index 04122723d4..0000000000 ---- a/test/units/testsuite-63.service -+++ /dev/null -@@ -1,16 +0,0 @@ --[Unit] --Description=TEST-63-ISSUE-17433 -- --[Service] --ExecStartPre=rm -f /failed /testok --Type=oneshot --ExecStart=rm -f /tmp/nonexistent --ExecStart=systemctl start test63.path --ExecStart=touch /tmp/test63 --# Make sure systemd has sufficient time to hit the start limit for test63.service. --ExecStart=sleep 2 --ExecStart=sh -x -c 'test "$(systemctl show test63.service -P ActiveState)" = failed' --ExecStart=sh -x -c 'test "$(systemctl show test63.service -P Result)" = start-limit-hit' --ExecStart=sh -x -c 'test "$(systemctl show test63.path -P ActiveState)" = failed' --ExecStart=sh -x -c 'test "$(systemctl show test63.path -P Result)" = unit-start-limit-hit' --ExecStart=sh -x -c 'echo OK >/testok' |