slack: fix decompression

Turns out decompression never worked at all; likely an oversight
converting the original "transparent" versions to a true compression
option. This makes it work.

Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
This commit is contained in:
Rob Norris 2024-01-12 15:30:49 +11:00
parent 4e9cbd04a4
commit 014ff864d8
3 changed files with 11 additions and 1 deletions

View File

@ -182,6 +182,8 @@ extern int lz4_decompress_zfs(void *src, void *dst, size_t s_len, size_t d_len,
int level); int level);
extern size_t slack_compress(void *src, void *dst, size_t s_len, size_t d_len, extern size_t slack_compress(void *src, void *dst, size_t s_len, size_t d_len,
int level); int level);
extern int slack_decompress(void *src, void *dst, size_t s_len, size_t d_len,
int level);
/* /*
* Compress and decompress data if necessary. * Compress and decompress data if necessary.

View File

@ -54,3 +54,11 @@ slack_compress(void *src, void *dst, size_t s_len, size_t d_len, int level)
memcpy(dst, src, c_len); memcpy(dst, src, c_len);
return (c_len); return (c_len);
} }
int
slack_decompress(void *src, void *dst, size_t s_len, size_t d_len, int level)
{
ASSERT3U(d_len, >=, s_len);
memcpy(dst, src, s_len);
return (0);
}

View File

@ -68,7 +68,7 @@ zio_compress_info_t zio_compress_table[ZIO_COMPRESS_FUNCTIONS] = {
{"lz4", 0, lz4_compress_zfs, lz4_decompress_zfs, NULL}, {"lz4", 0, lz4_compress_zfs, lz4_decompress_zfs, NULL},
{"zstd", ZIO_ZSTD_LEVEL_DEFAULT, zfs_zstd_compress, {"zstd", ZIO_ZSTD_LEVEL_DEFAULT, zfs_zstd_compress,
zfs_zstd_decompress, zfs_zstd_decompress_level}, zfs_zstd_decompress, zfs_zstd_decompress_level},
{"slack", 0, slack_compress, NULL, NULL }, {"slack", 0, slack_compress, slack_decompress, NULL },
}; };
uint8_t uint8_t