diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-10-09 22:44:29 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-10-09 22:44:29 -0400 |
commit | 360af4cf6f18469df97c11af4cd5696e0ca8b3ef (patch) | |
tree | 4664de7fc976ca0075573a9ecd9297a752c13d57 /src/journal/journal-internal.h | |
parent | f280bcfb21aacce03abf17b3ad732c1351df42b9 (diff) |
sd-journal: do not reset sd_j_enumerate_unique position on error
systemctl would call sd_j_enumerate_unique() interleaved with
sd_j_next(). But the latter can remove a file if it detects an
error in it. In those circumstances sd_j_enumerate_unique would
restart with the first file in hashmap. With many corrupted files
sd_j_enumerate_unique might iterate over the list multiple times.
Avoid this by jumping to the next file in unique list if possible,
or setting a flag that tells sd_j_enumerate_unique that it is done
otherwise.
Diffstat (limited to 'src/journal/journal-internal.h')
-rw-r--r-- | src/journal/journal-internal.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h index 2f1f7fc771..e591fb61f8 100644 --- a/src/journal/journal-internal.h +++ b/src/journal/journal-internal.h @@ -124,6 +124,10 @@ struct sd_journal { bool on_network; bool no_new_files; + bool unique_file_lost; /* File we were iterating over got + removed, and there were no more + files, so sd_j_enumerate_unique + will return a value equal to 0. */ size_t data_threshold; |