!VALID64(le64toh(f->header->entry_array_offset)))
return -ENODATA;
- if (le64toh(f->header->data_hash_table_offset) < le64toh(f->header->header_size) ||
- le64toh(f->header->field_hash_table_offset) < le64toh(f->header->header_size) ||
- le64toh(f->header->tail_object_offset) < le64toh(f->header->header_size) ||
- le64toh(f->header->entry_array_offset) < le64toh(f->header->header_size))
- return -ENODATA;
-
if (f->writable) {
uint8_t state;
sd_id128_t machine_id;
return -EADDRNOTAVAIL;
}
- return mmap_cache_get(f->mmap, f->fd, f->prot, context, keep_always, offset, size, &f->last_stat, ret);
+ return mmap_cache_get(f->mmap, f->fd, f->prot, context, keep_always, offset, size, &f->last_stat, ret, NULL);
}
static uint64_t minimum_header_size(Object *o) {
if (!VALID64(offset))
return -EFAULT;
-
r = journal_file_move_to(f, type_to_context(type), false, offset, sizeof(ObjectHeader), &t);
if (r < 0)
return r;
goto next;
if (o->object.flags & OBJECT_COMPRESSION_MASK) {
- uint64_t l, rsize;
+#if defined(HAVE_XZ) || defined(HAVE_LZ4)
+ uint64_t l;
+ size_t rsize;
l = le64toh(o->object.size);
if (l <= offsetof(Object, data.payload))
return 1;
}
-
+#else
+ return -EPROTONOSUPPORT;
+#endif
} else if (le64toh(o->object.size) == osize &&
memcmp(o->data.payload, data, size) == 0) {
#if defined(HAVE_XZ) || defined(HAVE_LZ4)
if (f->compress_xz &&
size >= COMPRESSION_SIZE_THRESHOLD) {
- uint64_t rsize;
+ size_t rsize;
compression = compress_blob(data, size, o->data.payload, &rsize);
o->object.size = htole64(offsetof(Object, data.payload) + rsize);
o->object.flags |= compression;
- log_debug("Compressed data object %"PRIu64" -> %"PRIu64" using %s",
+ log_debug("Compressed data object %"PRIu64" -> %zu using %s",
size, rsize, object_compressed_to_string(compression));
}
}
f->flags = flags;
f->prot = prot_from_flags(flags);
f->writable = (flags & O_ACCMODE) != O_RDONLY;
-#if defined(HAVE_LZ)
+#if defined(HAVE_LZ4)
f->compress_lz4 = compress;
#elif defined(HAVE_XZ)
f->compress_xz = compress;
goto fail;
}
- f->chain_cache = hashmap_new(uint64_hash_func, uint64_compare_func);
+ f->chain_cache = hashmap_new(&uint64_hash_ops);
if (!f->chain_cache) {
r = -ENOMEM;
goto fail;
return -E2BIG;
if (o->object.flags & OBJECT_COMPRESSION_MASK) {
- uint64_t rsize;
+#if defined(HAVE_XZ) || defined(HAVE_LZ4)
+ size_t rsize;
r = decompress_blob(o->object.flags & OBJECT_COMPRESSION_MASK,
o->data.payload, l, &from->compress_buffer, &from->compress_buffer_size, &rsize, 0);
data = from->compress_buffer;
l = rsize;
+#else
+ return -EPROTONOSUPPORT;
+#endif
} else
data = o->data.payload;