X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fmanager.c;h=e7a3a2a193179f01def2633ebfd9edfc75039905;hb=99dfe1345caeb2cd107f69111aba8a9db18a0e6f;hp=65e7b2604d2ae78d7fae06ea2af237f5e9111288;hpb=95ae05c0e79868c22b3e8e6fbc53432786876730;p=elogind.git diff --git a/src/core/manager.c b/src/core/manager.c index 65e7b2604..e7a3a2a19 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -429,7 +429,6 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) { m->running_as = running_as; m->exit_code = _MANAGER_EXIT_CODE_INVALID; m->default_timer_accuracy_usec = USEC_PER_MINUTE; - m->default_cpu_quota_period_usec = 100 * USEC_PER_MSEC; m->idle_pipe[0] = m->idle_pipe[1] = m->idle_pipe[2] = m->idle_pipe[3] = -1; @@ -2452,7 +2451,6 @@ void manager_check_finished(Manager *m) { usec_t firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec; Unit *u = NULL; Iterator i; - UnitActiveState state; assert(m); @@ -2478,6 +2476,9 @@ void manager_check_finished(Manager *m) { /* Turn off confirm spawn now */ m->confirm_spawn = false; + /* This is no longer the first boot */ + manager_set_first_boot(m, false); + if (dual_timestamp_is_set(&m->finish_timestamp)) return; @@ -2540,13 +2541,9 @@ void manager_check_finished(Manager *m) { NULL); } - SET_FOREACH(u, m->startup_units, i) { - u = set_steal_first(m->startup_units); - state = unit_active_state(u); - if (!UNIT_IS_ACTIVE_OR_ACTIVATING(state)) - continue; - cgroup_context_apply(m, unit_get_cgroup_context(u), unit_get_cgroup_mask(u), u->cgroup_path); - } + SET_FOREACH(u, m->startup_units, i) + if (u->cgroup_path) + cgroup_context_apply(unit_get_cgroup_context(u), unit_get_cgroup_mask(u), u->cgroup_path, manager_state(m)); bus_manager_send_finished(m, firmware_usec, loader_usec, kernel_usec, initrd_usec, userspace_usec, total_usec); @@ -2813,6 +2810,20 @@ static bool manager_get_show_status(Manager *m) { return plymouth_running(); } +void manager_set_first_boot(Manager *m, bool b) { + assert(m); + + if (m->running_as != SYSTEMD_SYSTEM) + return; + + m->first_boot = b; + + if (m->first_boot) + touch("/run/systemd/first-boot"); + else + unlink("/run/systemd/first-boot"); +} + void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...) { va_list ap;