]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
logind: process session/inhibitor fds at higher priority
authorLennart Poettering <lennart@poettering.net>
Wed, 4 May 2016 17:01:56 +0000 (19:01 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 5 May 2016 20:50:09 +0000 (22:50 +0200)
Let's make sure we process session and inhibitor pipe fds (that signal
sessions/inhibtors going away) at a higher priority
than new bus calls that might create new sessions or inhibitors. This helps
ensuring that the number of open sessions stays minimal.

src/login/logind-inhibit.c
src/login/logind-session.c
src/login/logind.c

index a0e3ba2b7cd20e3df8547ae3d11381244335377f..6c78e0dddc9f0d8e255a2e2b2d0614001750084a 100644 (file)
@@ -317,7 +317,7 @@ int inhibitor_create_fifo(Inhibitor *i) {
                 if (r < 0)
                         return r;
 
-                r = sd_event_source_set_priority(i->event_source, SD_EVENT_PRIORITY_IDLE);
+                r = sd_event_source_set_priority(i->event_source, SD_EVENT_PRIORITY_IDLE-10);
                 if (r < 0)
                         return r;
         }
index a8b1d5943dbbd9084b807fadd1f90d377fdf10fa..d2f1f7bc62b732a9bbd2ee87421ef88d5f60443c 100644 (file)
@@ -897,7 +897,9 @@ int session_create_fifo(Session *s) {
                 if (r < 0)
                         return r;
 
-                r = sd_event_source_set_priority(s->fifo_event_source, SD_EVENT_PRIORITY_IDLE);
+                /* Let's make sure we noticed dead sessions before we process new bus requests (which might create new
+                 * sessions). */
+                r = sd_event_source_set_priority(s->fifo_event_source, SD_EVENT_PRIORITY_NORMAL-10);
                 if (r < 0)
                         return r;
         }
index 39f53cab360ac62c220f7f1e7dc9eca964c043ef..64bd1ca582033eeb7f5ba25d0fd9f2bde589a2e4 100644 (file)
@@ -687,7 +687,7 @@ static int manager_connect_bus(Manager *m) {
         if (r < 0)
                 return log_error_errno(r, "Failed to register name: %m");
 
-        r = sd_bus_attach_event(m->bus, m->event, 0);
+        r = sd_bus_attach_event(m->bus, m->event, SD_EVENT_PRIORITY_NORMAL);
         if (r < 0)
                 return log_error_errno(r, "Failed to attach bus to event loop: %m");