On Sat, Aug 29, 2026 at 12:28:32PM +0100, Mark Hindley wrote:
> So, (iii) is the way to go, irrespective of the work.

In the first instance, I wonder if the changes to
manager_get_session_by_pidref() are misplaced. Reverting them to elogind
upstream at least passes a compile test. I'll have to set up a test
environment. But you might want to try the attached patch.

Mark

commit 83b0ef382d2d043a58107862d0917b40e02cf8ca
Author: Mark Hindley <[email protected]>
Date:   Sat Aug 29 13:10:18 2026 +0100

    Drop changes in manager_get_session_by_pidref.

diff --git a/debian/patches/Use-libsystemd0-compatible-cgroups-layout.patch 
b/debian/patches/Use-libsystemd0-compatible-cgroups-layout.patch
index 7955fe73ec..9dcec5eac6 100644
--- a/debian/patches/Use-libsystemd0-compatible-cgroups-layout.patch
+++ b/debian/patches/Use-libsystemd0-compatible-cgroups-layout.patch
@@ -404,54 +404,6 @@ index 80c3282..40bc721 100644
  
  int unit_name_build(const char *prefix, const char *instance, const char 
*suffix, char **ret);
  int unit_name_build_from_type(const char *prefix, const char *instance, 
UnitType, char **ret);
-diff --git a/src/login/logind-core.c b/src/login/logind-core.c
-index 7807a49..63d2112 100644
---- a/src/login/logind-core.c
-+++ b/src/login/logind-core.c
-@@ -372,11 +372,11 @@ int manager_process_button_device(Manager *m, sd_device 
*d) {
- }
- 
- int manager_get_session_by_pidref(Manager *m, const PidRef *pid, Session 
**ret) {
--#if 0 /// elogind does not support systemd units, but its own session system
-+#if LIBSYSTEMD_COMPATIBLE_CGROUPS /// elogind does not support systemd units, 
but its own session system
-         _cleanup_free_ char *unit = NULL;
--#else // 0
-+#else // LIBSYSTEMD_COMPATIBLE_CGROUPS
-         _cleanup_free_ char *session_name = NULL;
--#endif // 0
-+#endif // LIBSYSTEMD_COMPATIBLE_CGROUPS
-         Session *s;
-         int r;
- 
-@@ -385,13 +385,14 @@ int manager_get_session_by_pidref(Manager *m, const 
PidRef *pid, Session **ret)
-         if (!pidref_is_set(pid))
-                 return -EINVAL;
- 
-+
-         s = hashmap_get(m->sessions_by_leader, pid);
-         if (s) {
--                r = pidref_verify(pid);
--                if (r < 0)
--                        return r;
--        } else {
--#if 0 /// elogind does not support systemd units, but its own session system
-+               r = pidref_verify(pid);
-+               if (r < 0)
-+                       return r;
-+       } else  {
-+#ifdef LIBSYSTEMD_COMPATIBLE_CGROUPS /// elogind does not support systemd 
units, but its own session system
-                 r = cg_pidref_get_unit(pid, &unit);
-                 if (r >= 0)
-                         s = hashmap_get(m->session_units, unit);
-@@ -404,7 +405,7 @@ int manager_get_session_by_pidref(Manager *m, const PidRef 
*pid, Session **ret)
- 
-                 log_debug_elogind("Session Name \"%s\" -> Session \"%s\"",
-                                   strnull(session_name), s && s->id ? s->id : 
"(null)");
--#endif // 0
-+#endif // LIBSYSTEMD_COMPATIBLE_CGROUPS
-         }
- 
-         if (ret)
 diff --git a/src/login/logind-session.c b/src/login/logind-session.c
 index 4a2cde9..b13ddb4 100644
 --- a/src/login/logind-session.c

Reply via email to