Commit 82c64bf5 authored by Lennart Poettering's avatar Lennart Poettering
Browse files

snapshot: fix deserialization

parent 1e001f52
......@@ -2279,6 +2279,8 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
log_debug("Deserializing state...");
m->deserializing = true;
for (;;) {
Unit *u;
char name[UNIT_NAME_MAX+2];
......@@ -2288,22 +2290,30 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
if (feof(f))
break;
return -errno;
r = -errno;
goto finish;
}
char_array_0(name);
if ((r = manager_load_unit(m, strstrip(name), NULL, NULL, &u)) < 0)
return r;
goto finish;
if ((r = unit_deserialize(u, f, fds)) < 0)
return r;
goto finish;
}
if (ferror(f))
return -EIO;
if (ferror(f)) {
r = -EIO;
goto finish;
}
return 0;
r = 0;
finish:
m->deserializing = false;
return r;
}
int manager_reload(Manager *m) {
......
......@@ -193,6 +193,8 @@ struct Manager {
bool utmp_reboot_written:1;
bool deserializing:1;
bool show_status;
bool confirm_spawn;
};
......
......@@ -56,7 +56,7 @@ static int snapshot_load(Unit *u) {
/* Make sure that only snapshots created via snapshot_create()
* can be loaded */
if (!s->by_snapshot_create)
if (!s->by_snapshot_create && !s->meta.manager->deserializing)
return -ENOENT;
u->meta.load_state = UNIT_LOADED;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment