Now, when default dependencies are enabled for a mount unit it will be WantedBy
the respective devices.
---
src/core/mount.c | 13 +++-
src/fstab-generator/fstab-generator.c | 40 +++
2 files changed, 15 insertions(+), 38 deletions(-)
diff --git a/src/core/mount.c b/src/core/mount.c
index c7d29b0..566b3f6 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,11 @@ 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 (UNIT(m)-default_dependencies 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;
diff --git a/src/fstab-generator/fstab-generator.c
b/src/fstab-generator/fstab-generator.c
index 6f352d1..e780018 100644
--- a/src/fstab-generator/fstab-generator.c
+++ b/src/fstab-generator/fstab-generator.c
@@ -170,16 +170,6 @@ static int add_swap(const char *what, struct mntent *me) {
return 0;
}
-static bool mount_is_bind(struct mntent *me) {
-assert(me);
-
-return
-hasmntopt(me, bind) ||
-streq(me-mnt_type, bind) ||
-hasmntopt(me, rbind) ||
-streq(me-mnt_type, rbind);
-}
-
static bool mount_is_network(struct mntent *me) {
assert(me);
@@ -205,14 +195,12 @@ static int add_mount(
bool noauto,
bool nofail,
bool automount,
-bool isbind,
const char *post,
const char *source) {
_cleanup_free_ char
*name = NULL, *unit = NULL, *lnk = NULL, *device = NULL,
*automount_name = NULL, *automount_unit = NULL;
_cleanup_fclose_ FILE *f = NULL;
-int r;
assert(what);
assert(where);
@@ -296,27 +284,6 @@ static int add_mount(
return -errno;
}
}
-
-if (!isbind
-!path_equal(where, /)) {
-
-r = device_name(what, device);
-if (r 0)
-return r;
-
-if (r 0) {
-free(lnk);
-lnk = strjoin(arg_dest, /, device,
.wants/, name, NULL);
-if (!lnk)
-return log_oom();
-
-mkdir_parents_label(lnk, 0755);
-if (symlink(unit, lnk) 0) {
-log_error(Failed to create symlink
%s: %m, lnk);
-return -errno;
-}
-}
-}
}
if (automount !path_equal(where, /)) {
@@ -413,7 +380,7 @@ static int parse_fstab(const char *prefix, bool initrd) {
if (streq(me-mnt_type, swap))
k = add_swap(what, me);
else {
-bool noauto, nofail, automount, isbind;
+bool noauto, nofail, automount;
const char *post;
noauto = !!hasmntopt(me, noauto);
@@ -421,7 +388,6 @@ static int parse_fstab(const char *prefix, bool initrd) {
automount =
hasmntopt(me, comment=systemd.automount) ||
hasmntopt(me, x-systemd.automount);
-isbind = mount_is_bind(me);
if (initrd) {
post = SPECIAL_INITRD_FS_TARGET;
@@ -435,7 +401,7 @@ static int parse_fstab(const char *prefix, bool initrd) {
k = add_mount(what, where, me-mnt_type, me-mnt_opts,
me-mnt_passno, noauto, nofail,
automount,
- isbind, post, fstab_path);
+ post, fstab_path);
}
if (k 0)
@@ -523,7 +489,7 @@ static int parse_new_root_from_proc_cmdline(void) {
log_debug(Found entry