diff options
author | Tom Gundersen <teg@jklm.no> | 2013-08-19 17:45:24 +0800 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2013-09-11 14:40:59 +0200 |
commit | 5073f89f102d98c27c4f3aefb5643b50a5301d10 (patch) | |
tree | 0aa4a089de545a869f44419634c0d37d843fd1bf /src/core/mount.c | |
parent | b56a422a919ec5a12f8fa7f9dfc63f7d88c6a077 (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.c | 12 |
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; |