From 7880991344f73647fa2222b198cf5cfc10805ac2 Mon Sep 17 00:00:00 2001 From: Sergey Senozhatsky Date: Mon, 7 Jul 2014 23:38:29 +0900 Subject: [PATCH] btrfs compression: merge inflate and deflate z_streams `struct workspace' used for zlib compression contains two zlib z_stream-s: `def_strm' used in zlib_compress_pages(), and `inf_strm' used in zlib_decompress/zlib_decompress_biovec(). None of these functions use `inf_strm' and `def_strm' simultaniously, meaning that for every compress/decompress operation we need only one z_stream (out of two available). `inf_strm' and `def_strm' are different in size of ->workspace. For inflate stream we vmalloc() zlib_inflate_workspacesize() bytes, for deflate stream - zlib_deflate_workspacesize() bytes. On my system zlib returns the following workspace sizes, correspondingly: 42312 and 268104 (+ guard pages). Keep only one `z_stream' in `struct workspace' and use it for both compression and decompression. Hence, instead of vmalloc() of two z_stream->worskpace-s, allocate only one of size: max(zlib_deflate_workspacesize(), zlib_inflate_workspacesize()) Reviewed-by: David Sterba Signed-off-by: Sergey Senozhatsky Signed-off-by: Chris Mason --- Reading git-format-patch failed