summaryrefslogtreecommitdiff
path: root/src/core/mount.c
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2013-08-19 17:45:24 +0800
committerTom Gundersen <teg@jklm.no>2013-09-11 14:40:59 +0200
commit5073f89f102d98c27c4f3aefb5643b50a5301d10 (patch)
tree0aa4a089de545a869f44419634c0d37d843fd1bf /src/core/mount.c
parentb56a422a919ec5a12f8fa7f9dfc63f7d88c6a077 (diff)
mount: move device links handling from generator
This makes mount units work like swap units: when the backing device appears the mount unit will be started. v2: the device should want the mount unconditionally, not only for DefaultDependencies=yes
Diffstat (limited to 'src/core/mount.c')
-rw-r--r--src/core/mount.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/core/mount.c b/src/core/mount.c
index c7d29b0c88..d436a84606 100644
--- a/src/core/mount.c
+++ b/src/core/mount.c
@@ -338,6 +338,12 @@ static bool mount_is_bind(MountParameters *p) {
return false;
}
+static bool mount_is_auto(MountParameters *p) {
+ assert(p);
+
+ return !mount_test_option(p->options, "noauto");
+}
+
static bool needs_quota(MountParameters *p) {
assert(p);
@@ -356,6 +362,7 @@ static bool needs_quota(MountParameters *p) {
static int mount_add_device_links(Mount *m) {
MountParameters *p;
+ bool device_wants_mount = false;
int r;
assert(m);
@@ -376,7 +383,10 @@ static int mount_add_device_links(Mount *m) {
if (path_equal(m->where, "/"))
return 0;
- r = unit_add_node_link(UNIT(m), p->what, false);
+ if (mount_is_auto(p) && UNIT(m)->manager->running_as == SYSTEMD_SYSTEM)
+ device_wants_mount = true;
+
+ r = unit_add_node_link(UNIT(m), p->what, device_wants_mount);
if (r < 0)
return r;