diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index c5ba7b10461..0de9adb6e56 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -4703,7 +4703,9 @@ int unit_load_fragment(Unit *u) { return r; if (null_or_empty(&st)) { - u->load_state = UNIT_MASKED; + /* Unit file is masked */ + + u->load_state = u->perpetual ? UNIT_LOADED : UNIT_MASKED; /* don't allow perpetual units to ever be masked */ u->fragment_mtime = 0; } else { u->load_state = UNIT_LOADED; diff --git a/src/core/mount.c b/src/core/mount.c index 12b2e512e82..668c4d7e895 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -537,10 +537,9 @@ static int mount_verify(Mount *m) { } p = get_mount_parameters_fragment(m); - if (p && !p->what) { - log_unit_error(UNIT(m), "What= setting is missing. Refusing."); - return -ENOEXEC; - } + if (p && !p->what && !UNIT(m)->perpetual) + return log_unit_error_errno(UNIT(m), SYNTHETIC_ERRNO(ENOEXEC), + "What= setting is missing. Refusing."); if (m->exec_context.pam_name && m->kill_context.kill_mode != KILL_CONTROL_GROUP) { log_unit_error(UNIT(m), "Unit has PAM enabled. Kill mode must be set to control-group'. Refusing.");