btrfs: plumb level through the compression interface

Zlib compression supports multiple levels, but doesn't require changing
in how a workspace itself is created and managed. Zstd introduces a
different memory requirement such that higher levels of compression
require more memory.

This requires changes in how the alloc()/get() methods work for zstd.
This pach plumbs compression level through the interface as a parameter
in preparation for zstd compression levels.  This gives the compression
types opportunity to create/manage based on the compression level.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Dennis Zhou <dennis@kernel.org>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Dennis Zhou
2019-02-04 15:20:04 -05:00
committed by David Sterba
parent 92ee553036
commit 7bf4994304
5 changed files with 30 additions and 27 deletions

View File

@@ -53,9 +53,9 @@ static void zstd_cleanup_workspace_manager(void)
btrfs_cleanup_workspace_manager(&wsm);
}
static struct list_head *zstd_get_workspace(void)
static struct list_head *zstd_get_workspace(unsigned int level)
{
return btrfs_get_workspace(&wsm);
return btrfs_get_workspace(&wsm, level);
}
static void zstd_put_workspace(struct list_head *ws)
@@ -72,7 +72,7 @@ static void zstd_free_workspace(struct list_head *ws)
kfree(workspace);
}
static struct list_head *zstd_alloc_workspace(void)
static struct list_head *zstd_alloc_workspace(unsigned int level)
{
ZSTD_parameters params =
zstd_get_btrfs_parameters(ZSTD_BTRFS_MAX_INPUT);