mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-20 08:42:06 +00:00
- Check data compressibility with some heuristics (copied from
btrfs):
- should_compress() final decision is is_compressible(data)
- Cleanup compress/lz77.h leaving only lz77_compress() exposed:
- Move parts to compress/lz77.c, while removing the rest of it
because they were either unused, used only once, were
implemented wrong (thanks to David Howells for the help)
- Updated the compression parameters (still compatible with
Windows implementation) trading off ~20% compression ratio
for ~40% performance:
- min match len: 3 -> 4
- max distance: 8KiB -> 1KiB
- hash table type: u32 * -> u64 *
Known bugs:
This implementation currently works fine in general, but breaks with
some payloads used during testing. Investigation ongoing, to be
fixed in a next commit.
Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
Co-developed-by: David Howells <dhowells@redhat.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
16 lines
406 B
C
16 lines
406 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2024, SUSE LLC
|
|
*
|
|
* Authors: Enzo Matsumiya <ematsumiya@suse.de>
|
|
*
|
|
* Implementation of the LZ77 "plain" compression algorithm, as per MS-XCA spec.
|
|
*/
|
|
#ifndef _SMB_COMPRESS_LZ77_H
|
|
#define _SMB_COMPRESS_LZ77_H
|
|
|
|
#include <linux/kernel.h>
|
|
|
|
int lz77_compress(const void *src, u32 slen, void *dst, u32 *dlen);
|
|
#endif /* _SMB_COMPRESS_LZ77_H */
|