unit: replace remote-fs-setup.target by network-online.target

https://bugzilla.redhat.com/show_bug.cgi?id=787314
This commit is contained in:
Lennart Poettering 2013-03-28 21:18:58 +01:00
parent 78a0460588
commit 0c17fbce55
6 changed files with 111 additions and 55 deletions

View File

@ -355,8 +355,8 @@ dist_systemunit_DATA = \
units/initrd-root-fs.target \
units/remote-fs.target \
units/remote-fs-pre.target \
units/remote-fs-setup.target \
units/network.target \
units/network-online.target \
units/nss-lookup.target \
units/nss-user-lookup.target \
units/hibernate.target \

View File

@ -71,6 +71,7 @@
<filename>local-fs-pre.target</filename>,
<filename>multi-user.target</filename>,
<filename>network.target</filename>,
<filename>network-online.target</filename>,
<filename>nss-lookup.target</filename>,
<filename>nss-user-lookup.target</filename>,
<filename>paths.target</filename>,
@ -79,7 +80,6 @@
<filename>reboot.target</filename>,
<filename>remote-fs.target</filename>,
<filename>remote-fs-pre.target</filename>,
<filename>remote-fs-setup.target</filename>,
<filename>rescue.target</filename>,
<filename>initrd-root-fs.target</filename>,
<filename>rpcbind.target</filename>,
@ -387,6 +387,67 @@
section.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>network-online.target</filename></term>
<listitem>
<para>Units that strictly
require a configured network
connection should pull in
<filename>network-online.target</filename>
(via a
<varname>Wants=</varname> type
dependency) and order
themselves after it. This
target unit is intended to
pull in a service that delays
further execution until the
network is sufficiently set
up. What precisely this
requires is left to the
implementation of the network
managing service.</para>
<para>Note the distinction
between this unit and
<filename>network.target</filename>. This
unit is an active unit
(i.e. pulled in by the
consumer rather than the
provider of this
functionality) and pulls in a
service which possibly adds
substantial delays to further
execution. In contrast,
<filename>network.target</filename>
is a passive unit (i.e. pulled
in by the provider of the
functionality, rather than the
consumer) that usually does
not delay execution
much. Usually,
<filename>network.target</filename>
is part of the boot of most
systems, while
<filename>network-online.target</filename>
is not, except when at least
one unit requires it. Also see
<ulink
url="http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running
Services After the Network is
up</ulink> for more
information.</para>
<para>All mount units for
remote network file systems
automatically pull in this
unit, and order themselves
after it. Note that networking
daemons that simply provide
functionality to other hosts
generally don't need to pull
this in.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>paths.target</filename></term>
<listitem>
@ -458,29 +519,6 @@
facility.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>remote-fs-setup.target</filename></term>
<listitem>
<para>This target unit is
automatically pulled in (by a
<varname>Wants=</varname> type
dependency) by all remote
mount points. It can be used
to run certain units when at
least one remote file system
is to be mounted. Note that
this target is not ordered
against the remote mounts, use
<filename>remote-fs-pre.target</filename>
for that (see below).</para>
<para>Again, this target unit
is <emphasis>not</emphasis>
suitable for ordering, it is
only useful for pulling in
other units.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>rescue.target</filename></term>
<listitem>
@ -812,6 +850,26 @@
<varlistentry>
<term><filename>network.target</filename></term>
<listitem>
<para>This unit is supposed to
indicate when network
functionality is available,
but it is only very weakly
defined what that is supposed
to mean, with one exception:
at shutdown, a unit that is
ordered after
<filename>network.target</filename>
will be stopped before the
network -- to whatever level
it might be set up then -- is
shut down. Also see <ulink
url="http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running
Services After the Network is
up</ulink> for more
information. Also see
<filename>network-online.target</filename>
described above.</para>
<para>systemd automatically
adds dependencies of type
<varname>After=</varname> for
@ -821,15 +879,6 @@
<literal>$network</literal>
facility.</para>
<para>This unit is supposed to
indicate when the network is
"up", but it is only very
loosely defined what that is
supposed to mean. Also see <ulink
url="http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running
Services After the Network is
up</ulink> for more
information.</para>
</listitem>
</varlistentry>
<varlistentry>

View File

