Changeset View
Changeset View
Standalone View
Standalone View
sys/contrib/openzfs/include/sys/zio_compress.h
Show All 24 Lines | |||||
* Copyright (c) 2019, Klara Inc. | * Copyright (c) 2019, Klara Inc. | ||||
* Use is subject to license terms. | * Use is subject to license terms. | ||||
* Copyright (c) 2015, 2016 by Delphix. All rights reserved. | * Copyright (c) 2015, 2016 by Delphix. All rights reserved. | ||||
*/ | */ | ||||
#ifndef _SYS_ZIO_COMPRESS_H | #ifndef _SYS_ZIO_COMPRESS_H | ||||
#define _SYS_ZIO_COMPRESS_H | #define _SYS_ZIO_COMPRESS_H | ||||
#if !defined(_STANDALONE) | |||||
#include <sys/abd.h> | #include <sys/abd.h> | ||||
#endif | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" { | extern "C" { | ||||
#endif | #endif | ||||
enum zio_compress { | enum zio_compress { | ||||
ZIO_COMPRESS_INHERIT = 0, | ZIO_COMPRESS_INHERIT = 0, | ||||
ZIO_COMPRESS_ON, | ZIO_COMPRESS_ON, | ||||
▲ Show 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | typedef int zio_decompress_func_t(void *src, void *dst, | ||||
size_t s_len, size_t d_len, int); | size_t s_len, size_t d_len, int); | ||||
/* Common signature for all zio decompress and get level functions. */ | /* Common signature for all zio decompress and get level functions. */ | ||||
typedef int zio_decompresslevel_func_t(void *src, void *dst, | typedef int zio_decompresslevel_func_t(void *src, void *dst, | ||||
size_t s_len, size_t d_len, uint8_t *level); | size_t s_len, size_t d_len, uint8_t *level); | ||||
/* Common signature for all zio get-compression-level functions. */ | /* Common signature for all zio get-compression-level functions. */ | ||||
typedef int zio_getlevel_func_t(void *src, size_t s_len, uint8_t *level); | typedef int zio_getlevel_func_t(void *src, size_t s_len, uint8_t *level); | ||||
#if !defined(_STANDALONE) | |||||
/* | /* | ||||
* Common signature for all zio decompress functions using an ABD as input. | * Common signature for all zio decompress functions using an ABD as input. | ||||
* This is helpful if you have both compressed ARC and scatter ABDs enabled, | * This is helpful if you have both compressed ARC and scatter ABDs enabled, | ||||
* but is not a requirement for all compression algorithms. | * but is not a requirement for all compression algorithms. | ||||
*/ | */ | ||||
typedef int zio_decompress_abd_func_t(abd_t *src, void *dst, | typedef int zio_decompress_abd_func_t(abd_t *src, void *dst, | ||||
size_t s_len, size_t d_len, int); | size_t s_len, size_t d_len, int); | ||||
#endif | |||||
/* | /* | ||||
* Information about each compression function. | * Information about each compression function. | ||||
*/ | */ | ||||
typedef const struct zio_compress_info { | typedef const struct zio_compress_info { | ||||
char *ci_name; | char *ci_name; | ||||
int ci_level; | int ci_level; | ||||
zio_compress_func_t *ci_compress; | zio_compress_func_t *ci_compress; | ||||
zio_decompress_func_t *ci_decompress; | zio_decompress_func_t *ci_decompress; | ||||
Show All 26 Lines | |||||
extern size_t lz4_compress_zfs(void *src, void *dst, size_t s_len, size_t d_len, | extern size_t lz4_compress_zfs(void *src, void *dst, size_t s_len, size_t d_len, | ||||
int level); | int level); | ||||
extern int lz4_decompress_zfs(void *src, void *dst, size_t s_len, size_t d_len, | extern int lz4_decompress_zfs(void *src, void *dst, size_t s_len, size_t d_len, | ||||
int level); | int level); | ||||
/* | /* | ||||
* Compress and decompress data if necessary. | * Compress and decompress data if necessary. | ||||
*/ | */ | ||||
#if !defined(_STANDALONE) | |||||
extern size_t zio_compress_data(enum zio_compress c, abd_t *src, void *dst, | extern size_t zio_compress_data(enum zio_compress c, abd_t *src, void *dst, | ||||
size_t s_len, uint8_t level); | size_t s_len, uint8_t level); | ||||
extern int zio_decompress_data(enum zio_compress c, abd_t *src, void *dst, | extern int zio_decompress_data(enum zio_compress c, abd_t *src, void *dst, | ||||
size_t s_len, size_t d_len, uint8_t *level); | size_t s_len, size_t d_len, uint8_t *level); | ||||
#endif | |||||
extern int zio_decompress_data_buf(enum zio_compress c, void *src, void *dst, | extern int zio_decompress_data_buf(enum zio_compress c, void *src, void *dst, | ||||
size_t s_len, size_t d_len, uint8_t *level); | size_t s_len, size_t d_len, uint8_t *level); | ||||
extern int zio_compress_to_feature(enum zio_compress comp); | extern int zio_compress_to_feature(enum zio_compress comp); | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
} | } | ||||
#endif | #endif | ||||
#endif /* _SYS_ZIO_COMPRESS_H */ | #endif /* _SYS_ZIO_COMPRESS_H */ |