X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournal-file.c;h=a60a896c2f3ad7370f43abf8ba97514d0c9f20d2;hb=bb061708d5aa83579f213bdfb67253f7027217c3;hp=6460d70c4aef18c28223070150056bdbb0c45295;hpb=ccdbaf911196e2fc80eaa914bf22e01035ee1f3f;p=elogind.git diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 6460d70c4..a60a896c2 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -6,16 +6,16 @@ Copyright 2011 Lennart Poettering systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. systemd is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . ***/ @@ -35,12 +35,12 @@ #define DEFAULT_DATA_HASH_TABLE_SIZE (2047ULL*16ULL) #define DEFAULT_FIELD_HASH_TABLE_SIZE (2047ULL*16ULL) -#define DEFAULT_WINDOW_SIZE (128ULL*1024ULL*1024ULL) +#define DEFAULT_WINDOW_SIZE (8ULL*1024ULL*1024ULL) #define COMPRESSION_SIZE_THRESHOLD (512ULL) /* This is the minimum journal file size */ -#define JOURNAL_FILE_SIZE_MIN (64ULL*1024ULL) +#define JOURNAL_FILE_SIZE_MIN (64ULL*1024ULL) /* 64 KiB */ /* These are the lower and upper bounds if we deduce the max_use value * from the file system size */ @@ -793,8 +793,8 @@ static uint64_t journal_file_entry_array_n_items(Object *o) { } static int link_entry_into_array(JournalFile *f, - uint64_t *first, - uint64_t *idx, + le64_t *first, + le64_t *idx, uint64_t p) { int r; uint64_t n = 0, ap = 0, q, i, a, hidx; @@ -857,9 +857,9 @@ static int link_entry_into_array(JournalFile *f, } static int link_entry_into_array_plus_one(JournalFile *f, - uint64_t *extra, - uint64_t *first, - uint64_t *idx, + le64_t *extra, + le64_t *first, + le64_t *idx, uint64_t p) { int r; @@ -873,7 +873,7 @@ static int link_entry_into_array_plus_one(JournalFile *f, if (*idx == 0) *extra = htole64(p); else { - uint64_t i; + le64_t i; i = htole64(le64toh(*idx) - 1); r = link_entry_into_array(f, first, &i, p); @@ -1887,7 +1887,10 @@ int journal_file_open_reliably( char *p; r = journal_file_open(fname, flags, mode, template, ret); - if (r != -EBADMSG) + if (r != -EBADMSG && /* corrupted */ + r != -ENODATA && /* truncated */ + r != -EHOSTDOWN && /* other machine */ + r != -EPROTONOSUPPORT) /* incompatible feature */ return r; if ((flags & O_ACCMODE) == O_RDONLY) @@ -1974,7 +1977,7 @@ int journal_directory_vacuum(const char *directory, uint64_t max_use, uint64_t m size_t q; struct stat st; char *p; - unsigned long long seqnum, realtime; + unsigned long long seqnum = 0, realtime; sd_id128_t seqnum_id; bool have_seqnum; @@ -2141,7 +2144,8 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6 items = alloca(sizeof(EntryItem) * n); for (i = 0; i < n; i++) { - uint64_t le_hash, l, h; + uint64_t l, h; + le64_t le_hash; size_t t; void *data; Object *u;