Print this page
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>
*** 19,28 ****
--- 19,30 ----
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright 2016 RackTop Systems.
*/
/*
* transition.c - Graph State Machine
*** 135,144 ****
--- 137,153 ----
log_framework(LOG_DEBUG, "Propagating maintenance (stop) of "
"%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);
graph_transition_propagate(v, PROPAGATE_SAT, rerr);
*** 265,274 ****
--- 274,289 ----
log_framework(LOG_DEBUG, "Propagating stop of %s.\n",
v->gv_name);
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);
graph_transition_propagate(v, PROPAGATE_SAT, rerr);