diff options
author | Sean Wilcox <Sean.Wilcox@Sun.COM> | 2010-02-04 08:53:43 -0800 |
---|---|---|
committer | Sean Wilcox <Sean.Wilcox@Sun.COM> | 2010-02-04 08:53:43 -0800 |
commit | c238c833c812c2845a9e35d4599c8d2a85f73ba9 (patch) | |
tree | 25847c8eff6d3c142efedc27d6250fe5d3cddcb2 | |
parent | d07682fa9b3911bfddbc33f2cc66bf64acbb27ae (diff) | |
download | illumos-gate-c238c833c812c2845a9e35d4599c8d2a85f73ba9.tar.gz |
6919271 wait services are not getting timers reset on a clean exit
6920199 bind dependent services are remaining offline when bind is re-enabled
-rw-r--r-- | usr/src/cmd/cmd-inet/usr.lib/inetd/inetd.c | 1 | ||||
-rw-r--r-- | usr/src/cmd/svc/startd/graph.c | 4 | ||||
-rw-r--r-- | usr/src/cmd/svc/startd/restarter.c | 6 |
3 files changed, 5 insertions, 6 deletions
diff --git a/usr/src/cmd/cmd-inet/usr.lib/inetd/inetd.c b/usr/src/cmd/cmd-inet/usr.lib/inetd/inetd.c index 67327b5f5b..8ef243f9ed 100644 --- a/usr/src/cmd/cmd-inet/usr.lib/inetd/inetd.c +++ b/usr/src/cmd/cmd-inet/usr.lib/inetd/inetd.c @@ -1855,6 +1855,7 @@ handle_restarter_event(instance_t *instance, restarter_event_type_t event, */ instance->maintenance_req = B_TRUE; /* FALLTHROUGH */ + case RESTARTER_EVENT_TYPE_STOP_RESET: case RESTARTER_EVENT_TYPE_STOP: /* * Dependencies have become unmet. Close and diff --git a/usr/src/cmd/svc/startd/graph.c b/usr/src/cmd/svc/startd/graph.c index c3c66bb2a1..12131ffd20 100644 --- a/usr/src/cmd/svc/startd/graph.c +++ b/usr/src/cmd/svc/startd/graph.c @@ -1732,7 +1732,7 @@ propagate_stop(graph_vertex_t *v, void *arg) case GVT_INST: /* Restarter */ if (err > RERR_NONE && inst_running(v)) { - if (err == RERR_RESTART) { + if (err == RERR_RESTART || err == RERR_REFRESH) { vertex_send_event(v, RESTARTER_EVENT_TYPE_STOP_RESET); } else { @@ -1767,7 +1767,7 @@ propagate_stop(graph_vertex_t *v, void *arg) svc = e->ge_vertex; if (inst_running(svc)) { - if (err == RERR_RESTART) { + if (err == RERR_RESTART || err == RERR_REFRESH) { vertex_send_event(svc, RESTARTER_EVENT_TYPE_STOP_RESET); } else { diff --git a/usr/src/cmd/svc/startd/restarter.c b/usr/src/cmd/svc/startd/restarter.c index 0d795604b4..d7b1c1482c 100644 --- a/usr/src/cmd/svc/startd/restarter.c +++ b/usr/src/cmd/svc/startd/restarter.c @@ -1087,6 +1087,7 @@ stop_instance(scf_handle_t *local_handle, restarter_inst_t *inst, } (void) update_fault_count(inst, FAULT_COUNT_RESET); + reset_start_times(inst); if (inst->ri_i.i_primary_ctid != 0) { inst->ri_m_inst = @@ -1602,7 +1603,7 @@ const char *event_names[] = { "INVALID", "ADD_INSTANCE", "REMOVE_INSTANCE", "ENABLE", "DISABLE", "ADMIN_DEGRADED", "ADMIN_REFRESH", "ADMIN_RESTART", "ADMIN_MAINT_OFF", "ADMIN_MAINT_ON", "ADMIN_MAINT_ON_IMMEDIATE", "STOP", "START", "DEPENDENCY_CYCLE", - "INVALID_DEPENDENCY", "ADMIN_DISABLE" + "INVALID_DEPENDENCY", "ADMIN_DISABLE", "STOP_RESET" }; /* @@ -2000,9 +2001,6 @@ contract_action(scf_handle_t *h, restarter_inst_t *inst, ctid_t id, * process we're monitoring, then the * wait_thread will stop the instance. */ - if (type == CT_PR_EV_EMPTY) - reset_start_times(inst); - log_framework(LOG_DEBUG, "%s: ignoring contract event on wait-style service\n", fmri); |