summaryrefslogtreecommitdiff
path: root/src/core/transaction.c
diff options
context:
space:
mode:
authorJouke Witteveen <j.witteveen@gmail.com>2017-08-07 11:27:24 +0200
committerLennart Poettering <lennart@poettering.net>2017-08-07 11:27:24 +0200
commit15d167f8a30597cb93996e5608adb496507ab9d7 (patch)
treeead8c05fd97fe0b924f74c1ff49bf9096f6e9bfa /src/core/transaction.c
parentca992ecf073cc3eedc40169d0f2b23c990807d0f (diff)
downloadsystemd-15d167f8a30597cb93996e5608adb496507ab9d7.tar.gz
core: propagate reload from RELOADING=1 notification (#6550)
Diffstat (limited to 'src/core/transaction.c')
-rw-r--r--src/core/transaction.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/src/core/transaction.c b/src/core/transaction.c
index 710a6a3948..1af4ed9100 100644
--- a/src/core/transaction.c
+++ b/src/core/transaction.c
@@ -858,6 +858,30 @@ static void transaction_unlink_job(Transaction *tr, Job *j, bool delete_dependen
}
}
+void transaction_add_propagate_reload_jobs(Transaction *tr, Unit *unit, Job *by, bool ignore_order, sd_bus_error *e) {
+ Iterator i;
+ Unit *dep;
+ JobType nt;
+ int r;
+
+ assert(tr);
+ assert(unit);
+
+ SET_FOREACH(dep, unit->dependencies[UNIT_PROPAGATES_RELOAD_TO], i) {
+ nt = job_type_collapse(JOB_TRY_RELOAD, dep);
+ if (nt == JOB_NOP)
+ continue;
+
+ r = transaction_add_job_and_dependencies(tr, nt, dep, by, false, false, false, ignore_order, e);
+ if (r < 0) {
+ log_unit_warning(dep,
+ "Cannot add dependency reload job, ignoring: %s",
+ bus_error_message(e, r));
+ sd_bus_error_free(e);
+ }
+ }
+}
+
int transaction_add_job_and_dependencies(
Transaction *tr,
JobType type,
@@ -1043,24 +1067,8 @@ int transaction_add_job_and_dependencies(
}
}
- if (type == JOB_RELOAD) {
-
- SET_FOREACH(dep, ret->unit->dependencies[UNIT_PROPAGATES_RELOAD_TO], i) {
- JobType nt;
-
- nt = job_type_collapse(JOB_TRY_RELOAD, dep);
- if (nt == JOB_NOP)
- continue;
-
- r = transaction_add_job_and_dependencies(tr, nt, dep, ret, false, false, false, ignore_order, e);
- if (r < 0) {
- log_unit_warning(dep,
- "Cannot add dependency reload job, ignoring: %s",
- bus_error_message(e, r));
- sd_bus_error_free(e);
- }
- }
- }
+ if (type == JOB_RELOAD)
+ transaction_add_propagate_reload_jobs(tr, ret->unit, ret, ignore_order, e);
/* JOB_VERIFY_STARTED require no dependency handling */
}