From d1afbcd22170e95c79261340071d376fe41fc3af Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 24 Oct 2015 13:17:54 +0200 Subject: journal: fix error handling when compressing journal objects Let's make sure we handle compression errors properly, and don't misunderstand an error for success. Also, let's actually compress things if lz4 is enabled. Fixes #1662. --- src/journal/journal-file.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/journal/journal-file.c') diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 1071c6d6d7..89068f26d2 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -1076,23 +1076,24 @@ static int journal_file_append_data( o->data.hash = htole64(hash); #if defined(HAVE_XZ) || defined(HAVE_LZ4) - if (f->compress_xz && - size >= COMPRESSION_SIZE_THRESHOLD) { + if (JOURNAL_FILE_COMPRESS(f) && size >= COMPRESSION_SIZE_THRESHOLD) { size_t rsize = 0; compression = compress_blob(data, size, o->data.payload, &rsize); - if (compression) { + if (compression >= 0) { o->object.size = htole64(offsetof(Object, data.payload) + rsize); o->object.flags |= compression; log_debug("Compressed data object %"PRIu64" -> %zu using %s", size, rsize, object_compressed_to_string(compression)); - } + } else + /* Compression didn't work, we don't really care why, let's continue without compression */ + compression = 0; } #endif - if (!compression && size > 0) + if (compression == 0 && size > 0) memcpy(o->data.payload, data, size); r = journal_file_link_data(f, o, p, hash); -- cgit v1.2.3-54-g00ecf From 0240c603691e006165d8687d6a2c70859755b11f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 24 Oct 2015 15:08:15 +0200 Subject: journal: irrelevant coding style fixes --- src/journal/compress.c | 9 +++++---- src/journal/journal-file.c | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src/journal/journal-file.c') diff --git a/src/journal/compress.c b/src/journal/compress.c index 8c92e26edd..fb40bed594 100644 --- a/src/journal/compress.c +++ b/src/journal/compress.c @@ -57,10 +57,11 @@ int compress_blob_xz(const void *src, uint64_t src_size, void *dst, size_t *dst_ #ifdef HAVE_XZ static const lzma_options_lzma opt = { 1u << 20u, NULL, 0, LZMA_LC_DEFAULT, LZMA_LP_DEFAULT, - LZMA_PB_DEFAULT, LZMA_MODE_FAST, 128, LZMA_MF_HC3, 4}; - static const lzma_filter filters[2] = { - {LZMA_FILTER_LZMA2, (lzma_options_lzma*) &opt}, - {LZMA_VLI_UNKNOWN, NULL} + LZMA_PB_DEFAULT, LZMA_MODE_FAST, 128, LZMA_MF_HC3, 4 + }; + static const lzma_filter filters[] = { + { LZMA_FILTER_LZMA2, (lzma_options_lzma*) &opt }, + { LZMA_VLI_UNKNOWN, NULL } }; lzma_ret ret; size_t out_pos = 0; diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 89068f26d2..fadc0e4286 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -1057,7 +1057,7 @@ static int journal_file_append_data( r = journal_file_find_data_object_with_hash(f, data, size, hash, &o, &p); if (r < 0) return r; - else if (r > 0) { + if (r > 0) { if (ret) *ret = o; -- cgit v1.2.3-54-g00ecf