[systemd-devel] Why systemd-journald is creating '/var/log/journal/machine_id" directory when Storage=auto

Nishant Nayan nayan.nishant2000 at gmail.com
Sun Aug 29 10:58:45 UTC 2021


I was looking into the code of systemd-journald and found this (in
system_journal_open() ) :-

if (!s->system_journal && IN_SET(s->storage, STORAGE_PERSISTENT,
STORAGE_AUTO) && (flush_requested || flushed_flag_is_set())) {

            /* If in auto mode: first try to create the machine
             * path, but not the prefix.
             *
             * If in persistent mode: create /var/log/journal and
             * the machine path */

            if (s->storage == STORAGE_PERSISTENT)
                    (void) mkdir_p("/var/log/journal/", 0755);

            (void) mkdir(s->system_storage.path, 0755);

            fn = strjoina(s->system_storage.path, "/system.journal");

Here, system_storage.path is set to "strjoin("/var/log/journal/",
SERVER_MACHINE_ID(s));" in previous function call.

As far as I understood its saying to create '/var/log/journal' directory
when storage is set to 'persistent'.

But in either of the cases (persistent or auto) why is it creating
'/var/log/journal/machine_id' directory ( (void)
mkdir(s->system_storage.path, 0755); ) ??

'auto' will store logs persistently if '/var/log/journal' is created
beforehand or else logs will be written in '/run/log/journal' .

For 'auto' it should not create '/var/log/journal/machine_id' directory
right?

Also after reading the comment, how is it possible to create
'/var/log/journal/machine_id' without creating the prefix? I am assuming
'/var/log/journal' is the prefix .
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20210829/68f82a39/attachment.htm>


More information about the systemd-devel mailing list