From 1aeea8a60a185c52109db5ecefd8bd6a5893f9c3 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Fri, 26 Jul 2024 15:31:39 +0200 Subject: [PATCH 1/2] logind: DesignatedMaintenanceTime is added in v257 and constant Follow-up for 0e10c3d8724b0a5d07871c9de71565ac91dd55b7 Addresses https://github.com/systemd/systemd/pull/25049#discussion_r1647513862 --- man/org.freedesktop.login1.xml | 8 ++++---- src/login/logind-dbus.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/man/org.freedesktop.login1.xml b/man/org.freedesktop.login1.xml index 1008c59a32..587594fac0 100644 --- a/man/org.freedesktop.login1.xml +++ b/man/org.freedesktop.login1.xml @@ -260,7 +260,7 @@ node /org/freedesktop/login1 { @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly b PreparingForSleep = ...; readonly (st) ScheduledShutdown = ...; - @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") readonly s DesignatedMaintenanceTime = '...'; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly b Docked = ...; @@ -1616,12 +1616,12 @@ node /org/freedesktop/login1/session/1 { CreateSessionWithPIDFD() were added in version 255. Sleep(), CanSleep(), - SleepOperation, - DesignatedMaintenanceTime, and + SleepOperation, and ListSessionsEx() were added in version 256. HandleSecureAttentionKey, + SecureAttentionKey(), PreparingForShutdownWithMetadata, and - SecureAttentionKey() were added in version 257. + DesignatedMaintenanceTime were added in version 257. Session Objects diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 2f60f15131..7222a5121b 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -3750,7 +3750,7 @@ static const sd_bus_vtable manager_vtable[] = { SD_BUS_PROPERTY("PreparingForShutdownWithMetadata", "a{sv}", property_get_preparing_shutdown_with_metadata, 0, 0), SD_BUS_PROPERTY("PreparingForSleep", "b", property_get_preparing, 0, 0), SD_BUS_PROPERTY("ScheduledShutdown", "(st)", property_get_scheduled_shutdown, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), - SD_BUS_PROPERTY("DesignatedMaintenanceTime", "s", property_get_maintenance_time, 0, 0), + SD_BUS_PROPERTY("DesignatedMaintenanceTime", "s", property_get_maintenance_time, 0, SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("Docked", "b", property_get_docked, 0, 0), SD_BUS_PROPERTY("LidClosed", "b", property_get_lid_closed, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), SD_BUS_PROPERTY("OnExternalPower", "b", property_get_on_external_power, 0, 0), From 26f78eff6905179838f311e4f4e2809677c0bb78 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Sat, 17 Aug 2024 18:34:46 +0200 Subject: [PATCH 2/2] logind-session: downgrade user@.service dep to Wants= This partially reverts 52bcc872b5f97a14a9b4e4e383f45bb3066e1643. We explicitly support running without user manager, hence only user-runtime-dir@.service should be required. Fixes #33405 --- src/login/logind-dbus.c | 12 ++++++++++++ src/login/logind-dbus.h | 1 + src/login/logind-session.c | 8 ++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 7222a5121b..b66573f096 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -4353,6 +4353,7 @@ int manager_start_scope( const char *slice, const char *description, const char * const *requires, + const char * const *wants, const char * const *extra_after, const char *requires_mounts_for, sd_bus_message *more_properties, @@ -4402,6 +4403,16 @@ int manager_start_scope( return r; } + STRV_FOREACH(i, wants) { + r = sd_bus_message_append(m, "(sv)", "Wants", "as", 1, *i); + if (r < 0) + return r; + + r = sd_bus_message_append(m, "(sv)", "After", "as", 1, *i); + if (r < 0) + return r; + } + STRV_FOREACH(i, extra_after) { r = sd_bus_message_append(m, "(sv)", "After", "as", 1, *i); if (r < 0) @@ -4464,6 +4475,7 @@ int manager_start_scope( slice, description, requires, + wants, extra_after, requires_mounts_for, more_properties, diff --git a/src/login/logind-dbus.h b/src/login/logind-dbus.h index ebb75abaf3..53e6888f5c 100644 --- a/src/login/logind-dbus.h +++ b/src/login/logind-dbus.h @@ -32,6 +32,7 @@ int manager_start_scope( const char *slice, const char *description, const char * const *requires, + const char * const *wants, const char * const *extra_after, const char *requires_mounts_for, sd_bus_message *more_properties, diff --git a/src/login/logind-session.c b/src/login/logind-session.c index bb77a20b5f..81c8b80dfd 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -749,15 +749,15 @@ static int session_start_scope(Session *s, sd_bus_message *properties, sd_bus_er s->user->slice, description, /* These should have been pulled in explicitly in user_start(). Just to be sure. */ - STRV_MAKE_CONST(s->user->runtime_dir_unit, - SESSION_CLASS_WANTS_SERVICE_MANAGER(s->class) ? s->user->service_manager_unit : NULL), + /* requires = */ STRV_MAKE_CONST(s->user->runtime_dir_unit), + /* wants = */ STRV_MAKE_CONST(SESSION_CLASS_WANTS_SERVICE_MANAGER(s->class) ? s->user->service_manager_unit : NULL), /* We usually want to order session scopes after systemd-user-sessions.service * since the unit is used as login session barrier for unprivileged users. However * the barrier doesn't apply for root as sysadmin should always be able to log in * (and without waiting for any timeout to expire) in case something goes wrong * during the boot process. */ - STRV_MAKE_CONST("systemd-logind.service", - SESSION_CLASS_IS_EARLY(s->class) ? NULL : "systemd-user-sessions.service"), + /* extra_after = */ STRV_MAKE_CONST("systemd-logind.service", + SESSION_CLASS_IS_EARLY(s->class) ? NULL : "systemd-user-sessions.service"), user_record_home_directory(s->user->user_record), properties, error,