]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/core/service.c
journal: set the _SYSTEMD_UNIT field for messages from terminated processes
authorEelco Dolstra <eelco.dolstra@logicblox.com>
Thu, 21 Jun 2012 20:40:47 +0000 (16:40 -0400)
committerLennart Poettering <lennart@poettering.net>
Thu, 21 Jun 2012 22:14:08 +0000 (00:14 +0200)
commit62bca2c657bf95fd1f69935eef09915afa5c69d9
tree7b961f5226951bea9a7470f2ecbaedbe588c6287
parent3b0810c53c6adfa2f436540369b8969ae75d7fcf
journal: set the _SYSTEMD_UNIT field for messages from terminated processes

As described in

  https://bugs.freedesktop.org/show_bug.cgi?id=50184

the journal currently doesn't set fields such as _SYSTEMD_UNIT
properly for messages coming from processes that have already
terminated.  This means among other things that "systemctl status" may
not show some of the output of services that wrote messages just
before they exited.

This patch fixes this by having processes that log to the journal
write their unit identifier to journald when the connection to
/run/systemd/journal/stdout is opened.  Journald stores the unit ID
and uses it to fill in _SYSTEMD_UNIT when it cannot be obtained
normally (i.e. from the cgroup).  To prevent impersonating another
unit, this information is only used when the caller is root.

This doesn't fix the general problem of getting metadata about
messages from terminated processes (which requires some kernel
support), but it allows "systemctl status" and similar queries to do
the Right Thing for units that log via stdout/stderr.
src/core/execute.c
src/core/execute.h
src/core/mount.c
src/core/service.c
src/core/socket.c
src/core/swap.c
src/journal/journald.c