X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fmanager.c;h=cdd618e148efa052adaba1cd179351f611bfa127;hp=7b725e34d80cd7a025faedefaeff40885add90e7;hb=253ee27a0c7a410d27d490bb79ea97caed6a2b68;hpb=ccaa61498c7932cbd5c91540841840266914b10e diff --git a/src/manager.c b/src/manager.c index 7b725e34d..cdd618e14 100644 --- a/src/manager.c +++ b/src/manager.c @@ -186,6 +186,11 @@ static int manager_setup_signals(Manager *m) { SIGRTMIN+16, /* systemd: Immediate kexec */ SIGRTMIN+20, /* systemd: enable status messages */ SIGRTMIN+21, /* systemd: disable status messages */ + SIGRTMIN+22, /* systemd: set log level to LOG_DEBUG */ + SIGRTMIN+23, /* systemd: set log level to LOG_INFO */ + SIGRTMIN+27, /* systemd: set log target to console */ + SIGRTMIN+28, /* systemd: set log target to kmsg */ + SIGRTMIN+29, /* systemd: set log target to syslog-or-kmsg */ -1); assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0); @@ -258,7 +263,7 @@ int manager_new(ManagerRunningAs running_as, Manager **_m) { if ((m->epoll_fd = epoll_create1(EPOLL_CLOEXEC)) < 0) goto fail; - if ((r = lookup_paths_init(&m->lookup_paths, m->running_as)) < 0) + if ((r = lookup_paths_init(&m->lookup_paths, m->running_as, true)) < 0) goto fail; if ((r = manager_setup_signals(m)) < 0) @@ -595,7 +600,7 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { * this is already known, so we increase the counter here * already */ if (serialization) - m->n_deserializing ++; + m->n_reloading ++; /* First, enumerate what we can from all config files */ r = manager_enumerate(m); @@ -610,8 +615,8 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { r = q; if (serialization) { - assert(m->n_deserializing > 0); - m->n_deserializing --; + assert(m->n_reloading > 0); + m->n_reloading --; } return r; @@ -2200,6 +2205,7 @@ static int manager_process_signal_fd(Manager *m) { break; default: { + /* Starting SIGRTMIN+0 */ static const char * const target_table[] = { [0] = SPECIAL_DEFAULT_TARGET, @@ -2244,6 +2250,31 @@ static int manager_process_signal_fd(Manager *m) { m->show_status = false; break; + case 22: + log_set_max_level(LOG_DEBUG); + log_notice("Setting log level to debug."); + break; + + case 23: + log_set_max_level(LOG_INFO); + log_notice("Setting log level to info."); + break; + + case 27: + log_set_target(LOG_TARGET_CONSOLE); + log_notice("Setting log target to console."); + break; + + case 28: + log_set_target(LOG_TARGET_KMSG); + log_notice("Setting log target to kmsg."); + break; + + case 29: + log_set_target(LOG_TARGET_SYSLOG_OR_KMSG); + log_notice("Setting log target to syslog-or-kmsg."); + break; + default: log_warning("Got unhandled signal <%s>.", strna(signal_to_string(sfsi.ssi_signo))); } @@ -2476,7 +2507,7 @@ void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success) { /* Don't generate audit events if the service was already * started and we're just deserializing */ - if (m->n_deserializing > 0) + if (m->n_reloading > 0) return; if (m->running_as != MANAGER_SYSTEM) @@ -2517,7 +2548,7 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) { /* Don't generate plymouth events if the service was already * started and we're just deserializing */ - if (m->n_deserializing > 0) + if (m->n_reloading > 0) return; if (m->running_as != MANAGER_SYSTEM) @@ -2659,7 +2690,7 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds) { assert(f); assert(fds); - m->n_serializing ++; + m->n_reloading ++; fprintf(f, "current-job-id=%i\n", m->current_job_id); fprintf(f, "taint-usr=%s\n", yes_no(m->taint_usr)); @@ -2682,13 +2713,13 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds) { fputc('\n', f); if ((r = unit_serialize(u, f, fds)) < 0) { - m->n_serializing --; + m->n_reloading --; return r; } } - assert(m->n_serializing > 0); - m->n_serializing --; + assert(m->n_reloading > 0); + m->n_reloading --; if (ferror(f)) return -EIO; @@ -2708,7 +2739,7 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { log_debug("Deserializing state..."); - m->n_deserializing ++; + m->n_reloading ++; for (;;) { char line[LINE_MAX], *l; @@ -2781,8 +2812,8 @@ finish: goto finish; } - assert(m->n_deserializing > 0); - m->n_deserializing --; + assert(m->n_reloading > 0); + m->n_reloading --; return r; } @@ -2797,21 +2828,21 @@ int manager_reload(Manager *m) { if ((r = manager_open_serialization(m, &f)) < 0) return r; - m->n_serializing ++; + m->n_reloading ++; if (!(fds = fdset_new())) { - m->n_serializing --; + m->n_reloading --; r = -ENOMEM; goto finish; } if ((r = manager_serialize(m, f, fds)) < 0) { - m->n_serializing --; + m->n_reloading --; goto finish; } if (fseeko(f, 0, SEEK_SET) < 0) { - m->n_serializing --; + m->n_reloading --; r = -errno; goto finish; } @@ -2820,20 +2851,15 @@ int manager_reload(Manager *m) { manager_clear_jobs_and_units(m); manager_undo_generators(m); - assert(m->n_serializing > 0); - m->n_serializing --; - /* Find new unit paths */ lookup_paths_free(&m->lookup_paths); - if ((q = lookup_paths_init(&m->lookup_paths, m->running_as)) < 0) + if ((q = lookup_paths_init(&m->lookup_paths, m->running_as, true)) < 0) r = q; manager_run_generators(m); manager_build_unit_path_cache(m); - m->n_deserializing ++; - /* First, enumerate what we can from all config files */ if ((q = manager_enumerate(m)) < 0) r = q; @@ -2849,8 +2875,8 @@ int manager_reload(Manager *m) { if ((q = manager_coldplug(m)) < 0) r = q; - assert(m->n_deserializing > 0); - m->n_deserializing--; + assert(m->n_reloading > 0); + m->n_reloading--; finish: if (f)