summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/manager.c5
-rw-r--r--src/core/mount.c7
-rw-r--r--src/core/swap.c7
3 files changed, 19 insertions, 0 deletions
diff --git a/src/core/manager.c b/src/core/manager.c
index c424fece52..ba4dab3b86 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -368,6 +368,11 @@ static int manager_setup_signals(Manager *m) {
if (r < 0)
return r;
+ /* Process signals a bit earlier than the rest of things */
+ r = sd_event_source_set_priority(m->signal_event_source, -5);
+ if (r < 0)
+ return r;
+
if (m->running_as == SYSTEMD_SYSTEM)
return enable_special_signals(m);
diff --git a/src/core/mount.c b/src/core/mount.c
index bf1d433966..634dff19a9 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -1611,6 +1611,13 @@ static int mount_enumerate(Manager *m) {
r = sd_event_add_io(m->event, fileno(m->proc_self_mountinfo), EPOLLPRI, mount_dispatch_io, m, &m->mount_event_source);
if (r < 0)
goto fail;
+
+ /* Dispatch this before we dispatch SIGCHLD, so that
+ * we always get the events from /proc/self/mountinfo
+ * before the SIGCHLD of /bin/mount. */
+ r = sd_event_source_set_priority(m->mount_event_source, -10);
+ if (r < 0)
+ goto fail;
}
r = mount_load_proc_self_mountinfo(m, false);
diff --git a/src/core/swap.c b/src/core/swap.c
index fff613934a..adcf78b717 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -1238,6 +1238,13 @@ static int swap_enumerate(Manager *m) {
r = sd_event_add_io(m->event, fileno(m->proc_swaps), EPOLLPRI, swap_dispatch_io, m, &m->swap_event_source);
if (r < 0)
goto fail;
+
+ /* Dispatch this before we dispatch SIGCHLD, so that
+ * we always get the events from /proc/swaps before
+ * the SIGCHLD of /sbin/swapon. */
+ r = sd_event_source_set_priority(m->swap_event_source, -10);
+ if (r < 0)
+ goto fail;
}
r = swap_load_proc_swaps(m, false);