chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
unit: accept empty defaults for kill who/mode args
[elogind.git]
/
src
/
manager.c
diff --git
a/src/manager.c
b/src/manager.c
index 0830e8020efc8311cdfe4aa1217ad17ddabdefca..3291275d0a41d3c630d403569fdd4c60de694de8 100644
(file)
--- a/
src/manager.c
+++ b/
src/manager.c
@@
-58,6
+58,7
@@
#include "special.h"
#include "bus-errors.h"
#include "exit-status.h"
#include "special.h"
#include "bus-errors.h"
#include "exit-status.h"
+#include "sd-daemon.h"
/* As soon as 16 units are in our GC queue, make sure to run a gc sweep */
#define GC_QUEUE_ENTRIES_MAX 16
/* As soon as 16 units are in our GC queue, make sure to run a gc sweep */
#define GC_QUEUE_ENTRIES_MAX 16
@@
-135,7
+136,7
@@
static int enable_special_signals(Manager *m) {
if (reboot(RB_DISABLE_CAD) < 0)
log_warning("Failed to enable ctrl-alt-del handling: %m");
if (reboot(RB_DISABLE_CAD) < 0)
log_warning("Failed to enable ctrl-alt-del handling: %m");
- if ((fd = open_terminal("/dev/tty0", O_RDWR|O_NOCTTY)) < 0)
+ if ((fd = open_terminal("/dev/tty0", O_RDWR|O_NOCTTY
|O_CLOEXEC
)) < 0)
log_warning("Failed to open /dev/tty0: %m");
else {
/* Enable that we get SIGWINCH on kbrequest */
log_warning("Failed to open /dev/tty0: %m");
else {
/* Enable that we get SIGWINCH on kbrequest */
@@
-594,7
+595,7
@@
int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
* this is already known, so we increase the counter here
* already */
if (serialization)
* this is already known, so we increase the counter here
* already */
if (serialization)
- m->n_
deserializ
ing ++;
+ m->n_
reload
ing ++;
/* First, enumerate what we can from all config files */
r = manager_enumerate(m);
/* First, enumerate what we can from all config files */
r = manager_enumerate(m);
@@
-609,8
+610,8
@@
int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
r = q;
if (serialization) {
r = q;
if (serialization) {
- assert(m->n_
deserializ
ing > 0);
- m->n_
deserializ
ing --;
+ assert(m->n_
reload
ing > 0);
+ m->n_
reload
ing --;
}
return r;
}
return r;
@@
-896,6
+897,9
@@
static int transaction_merge_jobs(Manager *m, DBusError *e) {
transaction_merge_and_delete_job(m, j, k, t);
}
transaction_merge_and_delete_job(m, j, k, t);
}
+ if (j->unit->meta.job && !j->installed)
+ transaction_merge_and_delete_job(m, j, j->unit->meta.job, t);
+
assert(!j->transaction_next);
assert(!j->transaction_prev);
}
assert(!j->transaction_next);
assert(!j->transaction_prev);
}
@@
-2472,7
+2476,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 */
/* Don't generate audit events if the service was already
* started and we're just deserializing */
- if (m->n_
deserializ
ing > 0)
+ if (m->n_
reload
ing > 0)
return;
if (m->running_as != MANAGER_SYSTEM)
return;
if (m->running_as != MANAGER_SYSTEM)
@@
-2513,7
+2517,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 */
/* Don't generate plymouth events if the service was already
* started and we're just deserializing */
- if (m->n_
deserializ
ing > 0)
+ if (m->n_
reload
ing > 0)
return;
if (m->running_as != MANAGER_SYSTEM)
return;
if (m->running_as != MANAGER_SYSTEM)
@@
-2655,7
+2659,7
@@
int manager_serialize(Manager *m, FILE *f, FDSet *fds) {
assert(f);
assert(fds);
assert(f);
assert(fds);
- m->n_
serializ
ing ++;
+ m->n_
reload
ing ++;
fprintf(f, "current-job-id=%i\n", m->current_job_id);
fprintf(f, "taint-usr=%s\n", yes_no(m->taint_usr));
fprintf(f, "current-job-id=%i\n", m->current_job_id);
fprintf(f, "taint-usr=%s\n", yes_no(m->taint_usr));
@@
-2678,13
+2682,13
@@
int manager_serialize(Manager *m, FILE *f, FDSet *fds) {
fputc('\n', f);
if ((r = unit_serialize(u, f, fds)) < 0) {
fputc('\n', f);
if ((r = unit_serialize(u, f, fds)) < 0) {
- m->n_
serializ
ing --;
+ m->n_
reload
ing --;
return r;
}
}
return r;
}
}
- assert(m->n_
serializ
ing > 0);
- m->n_
serializ
ing --;
+ assert(m->n_
reload
ing > 0);
+ m->n_
reload
ing --;
if (ferror(f))
return -EIO;
if (ferror(f))
return -EIO;
@@
-2704,7
+2708,7
@@
int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
log_debug("Deserializing state...");
log_debug("Deserializing state...");
- m->n_
deserializ
ing ++;
+ m->n_
reload
ing ++;
for (;;) {
char line[LINE_MAX], *l;
for (;;) {
char line[LINE_MAX], *l;
@@
-2777,8
+2781,8
@@
finish:
goto finish;
}
goto finish;
}
- assert(m->n_
deserializ
ing > 0);
- m->n_
deserializ
ing --;
+ assert(m->n_
reload
ing > 0);
+ m->n_
reload
ing --;
return r;
}
return r;
}
@@
-2793,21
+2797,21
@@
int manager_reload(Manager *m) {
if ((r = manager_open_serialization(m, &f)) < 0)
return r;
if ((r = manager_open_serialization(m, &f)) < 0)
return r;
- m->n_
serializ
ing ++;
+ m->n_
reload
ing ++;
if (!(fds = fdset_new())) {
if (!(fds = fdset_new())) {
- m->n_
serializ
ing --;
+ m->n_
reload
ing --;
r = -ENOMEM;
goto finish;
}
if ((r = manager_serialize(m, f, fds)) < 0) {
r = -ENOMEM;
goto finish;
}
if ((r = manager_serialize(m, f, fds)) < 0) {
- m->n_
serializ
ing --;
+ m->n_
reload
ing --;
goto finish;
}
if (fseeko(f, 0, SEEK_SET) < 0) {
goto finish;
}
if (fseeko(f, 0, SEEK_SET) < 0) {
- m->n_
serializ
ing --;
+ m->n_
reload
ing --;
r = -errno;
goto finish;
}
r = -errno;
goto finish;
}
@@
-2816,9
+2820,6
@@
int manager_reload(Manager *m) {
manager_clear_jobs_and_units(m);
manager_undo_generators(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)
/* Find new unit paths */
lookup_paths_free(&m->lookup_paths);
if ((q = lookup_paths_init(&m->lookup_paths, m->running_as)) < 0)
@@
-2828,8
+2829,6
@@
int manager_reload(Manager *m) {
manager_build_unit_path_cache(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;
/* First, enumerate what we can from all config files */
if ((q = manager_enumerate(m)) < 0)
r = q;
@@
-2845,8
+2844,8
@@
int manager_reload(Manager *m) {
if ((q = manager_coldplug(m)) < 0)
r = q;
if ((q = manager_coldplug(m)) < 0)
r = q;
- assert(m->n_
deserializ
ing > 0);
- m->n_
deserializ
ing--;
+ assert(m->n_
reload
ing > 0);
+ m->n_
reload
ing--;
finish:
if (f)
finish:
if (f)
@@
-2944,6
+2943,10
@@
void manager_check_finished(Manager *m) {
}
bus_broadcast_finished(m, kernel_usec, initrd_usec, userspace_usec, total_usec);
}
bus_broadcast_finished(m, kernel_usec, initrd_usec, userspace_usec, total_usec);
+
+ sd_notifyf(false,
+ "READY=1\nSTATUS=Startup finished in %s.",
+ format_timespan(sum, sizeof(sum), total_usec));
}
void manager_run_generators(Manager *m) {
}
void manager_run_generators(Manager *m) {