diff options
author | Michal Sekletar <msekleta@redhat.com> | 2012-07-20 15:55:01 +0200 |
---|---|---|
committer | Michal Schmidt <mschmidt@redhat.com> | 2012-07-26 09:16:43 +0200 |
commit | 85e9a1010d16064ce435b84f02dc585bc645aade (patch) | |
tree | 1be4741f280b3bd9dad29cf31c04de73d8e3c282 /src/core/transaction.c | |
parent | c37046cd3cabc07a6e4c5ec09049f56294e10a51 (diff) |
systemd: added new dependency PartOf
This should address TODO item "new dependency type to "group" services
in a target". Semantic of new dependency is as follows. Once configured
it creates dependency which will cause that all dependent units get
stopped if unit they all depend on is stopped or restarted. Usual use
case would be configuring PartOf=some.target in template unit file
and WantedBy=some.target in [Install] section and enabling desired
number of instances. In this case starting one instance won't pull in
target but stopping or starting target(in case of WantedBy is properly
configured) will cause stop/start of all instances.
Diffstat (limited to 'src/core/transaction.c')
-rw-r--r-- | src/core/transaction.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/core/transaction.c b/src/core/transaction.c index a1cf706934..1f8d803aeb 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -994,6 +994,18 @@ int transaction_add_job_and_dependencies( dbus_error_free(e); } } + + SET_FOREACH(dep, ret->unit->dependencies[UNIT_CONSISTS_OF], i) { + r = transaction_add_job_and_dependencies(tr, type, dep, ret, true, override, false, false, ignore_order, e); + if (r < 0) { + if (r != -EBADR) + goto fail; + + if (e) + dbus_error_free(e); + } + } + } if (type == JOB_RELOAD) { |