diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/swap.c | 16 | ||||
-rw-r--r-- | src/fstab-generator/fstab-generator.c | 27 |
2 files changed, 17 insertions, 26 deletions
diff --git a/src/core/swap.c b/src/core/swap.c index 0a1cc80936..e509a633d0 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -209,8 +209,6 @@ static int swap_add_device_links(Swap *s) { } static int swap_add_default_dependencies(Swap *s) { - int r; - assert(s); if (UNIT(s)->manager->running_as != SYSTEMD_SYSTEM) @@ -219,19 +217,7 @@ static int swap_add_default_dependencies(Swap *s) { if (detect_container(NULL) > 0) return 0; - r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true); - if (r < 0) - return r; - - if (!s->from_fragment) - /* The swap unit can either be for an alternative device name, in which - * case we don't need to add the dependency on swap.target because this unit - * is following a different unit which will have this dependency added, - * or it can be derived from /proc/swaps, in which case it was started - * manually, and should not become a dependency of swap.target. */ - return 0; - - return unit_add_two_dependencies_by_name_inverse(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SWAP_TARGET, NULL, true); + return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true); } static int swap_verify(Swap *s) { diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index af45c25400..14e664236e 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -74,11 +74,14 @@ static int mount_find_pri(struct mntent *me, int *ret) { return 1; } -static int add_swap(const char *what, struct mntent *me) { +static int add_swap( + const char *what, + struct mntent *me, + bool noauto, + bool nofail) { + _cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL; _cleanup_fclose_ FILE *f = NULL; - - bool noauto; int r, pri = -1; assert(what); @@ -95,8 +98,6 @@ static int add_swap(const char *what, struct mntent *me) { return r; } - noauto = !!hasmntopt(me, "noauto"); - name = unit_name_from_path(what, ".swap"); if (!name) return log_oom(); @@ -143,7 +144,8 @@ static int add_swap(const char *what, struct mntent *me) { return r; if (!noauto) { - lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET ".wants/", name, NULL); + lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET, + nofail ? ".wants/" : ".requires/", name, NULL); if (!lnk) return log_oom(); @@ -357,6 +359,7 @@ static int parse_fstab(bool initrd) { while ((me = getmntent(f))) { _cleanup_free_ char *where = NULL, *what = NULL; + bool noauto, nofail; int k; if (initrd && !mount_in_initrd(me)) @@ -378,16 +381,18 @@ static int parse_fstab(bool initrd) { if (is_path(where)) path_kill_slashes(where); - log_debug("Found entry what=%s where=%s type=%s", what, where, me->mnt_type); + noauto = !!hasmntopt(me, "noauto"); + nofail = !!hasmntopt(me, "nofail"); + log_debug("Found entry what=%s where=%s type=%s nofail=%s noauto=%s", + what, where, me->mnt_type, + yes_no(noauto), yes_no(nofail)); if (streq(me->mnt_type, "swap")) - k = add_swap(what, me); + k = add_swap(what, me, noauto, nofail); else { - bool noauto, nofail, automount; + bool automount; const char *post; - noauto = !!hasmntopt(me, "noauto"); - nofail = !!hasmntopt(me, "nofail"); automount = hasmntopt(me, "comment=systemd.automount") || hasmntopt(me, "x-systemd.automount"); |