diff options
author | Andrew Stormont <astormont@racktopsystems.com> | 2016-09-08 13:02:43 +0100 |
---|---|---|
committer | Dan McDonald <danmcd@omniti.com> | 2016-09-09 11:39:41 -0400 |
commit | 2633ea2405fe9036261e499e3d436091642da653 (patch) | |
tree | 00d8b66e72097e02286d7f64970ff33562f3722c /usr/src/cmd/svc/startd/transition.c | |
parent | f2d34afa1058d195513e7ab9a6c1f0ce38b4d05b (diff) | |
download | illumos-joyent-2633ea2405fe9036261e499e3d436091642da653.tar.gz |
7267 SMF is fast and loose with optional dependencies
Reviewed by: Dan McDonald <danmcd@omniti.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Albert Lee <trisk@omniti.com>
Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src/cmd/svc/startd/transition.c')
-rw-r--r-- | usr/src/cmd/svc/startd/transition.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/usr/src/cmd/svc/startd/transition.c b/usr/src/cmd/svc/startd/transition.c index 4e7a884719..a62d40088c 100644 --- a/usr/src/cmd/svc/startd/transition.c +++ b/usr/src/cmd/svc/startd/transition.c @@ -21,6 +21,8 @@ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * + * Copyright 2016 RackTop Systems. */ @@ -137,6 +139,13 @@ gt_enter_maint(scf_handle_t *h, graph_vertex_t *v, "%s.\n", v->gv_name); graph_transition_propagate(v, PROPAGATE_STOP, rerr); + + /* + * The maintenance transition may satisfy optional_all/restart + * dependencies and should be propagated to determine + * whether new dependents are satisfiable. + */ + graph_transition_propagate(v, PROPAGATE_SAT, rerr); } else { log_framework(LOG_DEBUG, "Propagating maintenance of %s.\n", v->gv_name); @@ -267,6 +276,12 @@ gt_enter_disabled(scf_handle_t *h, graph_vertex_t *v, graph_transition_propagate(v, PROPAGATE_STOP, rerr); + /* + * The disable transition may satisfy optional_all/restart + * dependencies and should be propagated to determine + * whether new dependents are satisfiable. + */ + graph_transition_propagate(v, PROPAGATE_SAT, rerr); } else { log_framework(LOG_DEBUG, "Propagating disable of %s.\n", v->gv_name); |