@ -439,9 +439,9 @@ static int mount_add_quota_links(Mount *m) {
}
static int mount_add_default_dependencies(Mount *m) {
int r;
const char *after, *after2, *online;
MountParameters *p;
const char *after, *after2, *setup;
int r;
assert(m);
@ -459,11 +459,11 @@ static int mount_add_default_dependencies(Mount *m) {
if (mount_is_network(p)) {
after = SPECIAL_REMOTE_FS_PRE_TARGET;
after2 = SPECIAL_NETWORK_TARGET;
setup = SPECIAL_REMOTE_FS_SETUP_TARGET;
online = SPECIAL_NETWORK_ONLINE_TARGET;
} else {
after = SPECIAL_LOCAL_FS_PRE_TARGET;
after2 = NULL;
setup = NULL;
online = NULL;
}
r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true);
@ -476,8 +476,8 @@ static int mount_add_default_dependencies(Mount *m) {
return r;
}
if (setup) {
r = unit_add_dependency_by_name(UNIT(m), UNIT_WANTS, setup, NULL, true);
if (online) {
r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_WANTS, UNIT_AFTER, online, NULL, true);
if (r < 0)
return r;
}

View File

@ -54,8 +54,8 @@
#define SPECIAL_INITRD_ROOT_FS_TARGET "initrd-root-fs.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_REMOTE_FS_SETUP_TARGET "remote-fs-setup.target"
#define SPECIAL_SWAP_TARGET "swap.target"
#define SPECIAL_NETWORK_ONLINE_TARGET "network-online.target"
#define SPECIAL_BASIC_TARGET "basic.target"
/* LSB compatibility */

View File

@ -210,8 +210,9 @@ static int add_mount(
bool automount,
bool isbind,
const char *pre,
const char *pre2,
const char *online,
const char *post,
const char *setup,
const char *source) {
char _cleanup_free_
*name = NULL, *unit = NULL, *lnk = NULL, *device = NULL,
@ -267,10 +268,17 @@ static int add_mount(
"After=%s\n",
pre);
if (setup)
if (pre2)
fprintf(f,
"After=%s\n",
pre2);
if (online)
fprintf(f,
"After=%s\n"
"Wants=%s\n",
setup);
online,
online);
fprintf(f,
"Conflicts=" SPECIAL_UMOUNT_TARGET "\n"
@ -439,7 +447,7 @@ static int parse_fstab(const char *prefix, bool initrd) {
k = add_swap(what, me);
else {
bool noauto, nofail, automount, isbind;
const char *pre, *post, *setup;
const char *pre, *pre2, *post, *online;
noauto = !!hasmntopt(me, "noauto");
nofail = !!hasmntopt(me, "nofail");
@ -449,26 +457,25 @@ static int parse_fstab(const char *prefix, bool initrd) {
isbind = mount_is_bind(me);
if (initrd) {
pre = pre2 = online = NULL;
post = SPECIAL_INITRD_FS_TARGET;
pre = NULL;
setup = NULL;
} else if (mount_in_initrd(me)) {
pre = pre2 = online = NULL;
post = SPECIAL_INITRD_ROOT_FS_TARGET;
pre = NULL;
setup = NULL;
} else if (mount_is_network(me)) {
post = SPECIAL_REMOTE_FS_TARGET;
pre = SPECIAL_REMOTE_FS_PRE_TARGET;
setup = SPECIAL_REMOTE_FS_SETUP_TARGET;
pre2 = SPECIAL_NETWORK_TARGET;
online = SPECIAL_NETWORK_ONLINE_TARGET;
post = SPECIAL_REMOTE_FS_TARGET;
} else {
post = SPECIAL_LOCAL_FS_TARGET;
pre = SPECIAL_LOCAL_FS_PRE_TARGET;
setup = NULL;
pre2 = online = NULL;
post = SPECIAL_LOCAL_FS_TARGET;
}
k = add_mount(what, where, me->mnt_type, me->mnt_opts,
me->mnt_passno, noauto, nofail, automount,
isbind, pre, post, setup, fstab_path);
isbind, pre, pre2, online, post, fstab_path);
}
if (k < 0)
@ -552,7 +559,7 @@ static int parse_new_root_from_proc_cmdline(void) {
log_debug("Found entry what=%s where=/sysroot type=%s", what, type);
r = add_mount(what, "/sysroot", type, opts, 0, false, false, false,
false, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, NULL, "/proc/cmdline");
false, NULL, NULL, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, "/proc/cmdline");
return (r < 0) ? r : 0;
}