// SPDX-License-Identifier: GPL-2.0+ OR Apache-2.0 /* * Copyright (C) 2018-2019 HUAWEI, Inc. * http://www.huawei.com/ * Created by Gao Xiang */ #include #include "erofs/internal.h" #include "compressor.h" #ifndef LZ4_DISTANCE_MAX /* history window size */ #define LZ4_DISTANCE_MAX 65535 /* set to maximum value by default */ #endif static int lz4_compress_destsize(const struct erofs_compress *c, const void *src, unsigned int *srcsize, void *dst, unsigned int dstsize) { int srcSize = (int)*srcsize; int rc = LZ4_compress_destSize(src, dst, &srcSize, (int)dstsize); if (!rc) return -EFAULT; *srcsize = srcSize; return rc; } static int compressor_lz4_exit(struct erofs_compress *c) { return 0; } static int compressor_lz4_init(struct erofs_compress *c) { c->sbi->lz4.max_distance = max_t(u16, c->sbi->lz4.max_distance, LZ4_DISTANCE_MAX); return 0; } const struct erofs_compressor erofs_compressor_lz4 = { .init = compressor_lz4_init, .exit = compressor_lz4_exit, .compress_destsize = lz4_compress_destsize, };