From: Daan De Meyer Date: Tue, 14 May 2024 08:25:33 +0000 (+0200) Subject: core: Imply DefaultDependencies=no for credential mounts X-Git-Tag: v256-rc2~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c0a1b1e70c1fe6e0b6707fab7dc86b1500d0f82;p=thirdparty%2Fsystemd.git core: Imply DefaultDependencies=no for credential mounts Currently, on soft-reboot, /run/credentials/@system is unmounted because it has DefaultDependencies=yes and as such will have Conflicts=umount.target and Before=umount.target. Let's make sure credential mounts survive soft-reboot by implying DefaultDependencies=no for credential mounts. --- diff --git a/src/core/mount.c b/src/core/mount.c index 3bf7e89e38f..e43a93ac21e 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -463,10 +463,7 @@ static int mount_add_default_ordering_dependencies(Mount *m, MountParameters *p, after = SPECIAL_LOCAL_FS_PRE_TARGET; before = SPECIAL_INITRD_USR_FS_TARGET; - } else if (mount_is_credentials(m)) - after = before = NULL; - - else if (mount_is_network(p)) { + } else if (mount_is_network(p)) { after = SPECIAL_REMOTE_FS_PRE_TARGET; before = SPECIAL_REMOTE_FS_TARGET; @@ -653,6 +650,9 @@ static int mount_add_extras(Mount *m) { return r; } + if (mount_is_credentials(m)) + u->default_dependencies = false; + r = unit_patch_contexts(u); if (r < 0) return r; diff --git a/test/TEST-82-SOFTREBOOT/test.sh b/test/TEST-82-SOFTREBOOT/test.sh index 3c0676b39b2..2109cc84a0e 100755 --- a/test/TEST-82-SOFTREBOOT/test.sh +++ b/test/TEST-82-SOFTREBOOT/test.sh @@ -10,6 +10,7 @@ TEST_SKIP_SHUTDOWN=yes IMAGE_NAME="softreboot" TEST_NO_NSPAWN=1 TEST_INSTALL_VERITY_MINIMAL=1 +KERNEL_APPEND="${KERNEL_APPEND:-} systemd.set_credential=kernelcmdlinecred:uff" # shellcheck source=test/test-functions . "$TEST_BASE_DIR/test-functions" diff --git a/test/units/testsuite-82.sh b/test/units/testsuite-82.sh index ea96f05b38a..9747602d192 100755 --- a/test/units/testsuite-82.sh +++ b/test/units/testsuite-82.sh @@ -113,6 +113,9 @@ elif [ -f /run/testsuite82.touch ]; then cat /run/testsuite82.signal test "$(jq -r '.payload.data[1].type.data' "$T"