From 5073f89f102d98c27c4f3aefb5643b50a5301d10 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 19 Aug 2013 17:45:24 +0800 Subject: 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 --- src/core/mount.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/core/mount.c') 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; -- cgit v1.2.3-54-g00ecf