5c5d01915a
Porting 851/909/910/913/919/920/922/923/924/925/926/927 patches to debian, other patches are confirmed in debian version. Story: 2009221 Task: 43416 Signed-off-by: Yue Tao <yue.tao@windriver.com> Change-Id: I5af677c90342bae7c30991bf465e0db79c71667d
102 lines
3.3 KiB
Diff
102 lines
3.3 KiB
Diff
From 71552a073ed08beb227b9b007fb9818f08923baa Mon Sep 17 00:00:00 2001
|
|
From: Li Zhou <li.zhou@windriver.com>
|
|
Date: Tue, 26 Oct 2021 11:46:48 +0800
|
|
Subject: [PATCH 6/6] sd-event: always reshuffle time prioq on changing
|
|
online/offline state
|
|
|
|
Before 81107b8419c39f726fd2805517a5b9faab204e59, the compare functions
|
|
for the latest or earliest prioq did not handle ratelimited flag.
|
|
So, it was ok to not reshuffle the time prioq when changing the flag.
|
|
|
|
But now, those two compare functions also compare the source is
|
|
ratelimited or not. So, it is necessary to reshuffle the time prioq
|
|
after changing the ratelimited flag.
|
|
|
|
Hopefully fixes #19903.
|
|
|
|
(cherry picked from commit 2115b9b6629eeba7bc9f42f757f38205febb1cb7)
|
|
|
|
Related: #1984406
|
|
|
|
[commit f5611a22d4a65ef440352792085774ce898adb0f from
|
|
https://github.com/systemd-rhel/rhel-8/ (branch rhel-8.4.0)
|
|
|
|
LZ: Adapt the patch for context changes and no real change on the
|
|
patch.]
|
|
|
|
Signed-off-by: Li Zhou <li.zhou@windriver.com>
|
|
---
|
|
src/libsystemd/sd-event/sd-event.c | 33 ++++++++++--------------------
|
|
1 file changed, 11 insertions(+), 22 deletions(-)
|
|
|
|
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
|
|
index 6215bac..c17b368 100644
|
|
--- a/src/libsystemd/sd-event/sd-event.c
|
|
+++ b/src/libsystemd/sd-event/sd-event.c
|
|
@@ -2370,14 +2370,6 @@ static int event_source_offline(
|
|
source_io_unregister(s);
|
|
break;
|
|
|
|
- case SOURCE_TIME_REALTIME:
|
|
- case SOURCE_TIME_BOOTTIME:
|
|
- case SOURCE_TIME_MONOTONIC:
|
|
- case SOURCE_TIME_REALTIME_ALARM:
|
|
- case SOURCE_TIME_BOOTTIME_ALARM:
|
|
- event_source_time_prioq_reshuffle(s);
|
|
- break;
|
|
-
|
|
case SOURCE_SIGNAL:
|
|
event_gc_signal_data(s->event, &s->priority, s->signal.sig);
|
|
break;
|
|
@@ -2398,6 +2390,11 @@ static int event_source_offline(
|
|
prioq_reshuffle(s->event->exit, s, &s->exit.prioq_index);
|
|
break;
|
|
|
|
+ case SOURCE_TIME_REALTIME:
|
|
+ case SOURCE_TIME_BOOTTIME:
|
|
+ case SOURCE_TIME_MONOTONIC:
|
|
+ case SOURCE_TIME_REALTIME_ALARM:
|
|
+ case SOURCE_TIME_BOOTTIME_ALARM:
|
|
case SOURCE_DEFER:
|
|
case SOURCE_POST:
|
|
case SOURCE_INOTIFY:
|
|
@@ -2407,6 +2404,9 @@ static int event_source_offline(
|
|
assert_not_reached("Wut? I shouldn't exist.");
|
|
}
|
|
|
|
+ /* Always reshuffle time prioq, as the ratelimited flag may be changed. */
|
|
+ event_source_time_prioq_reshuffle(s);
|
|
+
|
|
return 1;
|
|
}
|
|
|
|
@@ -2496,22 +2496,11 @@ static int event_source_online(
|
|
s->ratelimited = ratelimited;
|
|
|
|
/* Non-failing operations below */
|
|
- switch (s->type) {
|
|
- case SOURCE_TIME_REALTIME:
|
|
- case SOURCE_TIME_BOOTTIME:
|
|
- case SOURCE_TIME_MONOTONIC:
|
|
- case SOURCE_TIME_REALTIME_ALARM:
|
|
- case SOURCE_TIME_BOOTTIME_ALARM:
|
|
- event_source_time_prioq_reshuffle(s);
|
|
- break;
|
|
-
|
|
- case SOURCE_EXIT:
|
|
+ if (s->type == SOURCE_EXIT)
|
|
prioq_reshuffle(s->event->exit, s, &s->exit.prioq_index);
|
|
- break;
|
|
|
|
- default:
|
|
- break;
|
|
- }
|
|
+ /* Always reshuffle time prioq, as the ratelimited flag may be changed. */
|
|
+ event_source_time_prioq_reshuffle(s);
|
|
|
|
return 1;
|
|
}
|
|
--
|
|
2.17.1
|
|
|