MountParameters *p;
Unit *tu;
int r;
- bool noauto, handle, automount, user;
+ bool noauto, nofail, handle, automount;
assert(m);
return 0;
noauto = !!mount_test_option(p->options, MNTOPT_NOAUTO);
- user = mount_test_option(p->options, "user") || mount_test_option(p->options, "users");
+ nofail = !!mount_test_option(p->options, "nofail");
handle = !!mount_test_option(p->options, "comment=systemd.mount") ||
m->meta.manager->mount_auto;
automount = !!mount_test_option(p->options, "comment=systemd.automount");
/* Automatically add mount points that aren't natively
* configured to local-fs.target */
if (!noauto &&
+ !nofail &&
handle &&
- !m->from_fragment)
- if (user || m->meta.manager->running_as == MANAGER_SYSTEM)
- if ((r = unit_add_dependency(tu, UNIT_WANTS, UNIT(m), true)) < 0)
- return r;
+ m->from_etc_fstab &&
+ m->meta.manager->running_as == MANAGER_SYSTEM)
+ if ((r = unit_add_dependency(tu, UNIT_WANTS, UNIT(m), true)) < 0)
+ return r;
return unit_add_dependency(UNIT(m), UNIT_BEFORE, tu, true);
}
if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_BEFORE, SPECIAL_QUOTACHECK_SERVICE, NULL, true)) < 0)
return r;
- if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTED_BY, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
+ if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
return r;
}
* dependencies ever. */
if (mount_point_is_api(where))
return 0;
+ if (mount_point_ignore(where))
+ return 0;
if (streq(fstype, "autofs"))
return 0;
return r;
}
-static char *fstab_node_to_udev_node(char *p) {
- char *dn, *t, *u;
- int r;
-
- /* FIXME: to follow udev's logic 100% we need to leave valid
- * UTF8 chars unescaped */
-
- if (startswith(p, "LABEL=")) {
-
- if (!(u = unquote(p+6, "\"\'")))
- return NULL;
-
- t = xescape(u, "/ ");
- free(u);
-
- if (!t)
- return NULL;
-
- r = asprintf(&dn, "/dev/disk/by-label/%s", t);
- free(t);
-
- if (r < 0)
- return NULL;
-
- return dn;
- }
-
- if (startswith(p, "UUID=")) {
-
- if (!(u = unquote(p+5, "\"\'")))
- return NULL;
-
- t = xescape(u, "/ ");
- free(u);
-
- if (!t)
- return NULL;
-
- r = asprintf(&dn, "/dev/disk/by-uuid/%s", ascii_strlower(t));
- free(t);
-
- if (r < 0)
- return NULL;
-
- return dn;
- }
-
- return strdup(p);
-}
-
static int mount_find_pri(char *options) {
char *end, *pri;
unsigned long r;