01745032e7
This reverts commit 583e744578
.
Reason for revert: Systems with multiple hosts are failing to unlock controller-1 and the computes with those servers halting with an emergency mode prompt. Suspicion is the newer version of systemd has changed behaviour in udev and disk dependencies. It seems to have caused a previous infrequent issue with emergency mode to occur much more frequently. To enable install and sanities to pass we have to revert this commit until the emergency mode issue is fixed first.
Change-Id: I5235843a3d44c93df472313c0166f5918787a761
111 lines
4.3 KiB
Diff
111 lines
4.3 KiB
Diff
From f72ca8a711fc406dc52f18c7dbc3bfc5397b26ea Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Mon, 23 Nov 2020 17:49:27 +0100
|
|
Subject: [PATCH 13/20] sd-event: remove earliest_index/latest_index into
|
|
common part of event source objects
|
|
|
|
So far we used these fields to organize the earliest/latest timer event
|
|
priority queue. In a follow-up commit we want to introduce ratelimiting
|
|
to event sources, at which point we want any kind of event source to be
|
|
able to trigger time wakeups, and hence they all need to be included in
|
|
the earliest/latest prioqs. Thus, in preparation let's make this
|
|
generic.
|
|
|
|
No change in behaviour, just some shifting around of struct members from
|
|
the type-specific to the generic part.
|
|
|
|
(cherry picked from commit f41315fceb5208c496145cda2d6c865a5458ce44)
|
|
|
|
Related: #1819868
|
|
|
|
[commit 97f599bf57fdaee688ae5750e9b2b2587e2b597a from
|
|
https://github.com/systemd-rhel/rhel-8/]
|
|
|
|
Signed-off-by: Li Zhou <li.zhou@windriver.com>
|
|
---
|
|
src/libsystemd/sd-event/sd-event.c | 25 +++++++++++++------------
|
|
1 file changed, 13 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/src/libsystemd/sd-event/event-source.h b/src/libsystemd/sd-event/event-source.h
|
|
index 62d07187a2..189d3b48df 100644
|
|
--- a/src/libsystemd/sd-event/event-source.h
|
|
+++ b/src/libsystemd/sd-event/event-source.h
|
|
@@ -72,6 +72,9 @@ struct sd_event_source {
|
|
|
|
LIST_FIELDS(sd_event_source, sources);
|
|
|
|
+ unsigned earliest_index;
|
|
+ unsigned latest_index;
|
|
+
|
|
union {
|
|
struct {
|
|
sd_event_io_handler_t callback;
|
|
@@ -84,8 +87,6 @@ struct sd_event_source {
|
|
struct {
|
|
sd_event_time_handler_t callback;
|
|
usec_t next, accuracy;
|
|
- unsigned earliest_index;
|
|
- unsigned latest_index;
|
|
} time;
|
|
struct {
|
|
sd_event_signal_handler_t callback;
|
|
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
|
|
index a2f7868..82cb9ad 100644
|
|
--- a/src/libsystemd/sd-event/sd-event.c
|
|
+++ b/src/libsystemd/sd-event/sd-event.c
|
|
@@ -718,8 +718,8 @@ static void event_source_time_prioq_resh
|
|
/* Called whenever the event source's timer ordering properties changed, i.e. time, accuracy,
|
|
* pending, enable state. Makes sure the two prioq's are ordered properly again. */
|
|
assert_se(d = event_get_clock_data(s->event, s->type));
|
|
- prioq_reshuffle(d->earliest, s, &s->time.earliest_index);
|
|
- prioq_reshuffle(d->latest, s, &s->time.latest_index);
|
|
+ prioq_reshuffle(d->earliest, s, &s->earliest_index);
|
|
+ prioq_reshuffle(d->latest, s, &s->latest_index);
|
|
d->needs_rearm = true;
|
|
}
|
|
|
|
@@ -730,9 +730,9 @@ static void event_source_time_prioq_remo
|
|
assert(s);
|
|
assert(d);
|
|
|
|
- prioq_remove(d->earliest, s, &s->time.earliest_index);
|
|
- prioq_remove(d->latest, s, &s->time.latest_index);
|
|
- s->time.earliest_index = s->time.latest_index = PRIOQ_IDX_NULL;
|
|
+ prioq_remove(d->earliest, s, &s->earliest_index);
|
|
+ prioq_remove(d->latest, s, &s->latest_index);
|
|
+ s->earliest_index = s->latest_index = PRIOQ_IDX_NULL;
|
|
d->needs_rearm = true;
|
|
}
|
|
|
|
@@ -1105,14 +1105,14 @@ static int event_source_time_prioq_put(
|
|
assert(s);
|
|
assert(d);
|
|
|
|
- r = prioq_put(d->earliest, s, &s->time.earliest_index);
|
|
+ r = prioq_put(d->earliest, s, &s->earliest_index);
|
|
if (r < 0)
|
|
return r;
|
|
|
|
- r = prioq_put(d->latest, s, &s->time.latest_index);
|
|
+ r = prioq_put(d->latest, s, &s->latest_index);
|
|
if (r < 0) {
|
|
- assert_se(prioq_remove(d->earliest, s, &s->time.earliest_index) > 0);
|
|
- s->time.earliest_index = PRIOQ_IDX_NULL;
|
|
+ assert_se(prioq_remove(d->earliest, s, &s->earliest_index) > 0);
|
|
+ s->earliest_index = PRIOQ_IDX_NULL;
|
|
return r;
|
|
}
|
|
|
|
@@ -1173,7 +1173,7 @@ _public_ int sd_event_add_time(
|
|
s->time.next = usec;
|
|
s->time.accuracy = accuracy == 0 ? DEFAULT_ACCURACY_USEC : accuracy;
|
|
s->time.callback = callback;
|
|
- s->time.earliest_index = s->time.latest_index = PRIOQ_IDX_NULL;
|
|
+ s->earliest_index = s->latest_index = PRIOQ_IDX_NULL;
|
|
s->userdata = userdata;
|
|
s->enabled = SD_EVENT_ONESHOT;
|
|
|
|
--
|
|
2.17.1
|
|
|