point in the file system hierarchy, a dependency
between both units is created automatically.</para>
- <para>Unless <varname>DefaultDependencies=</varname>
- is set to <option>false</option>, path units will
- implicitly have dependencies of type
- <varname>Conflicts=</varname> and
+ <para>Unless <varname>DefaultDependencies=false</varname>
+ is used, path units will implicitly have dependencies of
+ type <varname>Conflicts=</varname> and
<varname>Before=</varname> on
<filename>shutdown.target</filename>. These ensure
that path units are terminated cleanly prior to system
shutdown. Only path units involved with early boot or
- late system shutdown should disable this
- option.</para>
+ late system shutdown should disable this option.
+ </para>
</refsect1>
<refsect1>
assignments of these options will not
have any effect.</para>
- <para>If a path is already existing
+ <para>If a path already exists
(in case of
<varname>PathExists=</varname> and
<varname>PathExistsGlob=</varname>) or
activated, then the configured unit is
immediately activated as
well. Something similar does not apply
- to <varname>PathChanged=</varname>.
+ to <varname>PathChanged=</varname> and
+ <varname>PathModified=</varname>.</para>
+
+ <para>If the path itself or any of the
+ containing directories are not
+ accessible, <command>systemd</command>
+ will watch for permission changes and
+ notice that conditions are satisfied
+ when permissions allow that.
</para></listitem>
</varlistentry>
<varlistentry>
s->primary_wd = inotify_add_watch(s->inotify_fd, k, flags_table[s->type]);
if (s->primary_wd >= 0)
exists = true;
+ else if (errno != EACCES && errno != ENOENT) {
+ log_error("Failed to add watch on %s: %m", k);
+ r = -errno;
+ goto fail;
+ }
do {
int flags;
if (inotify_add_watch(s->inotify_fd, k, flags) >= 0)
exists = true;
+ else if (errno != EACCES && errno != ENOENT) {
+ log_error("Failed to add watch on %s: %m", k);
+ r = -errno;
+ goto fail;
+ }
} while (slash != k);
+ if (!exists) {
+ log_error("Failed to add watch on any of the components of %s: %m",
+ s->path);
+ r = -errno;
+ goto fail;
+ }
+
return 0;
fail: