From bcd816bd349241bcd9c0bfbfd9cfe7b034ba351b Mon Sep 17 00:00:00 2001 From: Lennart Poettering <lennart@poettering.net> Date: Thu, 22 May 2014 16:49:12 +0900 Subject: [PATCH] core: never consider failure when reading drop-ins fatal drop-ins don't carry the main configuration of a unit, hence read them if we can't, complain if we cannot, but don't fail. --- src/core/load-dropin.c | 42 +++++++++++++----------------------------- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git src/core/load-dropin.c src/core/load-dropin.c index 546e560..f2ffc97 100644 --- src/core/load-dropin.c +++ src/core/load-dropin.c @@ -58,6 +58,7 @@ static int iterate_dir( if (errno == ENOENT) return 0; + log_error("Failed to open directory %s: %m", path); return -errno; } @@ -101,7 +102,7 @@ static int process_dir( char ***strv) { _cleanup_free_ char *path = NULL; - int r; + int r, q; assert(u); assert(unit_path); @@ -112,11 +113,8 @@ static int process_dir( if (!path) return log_oom(); - if (!u->manager->unit_path_cache || set_get(u->manager->unit_path_cache, path)) { - r = iterate_dir(u, path, dependency, strv); - if (r < 0) - return r; - } + if (!u->manager->unit_path_cache || set_get(u->manager->unit_path_cache, path)) + iterate_dir(u, path, dependency, strv); if (u->instance) { _cleanup_free_ char *template = NULL, *p = NULL; @@ -130,11 +128,8 @@ static int process_dir( if (!p) return log_oom(); - if (!u->manager->unit_path_cache || set_get(u->manager->unit_path_cache, p)) { - r = iterate_dir(u, p, dependency, strv); - if (r < 0) - return r; - } + if (!u->manager->unit_path_cache || set_get(u->manager->unit_path_cache, p)) + iterate_dir(u, p, dependency, strv); } return 0; @@ -152,12 +147,8 @@ char **unit_find_dropin_paths(Unit *u) { SET_FOREACH(t, u->names, i) { char **p; - STRV_FOREACH(p, u->manager->lookup_paths.unit_path) { - /* This loads the drop-in config snippets */ - r = process_dir(u, *p, t, ".d", _UNIT_DEPENDENCY_INVALID, &strv); - if (r < 0) - return NULL; - } + STRV_FOREACH(p, u->manager->lookup_paths.unit_path) + process_dir(u, *p, t, ".d", _UNIT_DEPENDENCY_INVALID, &strv); } if (strv_isempty(strv)) @@ -186,13 +177,8 @@ int unit_load_dropin(Unit *u) { char **p; STRV_FOREACH(p, u->manager->lookup_paths.unit_path) { - r = process_dir(u, *p, t, ".wants", UNIT_WANTS, NULL); - if (r < 0) - return r; - - r = process_dir(u, *p, t, ".requires", UNIT_REQUIRES, NULL); - if (r < 0) - return r; + process_dir(u, *p, t, ".wants", UNIT_WANTS, NULL); + process_dir(u, *p, t, ".requires", UNIT_REQUIRES, NULL); } } @@ -201,11 +187,9 @@ int unit_load_dropin(Unit *u) { return 0; STRV_FOREACH(f, u->dropin_paths) { - r = config_parse(u->id, *f, NULL, - UNIT_VTABLE(u)->sections, config_item_perf_lookup, - (void*) load_fragment_gperf_lookup, false, false, u); - if (r < 0) - return r; + config_parse(u->id, *f, NULL, + UNIT_VTABLE(u)->sections, config_item_perf_lookup, + (void*) load_fragment_gperf_lookup, false, false, u); } u->dropin_mtime = now(CLOCK_REALTIME); -- 1.7.9.2