1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-30 14:55:37 +03:00

Merge pull request #18245 from poettering/unit-file-install-fixes

minor unit file install fixes
This commit is contained in:
Luca Boccassi 2021-01-14 18:46:48 +00:00 committed by GitHub
commit d8434c523c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 8 deletions

View File

@ -262,7 +262,7 @@ int unit_file_build_name_map(
* If yes, do nothing. */
if (cache_timestamp_hash &&
lookup_paths_timestamp_hash_same(lp, *cache_timestamp_hash, &timestamp_hash))
return 0;
return 0;
/* The timestamp hash is now set based on the mtimes from before when we start reading files.
* If anything is modified concurrently, we'll consider the cache outdated. */
@ -511,7 +511,7 @@ int unit_file_find_fragment(
r = unit_name_template(unit_name, &template);
if (r < 0)
return log_error_errno(r, "Failed to determine template name: %m");
return log_debug_errno(r, "Failed to determine template name: %m");
r = unit_ids_map_get(unit_ids_map, template, &fragment);
if (r < 0 && !IN_SET(r, -ENOENT, -ENXIO))

View File

@ -439,12 +439,15 @@ int unit_find_paths(
/**
* Finds where the unit is defined on disk. Returns 0 if the unit is not found. Returns 1 if it is
* found, and sets:
*
* - the path to the unit in *ret_frament_path, if it exists on disk,
*
* - and a strv of existing drop-ins in *ret_dropin_paths, if the arg is not NULL and any dropins
* were found.
*
* Returns -ERFKILL if the unit is masked, and -EKEYREJECTED if the unit file could not be loaded for
* some reason (the latter only applies if we are going through the service manager).
* some reason (the latter only applies if we are going through the service manager). As special
* exception it won't log for these two error cases.
*/
assert(unit_name);
@ -474,13 +477,13 @@ int unit_find_paths(
return log_error_errno(r, "Failed to get LoadState: %s", bus_error_message(&error, r));
if (streq(load_state, "masked"))
return -ERFKILL;
return -ERFKILL; /* special case: no logging */
if (streq(load_state, "not-found")) {
r = 0;
goto not_found;
goto finish;
}
if (!STR_IN_SET(load_state, "loaded", "bad-setting"))
return -EKEYREJECTED;
return -EKEYREJECTED; /* special case: no logging */
r = sd_bus_get_property_string(
bus,
@ -517,7 +520,7 @@ int unit_find_paths(
r = unit_file_find_fragment(*cached_id_map, *cached_name_map, unit_name, &_path, &names);
if (r < 0)
return r;
return log_error_errno(r, "Failed to find fragment for '%s': %m", unit_name);
if (_path) {
path = strdup(_path);
@ -534,6 +537,7 @@ int unit_find_paths(
}
}
finish:
if (isempty(path)) {
*ret_fragment_path = NULL;
r = 0;
@ -550,7 +554,6 @@ int unit_find_paths(
*ret_dropin_paths = NULL;
}
not_found:
if (r == 0 && !arg_force)
log_error("No files found for %s.", unit_name);