summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/mount.c17
-rw-r--r--src/core/special.h1
2 files changed, 14 insertions, 4 deletions
diff --git a/src/core/mount.c b/src/core/mount.c
index 0adf04e9bf..c4074ebd2e 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -441,7 +441,7 @@ static int mount_add_quota_links(Mount *m) {
static int mount_add_default_dependencies(Mount *m) {
int r;
MountParameters *p;
- const char *after;
+ const char *after, *setup;
assert(m);
@@ -456,15 +456,24 @@ static int mount_add_default_dependencies(Mount *m) {
if (path_equal(m->where, "/"))
return 0;
- if (mount_is_network(p))
+ if (mount_is_network(p)) {
after = SPECIAL_REMOTE_FS_PRE_TARGET;
- else
+ setup = SPECIAL_REMOTE_FS_SETUP_TARGET;
+ } else {
after = SPECIAL_LOCAL_FS_PRE_TARGET;
+ setup = NULL;
+ }
- r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_WANTS, UNIT_AFTER, after, NULL, true);
+ r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true);
if (r < 0)
return r;
+ if (setup) {
+ r = unit_add_dependency_by_name(UNIT(m), UNIT_WANTS, setup, NULL, true);
+ if (r < 0)
+ return r;
+ }
+
r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
if (r < 0)
return r;
diff --git a/src/core/special.h b/src/core/special.h
index ad873a9c31..dae7446d73 100644
--- a/src/core/special.h
+++ b/src/core/special.h
@@ -54,6 +54,7 @@
#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_BASIC_TARGET "basic.target"