fs/smb/common/compress/lz77.h
Source file repositories/reference/linux-study-clean/fs/smb/common/compress/lz77.h
File Facts
- System
- Linux kernel
- Corpus path
fs/smb/common/compress/lz77.h- Extension
.h- Size
- 1593 bytes
- Lines
- 47
- Domain
- Core OS
- Bucket
- VFS And Filesystem Core
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
Dependency Surface
linux/kernel.h
Detected Declarations
function Copyright
Annotated Snippet
#ifndef _SMB_COMPRESS_LZ77_H
#define _SMB_COMPRESS_LZ77_H
#include <linux/kernel.h>
/**
* smb_lz77_compressed_alloc_size() - Compute compressed buffer size.
* @size: uncompressed (src) size
*
* Compute allocation size for the compressed buffer based on uncompressed size.
* Accounts for metadata and overprovision for the worst case scenario.
*
* LZ77 metadata is a 4-byte flag that is written:
* - on dst begin (pos 0)
* - every 32 literals or matches
* - on end-of-stream (possibly, if last write was another flag)
*
* Worst case scenario is an all-literal compression, which means:
* metadata bytes = 4 + ((@size / 32) * 4) + 4, or, simplified, (@size >> 3) + 8
*
* The worst case scenario rarely happens, but such overprovisioning also
* allows smb_lz77_compress() main loop to run without ever bound checking dst,
* which is a huge perf improvement, while also being safe when compression goes
* bad.
*
* Return: required (*) allocation size for compressed buffer.
*
* (*) checked once in the beginning of smb_lz77_compress()
*/
static __always_inline u32 smb_lz77_compressed_alloc_size(const u32 size)
{
return size + (size >> 3) + 8;
}
int smb_lz77_compress(const void *src, const u32 slen, void *dst, u32 *dlen);
int smb_lz77_decompress(const void *src, const u32 slen, void *dst,
const u32 dlen);
#endif /* _SMB_COMPRESS_LZ77_H */
Annotation
- Immediate include surface: `linux/kernel.h`.
- Detected declarations: `function Copyright`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.