diff --git a/include/sys/zstd/zstd.h b/include/sys/zstd/zstd.h index db1f27716..f965df319 100644 --- a/include/sys/zstd/zstd.h +++ b/include/sys/zstd/zstd.h @@ -83,13 +83,13 @@ typedef struct zfs_zstd_header { int zstd_init(void); void zstd_fini(void); -size_t zstd_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, - int level); -int zstd_get_level(void *s_start, size_t s_len, uint8_t *level); -int zstd_decompress_level(void *s_start, void *d_start, size_t s_len, +size_t zfs_zstd_compress(void *s_start, void *d_start, size_t s_len, + size_t d_len, int level); +int zfs_zstd_get_level(void *s_start, size_t s_len, uint8_t *level); +int zfs_zstd_decompress_level(void *s_start, void *d_start, size_t s_len, size_t d_len, uint8_t *level); -int zstd_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, - int n); +int zfs_zstd_decompress(void *s_start, void *d_start, size_t s_len, + size_t d_len, int n); #ifdef __cplusplus } diff --git a/lib/libzstd/Makefile.am b/lib/libzstd/Makefile.am index 7c7035c41..df31d8b23 100644 --- a/lib/libzstd/Makefile.am +++ b/lib/libzstd/Makefile.am @@ -13,3 +13,9 @@ KERNEL_C = \ zfs_zstd.c nodist_libzstd_la_SOURCES = $(KERNEL_C) + +lib/zstd.$(OBJEXT): CFLAGS += -fno-tree-vectorize -include $(top_srcdir)/module/zstd/include/zstd_compat_wrapper.h -Wp,-w +lib/zstd.l$(OBJEXT): CFLAGS += -fno-tree-vectorize -include $(top_srcdir)/module/zstd/include/zstd_compat_wrapper.h -Wp,-w + +zfs_zstd.$(OBJEXT): CFLAGS += -include $(top_srcdir)/module/zstd/include/zstd_compat_wrapper.h +zfs_zstd.l$(OBJEXT): CFLAGS += -include $(top_srcdir)/module/zstd/include/zstd_compat_wrapper.h diff --git a/module/zfs/zio_compress.c b/module/zfs/zio_compress.c index d91e82d9e..2db3cec35 100644 --- a/module/zfs/zio_compress.c +++ b/module/zfs/zio_compress.c @@ -66,8 +66,8 @@ zio_compress_info_t zio_compress_table[ZIO_COMPRESS_FUNCTIONS] = { {"gzip-9", 9, gzip_compress, gzip_decompress, NULL}, {"zle", 64, zle_compress, zle_decompress, NULL}, {"lz4", 0, lz4_compress_zfs, lz4_decompress_zfs, NULL}, - {"zstd", ZIO_ZSTD_LEVEL_DEFAULT, zstd_compress, zstd_decompress, - zstd_decompress_level}, + {"zstd", ZIO_ZSTD_LEVEL_DEFAULT, zfs_zstd_compress, + zfs_zstd_decompress, zfs_zstd_decompress_level}, }; uint8_t diff --git a/module/zstd/Makefile.in b/module/zstd/Makefile.in index a7f91a435..eea749ea8 100644 --- a/module/zstd/Makefile.in +++ b/module/zstd/Makefile.in @@ -24,7 +24,9 @@ $(obj)/lib/zstd.o: c_flags += -fno-tree-vectorize $(obj)/lib/zstd.o: c_flags += -Wframe-larger-than=20480 # Disable aarch64 neon SIMD instructions for kernel mode -$(obj)/lib/zstd.o: c_flags += -include $(zstd_include)/aarch64_compat.h +$(obj)/lib/zstd.o: c_flags += -include $(zstd_include)/aarch64_compat.h -include $(zstd_include)/zstd_compat_wrapper.h -Wp,-w + +$(obj)/zfs_zstd.o: c_flags += -include $(zstd_include)/zstd_compat_wrapper.h $(MODULE)-objs += zfs_zstd.o $(MODULE)-objs += lib/zstd.o diff --git a/module/zstd/README.md b/module/zstd/README.md index b08a41906..f8e127736 100644 --- a/module/zstd/README.md +++ b/module/zstd/README.md @@ -48,6 +48,11 @@ ${zstd}/contrib/single_file_libs/combine.sh \ -r ${zstd}/lib -o module/zstd/lib/zstd.c module/zstd/zstd-in.c ~~~ +Note: if the zstd library for zfs is updated to a newer version, +the macro list in include/zstd_compat_wrapper.h usually needs to be updated. +this can be done with some hand crafting of the output of the following +script: nm zstd.o | awk '{print "#define "$3 " zfs_" $3}' > macrotable + ## Altering ZSTD and breaking changes diff --git a/module/zstd/include/zstd_compat_wrapper.h b/module/zstd/include/zstd_compat_wrapper.h new file mode 100644 index 000000000..5cca517b5 --- /dev/null +++ b/module/zstd/include/zstd_compat_wrapper.h @@ -0,0 +1,460 @@ +/* + * BSD 3-Clause New License (https://spdx.org/licenses/BSD-3-Clause.html) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Copyright (c) 2020, Sebastian Gottschall + */ + +/* + * This wrapper fixes a problem, in case the ZFS filesystem driver, is compiled + * staticly into the kernel. + * This will cause a symbol collision with the older in-kernel zstd library. + * The following macros will simply rename all local zstd symbols and references + * + * Note: if the zstd library for zfs is updated to a newer version, this macro + * list usually needs to be updated. + * this can be done with some hand crafting of the output of the following + * script + * nm zstd.o | awk '{print "#define "$3 " zfs_" $3}' > macrotable + */ + +#define BIT_initDStream zfs_BIT_initDStream +#define BIT_mask zfs_BIT_mask +#define BIT_reloadDStream zfs_BIT_reloadDStream +#define ERR_getErrorString zfs_ERR_getErrorString +#define FSE_NCountWriteBound zfs_FSE_NCountWriteBound +#define FSE_buildCTable zfs_FSE_buildCTable +#define FSE_buildCTable_raw zfs_FSE_buildCTable_raw +#define FSE_buildCTable_rle zfs_FSE_buildCTable_rle +#define FSE_buildCTable_wksp zfs_FSE_buildCTable_wksp +#define FSE_buildDTable zfs_FSE_buildDTable +#define FSE_buildDTable_raw zfs_FSE_buildDTable_raw +#define FSE_buildDTable_rle zfs_FSE_buildDTable_rle +#define FSE_compress zfs_FSE_compress +#define FSE_compress2 zfs_FSE_compress2 +#define FSE_compressBound zfs_FSE_compressBound +#define FSE_compress_usingCTable zfs_FSE_compress_usingCTable +#define FSE_compress_usingCTable_generic zfs_FSE_compress_usingCTable_generic +#define FSE_compress_wksp zfs_FSE_compress_wksp +#define FSE_createCTable zfs_FSE_createCTable +#define FSE_createDTable zfs_FSE_createDTable +#define FSE_decompress zfs_FSE_decompress +#define FSE_decompress_usingDTable zfs_FSE_decompress_usingDTable +#define FSE_decompress_wksp zfs_FSE_decompress_wksp +#define FSE_freeCTable zfs_FSE_freeCTable +#define FSE_freeDTable zfs_FSE_freeDTable +#define FSE_getErrorName zfs_FSE_getErrorName +#define FSE_normalizeCount zfs_FSE_normalizeCount +#define FSE_optimalTableLog zfs_FSE_optimalTableLog +#define FSE_optimalTableLog_internal zfs_FSE_optimalTableLog_internal +#define FSE_readNCount zfs_FSE_readNCount +#define FSE_versionNumber zfs_FSE_versionNumber +#define FSE_writeNCount zfs_FSE_writeNCount +#define HIST_count zfs_HIST_count +#define HIST_countFast zfs_HIST_countFast +#define HIST_countFast_wksp zfs_HIST_countFast_wksp +#define HIST_count_parallel_wksp zfs_HIST_count_parallel_wksp +#define HIST_count_simple zfs_HIST_count_simple +#define HIST_count_wksp zfs_HIST_count_wksp +#define HUF_buildCTable zfs_HUF_buildCTable +#define HUF_buildCTable_wksp zfs_HUF_buildCTable_wksp +#define HUF_compress zfs_HUF_compress +#define HUF_compress1X zfs_HUF_compress1X +#define HUF_compress1X_repeat zfs_HUF_compress1X_repeat +#define HUF_compress1X_usingCTable zfs_HUF_compress1X_usingCTable +#define HUF_compress1X_wksp zfs_HUF_compress1X_wksp +#define HUF_compress2 zfs_HUF_compress2 +#define HUF_compress4X_repeat zfs_HUF_compress4X_repeat +#define HUF_compress4X_usingCTable zfs_HUF_compress4X_usingCTable +#define HUF_compress4X_wksp zfs_HUF_compress4X_wksp +#define HUF_compressBound zfs_HUF_compressBound +#define HUF_compressWeights zfs_HUF_compressWeights +#define HUF_decompress zfs_HUF_decompress +#define HUF_decompress1X1 zfs_HUF_decompress1X1 +#define HUF_decompress1X1_DCtx zfs_HUF_decompress1X1_DCtx +#define HUF_decompress1X1_DCtx_wksp zfs_HUF_decompress1X1_DCtx_wksp +#define HUF_decompress1X1_DCtx_wksp_bmi2 zfs_HUF_decompress1X1_DCtx_wksp_bmi2 +#define HUF_decompress1X1_usingDTable zfs_HUF_decompress1X1_usingDTable +#define HUF_decompress1X2 zfs_HUF_decompress1X2 +#define HUF_decompress1X2_DCtx zfs_HUF_decompress1X2_DCtx +#define HUF_decompress1X2_DCtx_wksp zfs_HUF_decompress1X2_DCtx_wksp +#define HUF_decompress1X2_usingDTable zfs_HUF_decompress1X2_usingDTable +#define HUF_decompress1X_DCtx zfs_HUF_decompress1X_DCtx +#define HUF_decompress1X_DCtx_wksp zfs_HUF_decompress1X_DCtx_wksp +#define HUF_decompress1X_usingDTable zfs_HUF_decompress1X_usingDTable +#define HUF_decompress1X_usingDTable_bmi2 zfs_HUF_decompress1X_usingDTable_bmi2 +#define HUF_decompress4X1 zfs_HUF_decompress4X1 +#define HUF_decompress4X1_DCtx zfs_HUF_decompress4X1_DCtx +#define HUF_decompress4X1_DCtx_wksp zfs_HUF_decompress4X1_DCtx_wksp +#define HUF_decompress4X1_usingDTable zfs_HUF_decompress4X1_usingDTable +#define HUF_decompress4X2 zfs_HUF_decompress4X2 +#define HUF_decompress4X2_DCtx zfs_HUF_decompress4X2_DCtx +#define HUF_decompress4X2_DCtx_wksp zfs_HUF_decompress4X2_DCtx_wksp +#define HUF_decompress4X2_usingDTable zfs_HUF_decompress4X2_usingDTable +#define HUF_decompress4X_DCtx zfs_HUF_decompress4X_DCtx +#define HUF_decompress4X_hufOnly zfs_HUF_decompress4X_hufOnly +#define HUF_decompress4X_hufOnly_wksp zfs_HUF_decompress4X_hufOnly_wksp +#define HUF_decompress4X_hufOnly_wksp_bmi2 \ + zfs_HUF_decompress4X_hufOnly_wksp_bmi2 +#define HUF_decompress4X_usingDTable zfs_HUF_decompress4X_usingDTable +#define HUF_decompress4X_usingDTable_bmi2 zfs_HUF_decompress4X_usingDTable_bmi2 +#define HUF_estimateCompressedSize zfs_HUF_estimateCompressedSize +#define HUF_fillDTableX2Level2 zfs_HUF_fillDTableX2Level2 +#define HUF_getErrorName zfs_HUF_getErrorName +#define HUF_getNbBits zfs_HUF_getNbBits +#define HUF_optimalTableLog zfs_HUF_optimalTableLog +#define HUF_readCTable zfs_HUF_readCTable +#define HUF_readDTableX1 zfs_HUF_readDTableX1 +#define HUF_readDTableX1_wksp zfs_HUF_readDTableX1_wksp +#define HUF_readDTableX2 zfs_HUF_readDTableX2 +#define HUF_readDTableX2_wksp zfs_HUF_readDTableX2_wksp +#define HUF_readStats zfs_HUF_readStats +#define HUF_selectDecoder zfs_HUF_selectDecoder +#define HUF_setMaxHeight zfs_HUF_setMaxHeight +#define HUF_validateCTable zfs_HUF_validateCTable +#define HUF_writeCTable zfs_HUF_writeCTable +#define LL_base zfs_LL_base +#define LL_bits zfs_LL_bits +#define LL_defaultDTable zfs_LL_defaultDTable +#define LL_defaultNorm zfs_LL_defaultNorm +#define ML_base zfs_ML_base +#define ML_bits zfs_ML_bits +#define ML_defaultDTable zfs_ML_defaultDTable +#define ML_defaultNorm zfs_ML_defaultNorm +#define OF_base zfs_OF_base +#define OF_bits zfs_OF_bits +#define OF_defaultDTable zfs_OF_defaultDTable +#define OF_defaultNorm zfs_OF_defaultNorm +#define POOL_add zfs_POOL_add +#define POOL_create zfs_POOL_create +#define POOL_create_advanced zfs_POOL_create_advanced +#define POOL_free zfs_POOL_free +#define POOL_resize zfs_POOL_resize +#define POOL_sizeof zfs_POOL_sizeof +#define POOL_tryAdd zfs_POOL_tryAdd +#define ZSTD_CCtxParams_getParameter zfs_ZSTD_CCtxParams_getParameter +#define ZSTD_CCtxParams_init zfs_ZSTD_CCtxParams_init +#define ZSTD_CCtxParams_init_advanced zfs_ZSTD_CCtxParams_init_advanced +#define ZSTD_CCtxParams_reset zfs_ZSTD_CCtxParams_reset +#define ZSTD_CCtxParams_setParameter zfs_ZSTD_CCtxParams_setParameter +#define ZSTD_CCtx_getParameter zfs_ZSTD_CCtx_getParameter +#define ZSTD_CCtx_loadDictionary zfs_ZSTD_CCtx_loadDictionary +#define ZSTD_CCtx_loadDictionary_advanced zfs_ZSTD_CCtx_loadDictionary_advanced +#define ZSTD_CCtx_loadDictionary_byReference \ + zfs_ZSTD_CCtx_loadDictionary_byReference +#define ZSTD_CCtx_refCDict zfs_ZSTD_CCtx_refCDict +#define ZSTD_CCtx_refPrefix zfs_ZSTD_CCtx_refPrefix +#define ZSTD_CCtx_refPrefix_advanced zfs_ZSTD_CCtx_refPrefix_advanced +#define ZSTD_CCtx_reset zfs_ZSTD_CCtx_reset +#define ZSTD_CCtx_setParameter zfs_ZSTD_CCtx_setParameter +#define ZSTD_CCtx_setParametersUsingCCtxParams \ + zfs_ZSTD_CCtx_setParametersUsingCCtxParams +#define ZSTD_CCtx_setPledgedSrcSize zfs_ZSTD_CCtx_setPledgedSrcSize +#define ZSTD_CStreamInSize zfs_ZSTD_CStreamInSize +#define ZSTD_CStreamOutSize zfs_ZSTD_CStreamOutSize +#define ZSTD_DCtx_loadDictionary zfs_ZSTD_DCtx_loadDictionary +#define ZSTD_DCtx_loadDictionary_advanced zfs_ZSTD_DCtx_loadDictionary_advanced +#define ZSTD_DCtx_loadDictionary_byReference \ + zfs_ZSTD_DCtx_loadDictionary_byReference +#define ZSTD_DCtx_refDDict zfs_ZSTD_DCtx_refDDict +#define ZSTD_DCtx_refPrefix zfs_ZSTD_DCtx_refPrefix +#define ZSTD_DCtx_refPrefix_advanced zfs_ZSTD_DCtx_refPrefix_advanced +#define ZSTD_DCtx_reset zfs_ZSTD_DCtx_reset +#define ZSTD_DCtx_setFormat zfs_ZSTD_DCtx_setFormat +#define ZSTD_DCtx_setMaxWindowSize zfs_ZSTD_DCtx_setMaxWindowSize +#define ZSTD_DCtx_setParameter zfs_ZSTD_DCtx_setParameter +#define ZSTD_DDict_dictContent zfs_ZSTD_DDict_dictContent +#define ZSTD_DDict_dictSize zfs_ZSTD_DDict_dictSize +#define ZSTD_DStreamInSize zfs_ZSTD_DStreamInSize +#define ZSTD_DStreamOutSize zfs_ZSTD_DStreamOutSize +#define ZSTD_DUBT_findBestMatch zfs_ZSTD_DUBT_findBestMatch +#define ZSTD_NCountCost zfs_ZSTD_NCountCost +#define ZSTD_XXH64_digest zfs_ZSTD_XXH64_digest +#define ZSTD_adjustCParams zfs_ZSTD_adjustCParams +#define ZSTD_assignParamsToCCtxParams zfs_ZSTD_assignParamsToCCtxParams +#define ZSTD_buildCTable zfs_ZSTD_buildCTable +#define ZSTD_buildFSETable zfs_ZSTD_buildFSETable +#define ZSTD_buildSeqStore zfs_ZSTD_buildSeqStore +#define ZSTD_buildSeqTable zfs_ZSTD_buildSeqTable +#define ZSTD_cParam_getBounds zfs_ZSTD_cParam_getBounds +#define ZSTD_cParam_withinBounds zfs_ZSTD_cParam_withinBounds +#define ZSTD_calloc zfs_ZSTD_calloc +#define ZSTD_checkCParams zfs_ZSTD_checkCParams +#define ZSTD_checkContinuity zfs_ZSTD_checkContinuity +#define ZSTD_compress zfs_ZSTD_compress +#define ZSTD_compress2 zfs_ZSTD_compress2 +#define ZSTD_compressBegin zfs_ZSTD_compressBegin +#define ZSTD_compressBegin_advanced zfs_ZSTD_compressBegin_advanced +#define ZSTD_compressBegin_advanced_internal \ + zfs_ZSTD_compressBegin_advanced_internal +#define ZSTD_compressBegin_usingCDict zfs_ZSTD_compressBegin_usingCDict +#define ZSTD_compressBegin_usingCDict_advanced \ + zfs_ZSTD_compressBegin_usingCDict_advanced +#define ZSTD_compressBegin_usingDict zfs_ZSTD_compressBegin_usingDict +#define ZSTD_compressBlock zfs_ZSTD_compressBlock +#define ZSTD_compressBlock_btlazy2 zfs_ZSTD_compressBlock_btlazy2 +#define ZSTD_compressBlock_btlazy2_dictMatchState \ + zfs_ZSTD_compressBlock_btlazy2_dictMatchState +#define ZSTD_compressBlock_btlazy2_extDict \ + zfs_ZSTD_compressBlock_btlazy2_extDict +#define ZSTD_compressBlock_btopt zfs_ZSTD_compressBlock_btopt +#define ZSTD_compressBlock_btopt_dictMatchState \ + zfs_ZSTD_compressBlock_btopt_dictMatchState +#define ZSTD_compressBlock_btopt_extDict zfs_ZSTD_compressBlock_btopt_extDict +#define ZSTD_compressBlock_btultra zfs_ZSTD_compressBlock_btultra +#define ZSTD_compressBlock_btultra2 zfs_ZSTD_compressBlock_btultra2 +#define ZSTD_compressBlock_btultra_dictMatchState \ + zfs_ZSTD_compressBlock_btultra_dictMatchState +#define ZSTD_compressBlock_btultra_extDict \ + zfs_ZSTD_compressBlock_btultra_extDict +#define ZSTD_compressBlock_doubleFast zfs_ZSTD_compressBlock_doubleFast +#define ZSTD_compressBlock_doubleFast_dictMatchState \ + zfs_ZSTD_compressBlock_doubleFast_dictMatchState +#define ZSTD_compressBlock_doubleFast_extDict \ + zfs_ZSTD_compressBlock_doubleFast_extDict +#define ZSTD_compressBlock_doubleFast_extDict_generic \ + zfs_ZSTD_compressBlock_doubleFast_extDict_generic +#define ZSTD_compressBlock_fast zfs_ZSTD_compressBlock_fast +#define ZSTD_compressBlock_fast_dictMatchState \ + zfs_ZSTD_compressBlock_fast_dictMatchState +#define ZSTD_compressBlock_fast_extDict zfs_ZSTD_compressBlock_fast_extDict +#define ZSTD_compressBlock_fast_extDict_generic \ + zfs_ZSTD_compressBlock_fast_extDict_generic +#define ZSTD_compressBlock_greedy zfs_ZSTD_compressBlock_greedy +#define ZSTD_compressBlock_greedy_dictMatchState \ + zfs_ZSTD_compressBlock_greedy_dictMatchState +#define ZSTD_compressBlock_greedy_extDict zfs_ZSTD_compressBlock_greedy_extDict +#define ZSTD_compressBlock_internal zfs_ZSTD_compressBlock_internal +#define ZSTD_compressBlock_lazy zfs_ZSTD_compressBlock_lazy +#define ZSTD_compressBlock_lazy2 zfs_ZSTD_compressBlock_lazy2 +#define ZSTD_compressBlock_lazy2_dictMatchState \ + zfs_ZSTD_compressBlock_lazy2_dictMatchState +#define ZSTD_compressBlock_lazy2_extDict zfs_ZSTD_compressBlock_lazy2_extDict +#define ZSTD_compressBlock_lazy_dictMatchState \ + zfs_ZSTD_compressBlock_lazy_dictMatchState +#define ZSTD_compressBlock_lazy_extDict zfs_ZSTD_compressBlock_lazy_extDict +#define ZSTD_compressBound zfs_ZSTD_compressBound +#define ZSTD_compressCCtx zfs_ZSTD_compressCCtx +#define ZSTD_compressContinue zfs_ZSTD_compressContinue +#define ZSTD_compressContinue_internal zfs_ZSTD_compressContinue_internal +#define ZSTD_compressEnd zfs_ZSTD_compressEnd +#define ZSTD_compressLiterals zfs_ZSTD_compressLiterals +#define ZSTD_compressRleLiteralsBlock zfs_ZSTD_compressRleLiteralsBlock +#define ZSTD_compressStream zfs_ZSTD_compressStream +#define ZSTD_compressStream2 zfs_ZSTD_compressStream2 +#define ZSTD_compressStream2_simpleArgs zfs_ZSTD_compressStream2_simpleArgs +#define ZSTD_compressSuperBlock zfs_ZSTD_compressSuperBlock +#define ZSTD_compress_advanced zfs_ZSTD_compress_advanced +#define ZSTD_compress_advanced_internal zfs_ZSTD_compress_advanced_internal +#define ZSTD_compress_internal zfs_ZSTD_compress_internal +#define ZSTD_compress_usingCDict zfs_ZSTD_compress_usingCDict +#define ZSTD_compress_usingCDict_advanced zfs_ZSTD_compress_usingCDict_advanced +#define ZSTD_compress_usingDict zfs_ZSTD_compress_usingDict +#define ZSTD_copyCCtx zfs_ZSTD_copyCCtx +#define ZSTD_copyDCtx zfs_ZSTD_copyDCtx +#define ZSTD_copyDDictParameters zfs_ZSTD_copyDDictParameters +#define ZSTD_count zfs_ZSTD_count +#define ZSTD_count_2segments zfs_ZSTD_count_2segments +#define ZSTD_createCCtx zfs_ZSTD_createCCtx +#define ZSTD_createCCtxParams zfs_ZSTD_createCCtxParams +#define ZSTD_createCCtx_advanced zfs_ZSTD_createCCtx_advanced +#define ZSTD_createCDict zfs_ZSTD_createCDict +#define ZSTD_createCDict_advanced zfs_ZSTD_createCDict_advanced +#define ZSTD_createCDict_byReference zfs_ZSTD_createCDict_byReference +#define ZSTD_createCStream zfs_ZSTD_createCStream +#define ZSTD_createCStream_advanced zfs_ZSTD_createCStream_advanced +#define ZSTD_createDCtx zfs_ZSTD_createDCtx +#define ZSTD_createDCtx_advanced zfs_ZSTD_createDCtx_advanced +#define ZSTD_createDDict zfs_ZSTD_createDDict +#define ZSTD_createDDict_advanced zfs_ZSTD_createDDict_advanced +#define ZSTD_createDDict_byReference zfs_ZSTD_createDDict_byReference +#define ZSTD_createDStream zfs_ZSTD_createDStream +#define ZSTD_createDStream_advanced zfs_ZSTD_createDStream_advanced +#define ZSTD_crossEntropyCost zfs_ZSTD_crossEntropyCost +#define ZSTD_cycleLog zfs_ZSTD_cycleLog +#define ZSTD_dParam_getBounds zfs_ZSTD_dParam_getBounds +#define ZSTD_decodeLiteralsBlock zfs_ZSTD_decodeLiteralsBlock +#define ZSTD_decodeSeqHeaders zfs_ZSTD_decodeSeqHeaders +#define ZSTD_decodingBufferSize_min zfs_ZSTD_decodingBufferSize_min +#define ZSTD_decompress zfs_ZSTD_decompress +#define ZSTD_decompressBegin zfs_ZSTD_decompressBegin +#define ZSTD_decompressBegin_usingDDict zfs_ZSTD_decompressBegin_usingDDict +#define ZSTD_decompressBegin_usingDict zfs_ZSTD_decompressBegin_usingDict +#define ZSTD_decompressBlock zfs_ZSTD_decompressBlock +#define ZSTD_decompressBlock_internal zfs_ZSTD_decompressBlock_internal +#define ZSTD_decompressBound zfs_ZSTD_decompressBound +#define ZSTD_decompressContinue zfs_ZSTD_decompressContinue +#define ZSTD_decompressContinueStream zfs_ZSTD_decompressContinueStream +#define ZSTD_decompressDCtx zfs_ZSTD_decompressDCtx +#define ZSTD_decompressMultiFrame zfs_ZSTD_decompressMultiFrame +#define ZSTD_decompressStream zfs_ZSTD_decompressStream +#define ZSTD_decompressStream_simpleArgs zfs_ZSTD_decompressStream_simpleArgs +#define ZSTD_decompress_usingDDict zfs_ZSTD_decompress_usingDDict +#define ZSTD_decompress_usingDict zfs_ZSTD_decompress_usingDict +#define ZSTD_defaultCParameters zfs_ZSTD_defaultCParameters +#define ZSTD_did_fieldSize zfs_ZSTD_did_fieldSize +#define ZSTD_encodeSequences zfs_ZSTD_encodeSequences +#define ZSTD_encodeSequences_default zfs_ZSTD_encodeSequences_default +#define ZSTD_endStream zfs_ZSTD_endStream +#define ZSTD_estimateCCtxSize zfs_ZSTD_estimateCCtxSize +#define ZSTD_estimateCCtxSize_usingCCtxParams \ + zfs_ZSTD_estimateCCtxSize_usingCCtxParams +#define ZSTD_estimateCCtxSize_usingCParams \ + zfs_ZSTD_estimateCCtxSize_usingCParams +#define ZSTD_estimateCDictSize zfs_ZSTD_estimateCDictSize +#define ZSTD_estimateCDictSize_advanced zfs_ZSTD_estimateCDictSize_advanced +#define ZSTD_estimateCStreamSize zfs_ZSTD_estimateCStreamSize +#define ZSTD_estimateCStreamSize_usingCCtxParams \ + zfs_ZSTD_estimateCStreamSize_usingCCtxParams +#define ZSTD_estimateCStreamSize_usingCParams \ + zfs_ZSTD_estimateCStreamSize_usingCParams +#define ZSTD_estimateDCtxSize zfs_ZSTD_estimateDCtxSize +#define ZSTD_estimateDDictSize zfs_ZSTD_estimateDDictSize +#define ZSTD_estimateDStreamSize zfs_ZSTD_estimateDStreamSize +#define ZSTD_estimateDStreamSize_fromFrame \ + zfs_ZSTD_estimateDStreamSize_fromFrame +#define ZSTD_fcs_fieldSize zfs_ZSTD_fcs_fieldSize +#define ZSTD_fillDoubleHashTable zfs_ZSTD_fillDoubleHashTable +#define ZSTD_fillHashTable zfs_ZSTD_fillHashTable +#define ZSTD_findDecompressedSize zfs_ZSTD_findDecompressedSize +#define ZSTD_findFrameCompressedSize zfs_ZSTD_findFrameCompressedSize +#define ZSTD_findFrameSizeInfo zfs_ZSTD_findFrameSizeInfo +#define ZSTD_flushStream zfs_ZSTD_flushStream +#define ZSTD_frameHeaderSize zfs_ZSTD_frameHeaderSize +#define ZSTD_free zfs_ZSTD_free +#define ZSTD_freeCCtx zfs_ZSTD_freeCCtx +#define ZSTD_freeCCtxParams zfs_ZSTD_freeCCtxParams +#define ZSTD_freeCDict zfs_ZSTD_freeCDict +#define ZSTD_freeCStream zfs_ZSTD_freeCStream +#define ZSTD_freeDCtx zfs_ZSTD_freeDCtx +#define ZSTD_freeDDict zfs_ZSTD_freeDDict +#define ZSTD_freeDStream zfs_ZSTD_freeDStream +#define ZSTD_fseBitCost zfs_ZSTD_fseBitCost +#define ZSTD_getBlockSize zfs_ZSTD_getBlockSize +#define ZSTD_getCParams zfs_ZSTD_getCParams +#define ZSTD_getCParamsFromCCtxParams zfs_ZSTD_getCParamsFromCCtxParams +#define ZSTD_getCParamsFromCDict zfs_ZSTD_getCParamsFromCDict +#define ZSTD_getCParams_internal zfs_ZSTD_getCParams_internal +#define ZSTD_getDDict zfs_ZSTD_getDDict +#define ZSTD_getDecompressedSize zfs_ZSTD_getDecompressedSize +#define ZSTD_getDictID_fromDDict zfs_ZSTD_getDictID_fromDDict +#define ZSTD_getDictID_fromDict zfs_ZSTD_getDictID_fromDict +#define ZSTD_getDictID_fromFrame zfs_ZSTD_getDictID_fromFrame +#define ZSTD_getErrorCode zfs_ZSTD_getErrorCode +#define ZSTD_getErrorName zfs_ZSTD_getErrorName +#define ZSTD_getErrorString zfs_ZSTD_getErrorString +#define ZSTD_getFrameContentSize zfs_ZSTD_getFrameContentSize +#define ZSTD_getFrameHeader zfs_ZSTD_getFrameHeader +#define ZSTD_getFrameHeader_advanced zfs_ZSTD_getFrameHeader_advanced +#define ZSTD_getFrameProgression zfs_ZSTD_getFrameProgression +#define ZSTD_getParams zfs_ZSTD_getParams +#define ZSTD_getSeqStore zfs_ZSTD_getSeqStore +#define ZSTD_getSequences zfs_ZSTD_getSequences +#define ZSTD_getcBlockSize zfs_ZSTD_getcBlockSize +#define ZSTD_hashPtr zfs_ZSTD_hashPtr +#define ZSTD_initCDict_internal zfs_ZSTD_initCDict_internal +#define ZSTD_initCStream zfs_ZSTD_initCStream +#define ZSTD_initCStream_advanced zfs_ZSTD_initCStream_advanced +#define ZSTD_initCStream_internal zfs_ZSTD_initCStream_internal +#define ZSTD_initCStream_srcSize zfs_ZSTD_initCStream_srcSize +#define ZSTD_initCStream_usingCDict zfs_ZSTD_initCStream_usingCDict +#define ZSTD_initCStream_usingCDict_advanced \ + zfs_ZSTD_initCStream_usingCDict_advanced +#define ZSTD_initCStream_usingDict zfs_ZSTD_initCStream_usingDict +#define ZSTD_initDDict_internal zfs_ZSTD_initDDict_internal +#define ZSTD_initDStream zfs_ZSTD_initDStream +#define ZSTD_initDStream_usingDDict zfs_ZSTD_initDStream_usingDDict +#define ZSTD_initDStream_usingDict zfs_ZSTD_initDStream_usingDict +#define ZSTD_initFseState zfs_ZSTD_initFseState +#define ZSTD_initStaticCCtx zfs_ZSTD_initStaticCCtx +#define ZSTD_initStaticCDict zfs_ZSTD_initStaticCDict +#define ZSTD_initStaticCStream zfs_ZSTD_initStaticCStream +#define ZSTD_initStaticDCtx zfs_ZSTD_initStaticDCtx +#define ZSTD_initStaticDDict zfs_ZSTD_initStaticDDict +#define ZSTD_initStaticDStream zfs_ZSTD_initStaticDStream +#define ZSTD_initStats_ultra zfs_ZSTD_initStats_ultra +#define ZSTD_insertAndFindFirstIndex zfs_ZSTD_insertAndFindFirstIndex +#define ZSTD_insertAndFindFirstIndexHash3 zfs_ZSTD_insertAndFindFirstIndexHash3 +#define ZSTD_insertAndFindFirstIndex_internal \ + zfs_ZSTD_insertAndFindFirstIndex_internal +#define ZSTD_insertBlock zfs_ZSTD_insertBlock +#define ZSTD_invalidateRepCodes zfs_ZSTD_invalidateRepCodes +#define ZSTD_isFrame zfs_ZSTD_isFrame +#define ZSTD_ldm_adjustParameters zfs_ZSTD_ldm_adjustParameters +#define ZSTD_ldm_blockCompress zfs_ZSTD_ldm_blockCompress +#define ZSTD_ldm_fillHashTable zfs_ZSTD_ldm_fillHashTable +#define ZSTD_ldm_generateSequences zfs_ZSTD_ldm_generateSequences +#define ZSTD_ldm_getMaxNbSeq zfs_ZSTD_ldm_getMaxNbSeq +#define ZSTD_ldm_getTableSize zfs_ZSTD_ldm_getTableSize +#define ZSTD_ldm_skipSequences zfs_ZSTD_ldm_skipSequences +#define ZSTD_loadCEntropy zfs_ZSTD_loadCEntropy +#define ZSTD_loadDEntropy zfs_ZSTD_loadDEntropy +#define ZSTD_loadDictionaryContent zfs_ZSTD_loadDictionaryContent +#define ZSTD_makeCCtxParamsFromCParams zfs_ZSTD_makeCCtxParamsFromCParams +#define ZSTD_malloc zfs_ZSTD_malloc +#define ZSTD_maxCLevel zfs_ZSTD_maxCLevel +#define ZSTD_minCLevel zfs_ZSTD_minCLevel +#define ZSTD_nextInputType zfs_ZSTD_nextInputType +#define ZSTD_nextSrcSizeToDecompress zfs_ZSTD_nextSrcSizeToDecompress +#define ZSTD_noCompressLiterals zfs_ZSTD_noCompressLiterals +#define ZSTD_referenceExternalSequences zfs_ZSTD_referenceExternalSequences +#define ZSTD_rescaleFreqs zfs_ZSTD_rescaleFreqs +#define ZSTD_resetCCtx_internal zfs_ZSTD_resetCCtx_internal +#define ZSTD_resetCCtx_usingCDict zfs_ZSTD_resetCCtx_usingCDict +#define ZSTD_resetCStream zfs_ZSTD_resetCStream +#define ZSTD_resetDStream zfs_ZSTD_resetDStream +#define ZSTD_resetSeqStore zfs_ZSTD_resetSeqStore +#define ZSTD_reset_compressedBlockState zfs_ZSTD_reset_compressedBlockState +#define ZSTD_safecopy zfs_ZSTD_safecopy +#define ZSTD_selectBlockCompressor zfs_ZSTD_selectBlockCompressor +#define ZSTD_selectEncodingType zfs_ZSTD_selectEncodingType +#define ZSTD_seqToCodes zfs_ZSTD_seqToCodes +#define ZSTD_sizeof_CCtx zfs_ZSTD_sizeof_CCtx +#define ZSTD_sizeof_CDict zfs_ZSTD_sizeof_CDict +#define ZSTD_sizeof_CStream zfs_ZSTD_sizeof_CStream +#define ZSTD_sizeof_DCtx zfs_ZSTD_sizeof_DCtx +#define ZSTD_sizeof_DDict zfs_ZSTD_sizeof_DDict +#define ZSTD_sizeof_DStream zfs_ZSTD_sizeof_DStream +#define ZSTD_toFlushNow zfs_ZSTD_toFlushNow +#define ZSTD_updateRep zfs_ZSTD_updateRep +#define ZSTD_updateStats zfs_ZSTD_updateStats +#define ZSTD_updateTree zfs_ZSTD_updateTree +#define ZSTD_versionNumber zfs_ZSTD_versionNumber +#define ZSTD_versionString zfs_ZSTD_versionString +#define ZSTD_writeFrameHeader zfs_ZSTD_writeFrameHeader +#define ZSTD_writeLastEmptyBlock zfs_ZSTD_writeLastEmptyBlock +#define algoTime zfs_algoTime +#define attachDictSizeCutoffs zfs_attachDictSizeCutoffs +#define g_ctx zfs_g_ctx +#define g_debuglevel zfs_g_debuglevel +#define kInverseProbabilityLog256 zfs_kInverseProbabilityLog256 +#define repStartValue zfs_repStartValue +#define FSE_isError zfs_FSE_isError +#define HUF_isError zfs_HUF_isError diff --git a/module/zstd/zfs_zstd.c b/module/zstd/zfs_zstd.c index b6dd7efcc..431801d47 100644 --- a/module/zstd/zfs_zstd.c +++ b/module/zstd/zfs_zstd.c @@ -342,7 +342,7 @@ zstd_enum_to_level(enum zio_zstd_levels level, int16_t *zstd_level) /* Compress block using zstd */ size_t -zstd_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, +zfs_zstd_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int level) { size_t c_len; @@ -446,8 +446,8 @@ zstd_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, /* Decompress block using zstd and return its stored level */ int -zstd_decompress_level(void *s_start, void *d_start, size_t s_len, size_t d_len, - uint8_t *level) +zfs_zstd_decompress_level(void *s_start, void *d_start, size_t s_len, + size_t d_len, uint8_t *level) { ZSTD_DCtx *dctx; size_t result; @@ -521,11 +521,12 @@ zstd_decompress_level(void *s_start, void *d_start, size_t s_len, size_t d_len, /* Decompress datablock using zstd */ int -zstd_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, +zfs_zstd_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int level __maybe_unused) { - return (zstd_decompress_level(s_start, d_start, s_len, d_len, NULL)); + return (zfs_zstd_decompress_level(s_start, d_start, s_len, d_len, + NULL)); } /* Allocator for zstd compression context using mempool_allocator */ @@ -731,7 +732,7 @@ ZFS_MODULE_DESCRIPTION("ZSTD Compression for ZFS"); ZFS_MODULE_LICENSE("BSD"); ZFS_MODULE_VERSION(ZSTD_VERSION_STRING); -EXPORT_SYMBOL(zstd_compress); -EXPORT_SYMBOL(zstd_decompress_level); -EXPORT_SYMBOL(zstd_decompress); +EXPORT_SYMBOL(zfs_zstd_compress); +EXPORT_SYMBOL(zfs_zstd_decompress_level); +EXPORT_SYMBOL(zfs_zstd_decompress); #endif