chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
util: include `stdarg.h`
[elogind.git]
/
src
/
manager.c
diff --git
a/src/manager.c
b/src/manager.c
index b59339b178c7187834fa7614c7c22f21ef32707a..68d43ada44f61fa6dc75091bca65703e85dba319 100644
(file)
--- a/
src/manager.c
+++ b/
src/manager.c
@@
-2654,6
+2654,8
@@
int manager_serialize(Manager *m, FILE *f, FDSet *fds) {
assert(f);
assert(fds);
assert(f);
assert(fds);
+ m->n_serializing ++;
+
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));
@@
-2674,13
+2676,22
@@
int manager_serialize(Manager *m, FILE *f, FDSet *fds) {
fputs(u->meta.id, f);
fputc('\n', f);
fputs(u->meta.id, f);
fputc('\n', f);
- if ((r = unit_serialize(u, f, fds)) < 0)
+ if ((r = unit_serialize(u, f, fds)) < 0) {
+ m->n_serializing --;
return r;
return r;
+ }
}
}
+ assert(m->n_serializing > 0);
+ m->n_serializing --;
+
if (ferror(f))
return -EIO;
if (ferror(f))
return -EIO;
+ r = bus_fdset_add_all(m, fds);
+ if (r < 0)
+ return r;
+
return 0;
}
return 0;
}
@@
-2781,15
+2792,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_serializing ++;
+
if (!(fds = fdset_new())) {
if (!(fds = fdset_new())) {
+ m->n_serializing --;
r = -ENOMEM;
goto finish;
}
r = -ENOMEM;
goto finish;
}
- if ((r = manager_serialize(m, f, fds)) < 0)
+ if ((r = manager_serialize(m, f, fds)) < 0) {
+ m->n_serializing --;
goto finish;
goto finish;
+ }
if (fseeko(f, 0, SEEK_SET) < 0) {
if (fseeko(f, 0, SEEK_SET) < 0) {
+ m->n_serializing --;
r = -errno;
goto finish;
}
r = -errno;
goto finish;
}
@@
-2798,6
+2815,9
@@
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)
@@
-2825,7
+2845,7
@@
int manager_reload(Manager *m) {
r = q;
assert(m->n_deserializing > 0);
r = q;
assert(m->n_deserializing > 0);
- m->n_deserializing
++
;
+ m->n_deserializing
--
;
finish:
if (f)
finish:
if (f)