diff options
-rw-r--r-- | man/systemd.unit.xml | 8 | ||||
-rw-r--r-- | src/bus-errors.h | 2 | ||||
-rw-r--r-- | src/load-fragment.c | 2 | ||||
-rw-r--r-- | src/main.c | 8 | ||||
-rw-r--r-- | src/manager.c | 6 | ||||
-rw-r--r-- | src/unit.c | 2 | ||||
-rw-r--r-- | src/unit.h | 2 |
7 files changed, 19 insertions, 11 deletions
diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index c3c9561f2f..e59c1a16c4 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -190,6 +190,14 @@ string before the @, i.e. "getty" in the example above, where "tty3" is the instance name.</para> + <para>If a unit file is empty (i.e. has the file size + 0) or is symlinked to <filename>/dev/null</filename> + its configuration will not be loaded and it appears + with a load state of <literal>masked</literal>, and + cannot be activated. Use this as an effective way to + fully disable a unit, making it impossible to start it + even manually.</para> + <para>The unit file format is covered by the <ulink url="http://www.freedesktop.org/wiki/Software/systemd/InterfaceStabilityPromise">Interface diff --git a/src/bus-errors.h b/src/bus-errors.h index 8f5c4eb7f3..d6ccd7407f 100644 --- a/src/bus-errors.h +++ b/src/bus-errors.h @@ -37,7 +37,7 @@ #define BUS_ERROR_ONLY_BY_DEPENDENCY "org.freedesktop.systemd1.OnlyByDependency" #define BUS_ERROR_NO_ISOLATION "org.freedesktop.systemd1.NoIsolation" #define BUS_ERROR_LOAD_FAILED "org.freedesktop.systemd1.LoadFailed" -#define BUS_ERROR_BANNED "org.freedesktop.systemd1.Banned" +#define BUS_ERROR_MASKED "org.freedesktop.systemd1.Masked" #define BUS_ERROR_JOB_TYPE_NOT_APPLICABLE "org.freedesktop.systemd1.JobTypeNotApplicable" #define BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE "org.freedesktop.systemd1.TransactionIsDestructive" #define BUS_ERROR_TRANSACTION_JOBS_CONFLICTING "org.freedesktop.systemd1.TransactionJobsConflicting" diff --git a/src/load-fragment.c b/src/load-fragment.c index b22955b424..eb9861802b 100644 --- a/src/load-fragment.c +++ b/src/load-fragment.c @@ -1885,7 +1885,7 @@ static int load_from_path(Unit *u, const char *path) { } if (null_or_empty(&st)) - u->meta.load_state = UNIT_BANNED; + u->meta.load_state = UNIT_MASKED; else { /* Now, parse the file contents */ if ((r = config_parse(filename, f, sections, items, false, u)) < 0) diff --git a/src/main.c b/src/main.c index d6f5c56c2a..fa306d6aad 100644 --- a/src/main.c +++ b/src/main.c @@ -1062,8 +1062,8 @@ int main(int argc, char *argv[]) { dbus_error_free(&error); } else if (target->meta.load_state == UNIT_ERROR) log_error("Failed to load default target: %s", strerror(-target->meta.load_error)); - else if (target->meta.load_state == UNIT_BANNED) - log_error("Default target banned."); + else if (target->meta.load_state == UNIT_MASKED) + log_error("Default target masked."); if (!target || target->meta.load_state != UNIT_LOADED) { log_info("Trying to load rescue target..."); @@ -1075,8 +1075,8 @@ int main(int argc, char *argv[]) { } else if (target->meta.load_state == UNIT_ERROR) { log_error("Failed to load rescue target: %s", strerror(-target->meta.load_error)); goto finish; - } else if (target->meta.load_state == UNIT_BANNED) { - log_error("Rescue target banned."); + } else if (target->meta.load_state == UNIT_MASKED) { + log_error("Rescue target masked."); goto finish; } } diff --git a/src/manager.c b/src/manager.c index 7e9075aad6..537ff2e39d 100644 --- a/src/manager.c +++ b/src/manager.c @@ -1400,7 +1400,7 @@ static int transaction_add_job_and_dependencies( if (unit->meta.load_state != UNIT_LOADED && unit->meta.load_state != UNIT_ERROR && - unit->meta.load_state != UNIT_BANNED) { + unit->meta.load_state != UNIT_MASKED) { dbus_set_error(e, BUS_ERROR_LOAD_FAILED, "Unit %s is not loaded properly.", unit->meta.id); return -EINVAL; } @@ -1414,8 +1414,8 @@ static int transaction_add_job_and_dependencies( return -EINVAL; } - if (type != JOB_STOP && unit->meta.load_state == UNIT_BANNED) { - dbus_set_error(e, BUS_ERROR_BANNED, "Unit %s is banned.", unit->meta.id); + if (type != JOB_STOP && unit->meta.load_state == UNIT_MASKED) { + dbus_set_error(e, BUS_ERROR_MASKED, "Unit %s is masked.", unit->meta.id); return -EINVAL; } diff --git a/src/unit.c b/src/unit.c index d45fe91560..a45a1f7725 100644 --- a/src/unit.c +++ b/src/unit.c @@ -2237,7 +2237,7 @@ static const char* const unit_load_state_table[_UNIT_LOAD_STATE_MAX] = { [UNIT_LOADED] = "loaded", [UNIT_ERROR] = "error", [UNIT_MERGED] = "merged", - [UNIT_BANNED] = "banned" + [UNIT_MASKED] = "masked" }; DEFINE_STRING_TABLE_LOOKUP(unit_load_state, UnitLoadState); diff --git a/src/unit.h b/src/unit.h index aa818d4f21..605fa3774d 100644 --- a/src/unit.h +++ b/src/unit.h @@ -62,7 +62,7 @@ enum UnitLoadState { UNIT_LOADED, UNIT_ERROR, UNIT_MERGED, - UNIT_BANNED, + UNIT_MASKED, _UNIT_LOAD_STATE_MAX, _UNIT_LOAD_STATE_INVALID = -1 }; |