* Copyright (C) 2017-2018 Red Hat, Inc. All rights reserved.
*
* Author: Fabio M. Di Nitto <fabbione@kronosnet.org>
*
* This software licensed under GPL-2.0+, LGPL-2.0+
*/
#define KNET_MODULE
#include "config.h"
#include <errno.h>
#include <lz4.h>
#include <lz4hc.h>
#include "logging.h"
#include "compress_model.h"
#ifdef LZ4HC_CLEVEL_MAX
#define KNET_LZ4HC_MAX LZ4HC_CLEVEL_MAX
#endif
#ifdef LZ4HC_MAX_CLEVEL
#define KNET_LZ4HC_MAX LZ4HC_MAX_CLEVEL
#endif
#ifndef KNET_LZ4HC_MAX
-#define KNET_LZ4HC_MAX 0
-#error Please check lz4hc.h for missing LZ4HC_CLEVEL_MAX or LZ4HC_MAX_CLEVEL variants
+/*
+ * older releases of lz4 do not define LZ4HC_CLEVEL range.
+ * According to lz4hc.h, any value between 0 and 16 is valid.
+ * We defalt to 16 based on the comments in the include file
+ * from older versions.
+ */
+#define KNET_LZ4HC_MAX 16
#endif
static int lz4hc_val_level(
knet_handle_t knet_h,
int compress_level)
{
if (compress_level < 1) {
log_err(knet_h, KNET_SUB_LZ4HCCOMP, "lz4hc supports only 1+ values for compression level");
errno = EINVAL;
return -1;
}
if (compress_level < 4) {
log_info(knet_h, KNET_SUB_LZ4HCCOMP, "lz4hc recommends 4+ compression level for better results");
}
if (compress_level > KNET_LZ4HC_MAX) {
log_warn(knet_h, KNET_SUB_LZ4HCCOMP, "lz4hc installed on this system supports up to compression level %d. Higher values behaves as %d", KNET_LZ4HC_MAX, KNET_LZ4HC_MAX);