#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
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 */
* 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);
r = q;
if (serialization) {
- assert(m->n_deserializing > 0);
- m->n_deserializing --;
+ assert(m->n_reloading > 0);
+ m->n_reloading --;
}
return r;
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);
}
/* 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)
/* 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)
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));
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;
log_debug("Deserializing state...");
- m->n_deserializing ++;
+ m->n_reloading ++;
for (;;) {
char line[LINE_MAX], *l;
goto finish;
}
- assert(m->n_deserializing > 0);
- m->n_deserializing --;
+ assert(m->n_reloading > 0);
+ m->n_reloading --;
return r;
}
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;
}
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)
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;
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)
}
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) {