9fc0f6
From 3bdb6f693180ae6a64af158ddf23fb1335380e48 Mon Sep 17 00:00:00 2001
9fc0f6
From: Dan McGee <dan@archlinux.org>
9fc0f6
Date: Sun, 8 Dec 2013 13:27:05 -0600
9fc0f6
Subject: [PATCH] Ensure unit is journaled for short-lived or oneshot processes
9fc0f6
9fc0f6
In the time it takes to process incoming log messages, the process we
9fc0f6
are logging details for may exit. This means the cgroup data is no
9fc0f6
longer available from '/proc'. Unfortunately, the way the code was
9fc0f6
structured before, we never log _SYSTEMD_UNIT if we don't have this
9fc0f6
cgroup information.
9fc0f6
9fc0f6
Add an else if case that allows the passed in unit_id to be logged even
9fc0f6
if we couldn't capture cgroup information. This ensures a command like
9fc0f6
`journalctl -u run-XXX` will return all log messages from a oneshot
9fc0f6
process.
9fc0f6
---
9fc0f6
 src/journal/journald-server.c | 3 +++
9fc0f6
 1 file changed, 3 insertions(+)
9fc0f6
9fc0f6
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
9fc0f6
index a0a8e9c..1fcb3d5 100644
9fc0f6
--- a/src/journal/journald-server.c
9fc0f6
+++ b/src/journal/journald-server.c
9fc0f6
@@ -626,6 +626,9 @@ static void dispatch_message_real(
9fc0f6
                         }
9fc0f6
 
9fc0f6
                         free(c);
9fc0f6
+                } else if (unit_id) {
9fc0f6
+                        x = strappenda("_SYSTEMD_UNIT=", unit_id);
9fc0f6
+                        IOVEC_SET_STRING(iovec[n++], x);
9fc0f6
                 }
9fc0f6
 
9fc0f6
 #ifdef HAVE_SELINUX