summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-06-29 19:47:38 +0200
committerLennart Poettering <lennart@poettering.net>2012-06-29 19:47:38 +0200
commit33c5fae93976505df343b842727f93910ad510c6 (patch)
treeb53a32780d98889fad3b156d49d5ceb91b1d0013
parent5e4a79da3ac3859c2a1295e019b95a1e5589b9c1 (diff)
manager: serialize/deserialize job counters across reexec/reload
-rw-r--r--TODO2
-rw-r--r--src/core/manager.c16
2 files changed, 16 insertions, 2 deletions
diff --git a/TODO b/TODO
index 4b7dad95ed..1a7b60e236 100644
--- a/TODO
+++ b/TODO
@@ -29,8 +29,6 @@ Features:
* document that journal data is primarily ASCII, UTF-8 where necessary and binary only where nothing else makes sense.
-* on reload/reexec: serialize NInstalledJobs properly
-
* Document:
- PID 1 D-Bus API
- Update Syslog Interface docs
diff --git a/src/core/manager.c b/src/core/manager.c
index 9dfcb98de9..c0cc1b3f37 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -1745,6 +1745,8 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds) {
fprintf(f, "current-job-id=%i\n", m->current_job_id);
fprintf(f, "taint-usr=%s\n", yes_no(m->taint_usr));
+ fprintf(f, "n-installed-jobs=%u\n", m->n_installed_jobs);
+ fprintf(f, "n-failed-jobs=%u\n", m->n_failed_jobs);
dual_timestamp_serialize(f, "initrd-timestamp", &m->initrd_timestamp);
@@ -1820,6 +1822,20 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
log_debug("Failed to parse current job id value %s", l+15);
else
m->current_job_id = MAX(m->current_job_id, id);
+ } else if (startswith(l, "n-installed-jobs=")) {
+ uint32_t n;
+
+ if (safe_atou32(l+17, &n) < 0)
+ log_debug("Failed to parse installed jobs counter %s", l+17);
+ else
+ m->n_installed_jobs += n;
+ } else if (startswith(l, "n-failed-jobs=")) {
+ uint32_t n;
+
+ if (safe_atou32(l+14, &n) < 0)
+ log_debug("Failed to parse failed jobs counter %s", l+14);
+ else
+ m->n_failed_jobs += n;
} else if (startswith(l, "taint-usr=")) {
int b;