From 3e3852b3c6c61506963112fd218a86b673fc61e6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 26 Oct 2017 17:24:55 +0200 Subject: [PATCH] core: make "tmpfs" dependencies on swapfs a "default" dep, not an "implicit" There should be a way to turn this logic of, and DefaultDependencies= appears to be the right option for that, hence let's downgrade this dependency type from "implicit" to "default, and thus honour DefaultDependencies=. This also drops mount_get_fstype() as we only have a single user needing this now. A follow-up for #7076. --- src/core/dbus-mount.c | 8 +++++++- src/core/mount.c | 31 +++++++------------------------ src/core/mount.h | 2 -- units/tmp.mount | 1 + 4 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/core/dbus-mount.c b/src/core/dbus-mount.c index 1f9c254..c683b36 100644 --- a/src/core/dbus-mount.c +++ b/src/core/dbus-mount.c @@ -87,13 +87,19 @@ static int property_get_type( void *userdata, sd_bus_error *error) { + const char *fstype = NULL; Mount *m = userdata; assert(bus); assert(reply); assert(m); - return sd_bus_message_append(reply, "s", mount_get_fstype(m)); + if (m->from_proc_self_mountinfo && m->parameters_proc_self_mountinfo.fstype) + fstype = m->parameters_proc_self_mountinfo.fstype; + else if (m->from_fragment && m->parameters_fragment.fstype) + fstype = m->parameters_fragment.fstype; + + return sd_bus_message_append(reply, "s", fstype); } static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_result, mount_result, MountResult); diff --git a/src/core/mount.c b/src/core/mount.c index 343e17f..214b46f 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -156,21 +156,6 @@ static bool needs_quota(const MountParameters *p) { "usrquota\0" "grpquota\0" "quota\0" "usrjquota\0" "grpjquota\0"); } -const char *mount_get_fstype(const Mount *m) { - const char *type = NULL; - - assert(m); - - if (m->from_proc_self_mountinfo && m->parameters_proc_self_mountinfo.fstype) - type = m->parameters_proc_self_mountinfo.fstype; - else if (m->from_fragment && m->parameters_fragment.fstype) - type = m->parameters_fragment.fstype; - else - type = ""; - - return type; -} - static void mount_init(Unit *u) { Mount *m = MOUNT(u); @@ -281,7 +266,6 @@ _pure_ static MountParameters* get_mount_parameters(Mount *m) { } static int mount_add_mount_dependencies(Mount *m) { - const char *fstype; MountParameters *pm; Unit *other; Iterator i; @@ -338,14 +322,6 @@ static int mount_add_mount_dependencies(Mount *m) { } } - /* If this is a tmpfs mount then we have to unmount it before we try to deactivate swaps */ - fstype = mount_get_fstype(m); - if (streq(fstype, "tmpfs")) { - r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_SWAP_TARGET, NULL, true, UNIT_DEPENDENCY_IMPLICIT); - if (r < 0) - return r; - } - return 0; } @@ -517,6 +493,13 @@ static int mount_add_default_dependencies(Mount *m) { if (r < 0) return r; + /* If this is a tmpfs mount then we have to unmount it before we try to deactivate swaps */ + if (streq(p->fstype, "tmpfs")) { + r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_SWAP_TARGET, NULL, true, mask); + if (r < 0) + return r; + } + return 0; } diff --git a/src/core/mount.h b/src/core/mount.h index f37094e..f81e421 100644 --- a/src/core/mount.h +++ b/src/core/mount.h @@ -110,5 +110,3 @@ MountExecCommand mount_exec_command_from_string(const char *s) _pure_; const char* mount_result_to_string(MountResult i) _const_; MountResult mount_result_from_string(const char *s) _pure_; - -const char *mount_get_fstype(const Mount *m); diff --git a/units/tmp.mount b/units/tmp.mount index a057fa1..3a333d2 100644 --- a/units/tmp.mount +++ b/units/tmp.mount @@ -13,6 +13,7 @@ ConditionPathIsSymbolicLink=!/tmp DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target +After=swap.target [Mount] What=tmpfs -- 2.7.4