summaryrefslogtreecommitdiff
path: root/src/shared/install.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-04-16 19:31:53 -0400
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-04-16 21:51:09 -0400
commit9a0a413a195a21888cf926be5595d0efc1eef0fe (patch)
tree80034840b635cecbb8d2fff9416a833e244b0e01 /src/shared/install.c
parent76ec966f0e33685f8331603805c0349adceea836 (diff)
systemctl/core: ignore masked units in preset-all
With any masked unit that would that would be enabled by presets, we'd get: test@rawhide $ sudo systemctl preset-all Failed to execute operation: Unit file is masked. test@rawhide $ sudo systemctl --root=/ preset-all Operation failed: Cannot send after transport endpoint shutdown Simply ignore those units: test@rawhide $ sudo systemctl preset-all Unit xxx.service is masked, ignoring.
Diffstat (limited to 'src/shared/install.c')
-rw-r--r--src/shared/install.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/shared/install.c b/src/shared/install.c
index 35d83dd16c..74de8141f1 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -2539,6 +2539,9 @@ int unit_file_preset_all(
continue;
r = preset_prepare_one(scope, &plus, &minus, &paths, mode, de->d_name);
+ if (r == -ERFKILL)
+ r = unit_file_changes_add(changes, n_changes,
+ UNIT_FILE_IS_MASKED, de->d_name, NULL);
if (r < 0)
return r;
}
@@ -2652,6 +2655,7 @@ DEFINE_STRING_TABLE_LOOKUP(unit_file_state, UnitFileState);
static const char* const unit_file_change_type_table[_UNIT_FILE_CHANGE_TYPE_MAX] = {
[UNIT_FILE_SYMLINK] = "symlink",
[UNIT_FILE_UNLINK] = "unlink",
+ [UNIT_FILE_IS_MASKED] = "masked",
};
DEFINE_STRING_TABLE_LOOKUP(unit_file_change_type, UnitFileChangeType);