sd-journal: do not reset sd_j_enumerate_unique position on error
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 10 Oct 2014 02:44:29 +0000 (22:44 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 10 Oct 2014 02:44:29 +0000 (22:44 -0400)
commit360af4cf6f18469df97c11af4cd5696e0ca8b3ef
tree4664de7fc976ca0075573a9ecd9297a752c13d57
parentf280bcfb21aacce03abf17b3ad732c1351df42b9
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.
src/journal/journal-internal.h
src/journal/sd-journal.c