[systemd-devel] [PATCH 0/7] Make "journalctl -M" work with journals inside overlayfs

Lennart Poettering lennart at poettering.net
Wed Jun 10 16:45:48 PDT 2015


On Mon, 01.06.15 17:28, Krzesimir Nowak (krzesimir at endocode.com) wrote:

For the sake of the archives: further discussion on this patch set now
takes place on gihub:

https://github.com/systemd/systemd/pull/49

> Hi,
> 
> When having a container that keeps its journal inside overlayfs,
> journalctl from host can't access them anymore. The way to fix, as
> proposed by Lennart, was basically journalctl to get file descriptor
> of journal directory from machined and go from there. This situation
> happens inside rkt containers - currently to get logs from them, we
> need to link the journal to host and call journalctl with merge flag,
> journalctl -m _HOSTNAME=<machine-id>
> 
> So, first three commits are some fixes for minor bugs I noticed or
> small refactorings I made during this work.
> 
> Fourth patch adds a GetJournal() method to machine1.Manager which
> takes a machine name and returns a file descriptor. It works by
> entering a mount namespace of machine's leader and getting a
> descriptor of /var/log/journal.
> 
> Fifth and sixth patches convert the JournalFile from being open()ed
> with a path to being openat()ed with dirfd and filename. The fifth
> patch wraps the directory fd and path into a refcounted struct, so
> many JournalFiles actually hold a ref to JournalDirectory instead of
> holding a descriptor. The sixth patch changes the JournalFile to use
> JournalDirectory and all the other sources that were using
> JournalFile. The patch is quite big because of that, sorry about
> that. Maybe you will want to minimize the changes (by preserving
> JournalFile's path member).
> 
> Seventh patch hooks journalctl to machine1.Manager's GetJournal.
> 
> Krzesimir Nowak (7):
>   nspawn, shared: Factor out sending and receiving fd
>   nspawn: Close unneeded sockets in outer child
>   nspawn, machined: Fix comments and error messages related to child
>     failures
>   machined: Add getter for machine's journal directory descriptor
>   journal: Add JournalDirectory
>   journal: Open JournalFile by dirfd and filename instead of path
>   journal: Try getting journal fd from machined
> 
>  Makefile.am                                    |   4 +-
>  src/journal-remote/journal-remote-write.c      |  12 +-
>  src/journal-remote/journal-remote.c            |  34 ++-
>  src/journal/journal-dir.c                      | 141 ++++++++++
>  src/journal/journal-dir.h                      |  37 +++
>  src/journal/journal-file.c                     | 108 +++----
>  src/journal/journal-file.h                     |  10 +-
>  src/journal/journal-internal.h                 |   3 +-
>  src/journal/journal-vacuum.c                   |  27 +-
>  src/journal/journal-vacuum.h                   |   3 +-
>  src/journal/journal-verify.c                   |   4 +-
>  src/journal/journalctl.c                       |   8 +-
>  src/journal/journald-server.c                  | 113 +++++---
>  src/journal/sd-journal.c                       | 376 ++++++++++++++++++-------
>  src/journal/test-journal-flush.c               |  13 +-
>  src/journal/test-journal-interleaving.c        |  55 ++--
>  src/journal/test-journal-stream.c              |  10 +-
>  src/journal/test-journal-verify.c              |  13 +-
>  src/journal/test-journal.c                     |  21 +-
>  src/machine/machine-dbus.c                     |  18 +-
>  src/machine/machined-dbus.c                    | 112 ++++++++
>  src/machine/org.freedesktop.machine1.policy.in |  10 +
>  src/nspawn/nspawn.c                            |  72 +----
>  src/shared/util.c                              |  76 +++++
>  src/shared/util.h                              |   4 +
>  25 files changed, 949 insertions(+), 335 deletions(-)
>  create mode 100644 src/journal/journal-dir.c
>  create mode 100644 src/journal/journal-dir.h
> 
> -- 
> 2.1.0
> 
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list