units: introduce local-fs-pre.target and remote-fs-pre.target

This hook target enables services to order themselves between
network.target and remote mounts, which is needed for GFS2 and similar
systems.
This commit is contained in:
Lennart Poettering 2011-10-11 03:33:53 +02:00
parent 80cc5aeeba
commit 21e557edcc
4 changed files with 34 additions and 2 deletions

View file

@ -337,7 +337,9 @@ dist_systemunit_DATA = \
units/halt.target \
units/kexec.target \
units/local-fs.target \
units/local-fs-pre.target \
units/remote-fs.target \
units/remote-fs-pre.target \
units/cryptsetup.target \
units/network.target \
units/nss-lookup.target \

View file

@ -59,6 +59,7 @@
<filename>halt.target</filename>,
<filename>kbrequest.target</filename>,
<filename>local-fs.target</filename>,
<filename>local-fs-pre.target</filename>,
<filename>mail-transfer-agent.target</filename>,
<filename>multi-user.target</filename>,
<filename>network.target</filename>,
@ -66,6 +67,7 @@
<filename>poweroff.target</filename>,
<filename>reboot.target</filename>,
<filename>remote-fs.target</filename>,
<filename>remote-fs-pre.target</filename>,
<filename>rescue.target</filename>,
<filename>rpcbind.target</filename>,
<filename>runlevel2.target</filename>,
@ -260,6 +262,18 @@
facility.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>local-fs-pre.target</filename></term>
<listitem>
<para>This target unit is
automatically ordered before
all local mount points marked
with <option>auto</option>
(see above). It can be used to
execute certain units before
all local mounts.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>mail-transfer-agent.target</filename></term>
<listitem>
@ -373,6 +387,18 @@
facility.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>remote-fs-pre.target</filename></term>
<listitem>
<para>This target unit is
automatically ordered before
all remote mount points marked
with <option>auto</option>
(see above). It can be used to
execute certain units before
all remote mounts.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>rescue.target</filename></term>
<listitem>

View file

@ -357,9 +357,11 @@ static int mount_add_fstab_links(Mount *m) {
if (mount_is_network(p)) {
target = SPECIAL_REMOTE_FS_TARGET;
after = SPECIAL_NETWORK_TARGET;
} else
after = SPECIAL_REMOTE_FS_PRE_TARGET;
} else {
target = SPECIAL_LOCAL_FS_TARGET;
after = SPECIAL_LOCAL_FS_PRE_TARGET;
}
if (!path_equal(m->where, "/"))
if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)

View file

@ -45,7 +45,9 @@
#define SPECIAL_SYSINIT_TARGET "sysinit.target"
#define SPECIAL_SOCKETS_TARGET "sockets.target"
#define SPECIAL_LOCAL_FS_TARGET "local-fs.target" /* LSB's $local_fs */
#define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target"
#define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */
#define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target"
#define SPECIAL_SWAP_TARGET "swap.target"
#define SPECIAL_BASIC_TARGET "basic.target"