summaryrefslogtreecommitdiff
path: root/fs/btrfs/compression.h
diff options
context:
space:
mode:
authorDennis Zhou <dennis@kernel.org>2019-02-04 23:20:04 +0300
committerDavid Sterba <dsterba@suse.com>2019-02-25 16:13:32 +0300
commit7bf4994304e27454c5cf99de1d43033cb29b34fd (patch)
tree573166fb907ca78db50dfcad60921bf09a9f4923 /fs/btrfs/compression.h
parent92ee55303616a18135be91deff51799a5de81f9a (diff)
downloadlinux-7bf4994304e27454c5cf99de1d43033cb29b34fd.tar.xz
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>
Diffstat (limited to 'fs/btrfs/compression.h')
-rw-r--r--fs/btrfs/compression.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h
index e298aa9e6b33..2ab8b2f29d88 100644
--- a/fs/btrfs/compression.h
+++ b/fs/btrfs/compression.h
@@ -121,7 +121,8 @@ struct workspace_manager {
void btrfs_init_workspace_manager(struct workspace_manager *wsm,
const struct btrfs_compress_op *ops);
-struct list_head *btrfs_get_workspace(struct workspace_manager *wsm);
+struct list_head *btrfs_get_workspace(struct workspace_manager *wsm,
+ unsigned int level);
void btrfs_put_workspace(struct workspace_manager *wsm, struct list_head *ws);
void btrfs_cleanup_workspace_manager(struct workspace_manager *wsm);
@@ -130,11 +131,11 @@ struct btrfs_compress_op {
void (*cleanup_workspace_manager)(void);
- struct list_head *(*get_workspace)(void);
+ struct list_head *(*get_workspace)(unsigned int level);
void (*put_workspace)(struct list_head *ws);
- struct list_head *(*alloc_workspace)(void);
+ struct list_head *(*alloc_workspace)(unsigned int level);
void (*free_workspace)(struct list_head *workspace);