]> git.ipfire.org Git - thirdparty/systemd.git/commit
core/path: fix spurious triggering of PathExists= on restart/reload 14030/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 18 Nov 2019 13:20:05 +0000 (14:20 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 18 Nov 2019 13:20:05 +0000 (14:20 +0100)
commitd7cf8c24d4ef6ed4c9d711ee82ba57a529baad34
tree71977d4dd01408defd05f725f6607279542f5585
parent7a16cd4b05cc3e975d90aee72ed9d77ada22a093
core/path: fix spurious triggering of PathExists= on restart/reload

Our handling of the condition was inconsistent. Normally, we'd only fire when
the file was created (or removed and subsequently created again). But on restarts,
we'd do a "recheck" from path_coldplug(), and if the file existed, we'd
always trigger. Daemon restarts and reloads should not be observeable, in
the sense that they should not trigger units which were already triggered and
would not be started again under normal circumstances.

Note that the mechanism for checks is racy: we get a notification from inotify,
and by the time we check, the file could have been created and removed again,
or removed and created again. It would be better if we inotify would give as
an unambiguous signal that the file was created, but it doesn't: IN_DELETE_SELF
triggers on inode removal, not directory entry, so we need to include IN_ATTRIB,
which obviously triggers on other conditions.

Fixes #12801.
src/core/path.c