mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Linux 2.6.39 compat, zlib_deflate_workspacesize()
The function zlib_deflate_workspacesize() now take 2 arguments. This was done to avoid always having to allocate the maximum size workspace (268K). The caller can now specific the windowBits and memLevel compression parameters to get a smaller workspace. For our purposes we introduce a spl_zlib_deflate_workspacesize() wrapper which accepts both arguments. When the two argument version of zlib_deflate_workspacesize() is available the arguments are passed through. When it's not we assume the worst case and a maximally sized workspace is used.
This commit is contained in:
@@ -198,10 +198,14 @@ EXPORT_SYMBOL(z_uncompress);
|
||||
|
||||
int zlib_init(void)
|
||||
{
|
||||
int size;
|
||||
SENTRY;
|
||||
|
||||
size = MAX(spl_zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL),
|
||||
zlib_inflate_workspacesize());
|
||||
|
||||
zlib_workspace_cache = kmem_cache_create("spl_zlib_workspace_cache",
|
||||
max(zlib_deflate_workspacesize(), zlib_inflate_workspacesize()),
|
||||
0, NULL, NULL, NULL, NULL, NULL, KMC_VMEM);
|
||||
size, 0, NULL, NULL, NULL, NULL, NULL, KMC_VMEM);
|
||||
if (!zlib_workspace_cache)
|
||||
SRETURN(1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user