summaryrefslogtreecommitdiff
path: root/sys-apps/systemd/files/249.5-revert-unit-start-rate-limiting.patch
diff options
context:
space:
mode:
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.patch483
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'