From: David Sterba Date: Tue, 1 Oct 2019 22:53:31 +0000 (+0200) Subject: btrfs: compression: attach workspace manager to the ops X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=be951045312d963ffeacd6a566a0de87e4784af1;p=linux.git btrfs: compression: attach workspace manager to the ops There's a lot of indirection when the generic code calls into algo-specific callbacks to reach the private workspace manager structure and back to the generic code. To simplify that, export the workspace manager for heuristic, LZO and ZLIB, while ZSTD is going to use it's own manager. Reviewed-by: Johannes Thumshirn Reviewed-by: Nikolay Borisov Signed-off-by: David Sterba --- diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c index 87bac8f73a99e..e650125b1d2bf 100644 --- a/fs/btrfs/compression.c +++ b/fs/btrfs/compression.c @@ -920,6 +920,7 @@ fail: } const struct btrfs_compress_op btrfs_heuristic_compress = { + .workspace_manager = &heuristic_wsm, .init_workspace_manager = heuristic_init_workspace_manager, .cleanup_workspace_manager = heuristic_cleanup_workspace_manager, .get_workspace = heuristic_get_workspace, diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h index 7db14d3166b5e..7091eae063e55 100644 --- a/fs/btrfs/compression.h +++ b/fs/btrfs/compression.h @@ -140,6 +140,7 @@ struct btrfs_compress_op { void (*free_workspace)(struct list_head *workspace); + struct workspace_manager *workspace_manager; /* Maximum level supported by the compression algorithm */ unsigned int max_level; unsigned int default_level; diff --git a/fs/btrfs/lzo.c b/fs/btrfs/lzo.c index 9417944ec8292..aff105cc80e7f 100644 --- a/fs/btrfs/lzo.c +++ b/fs/btrfs/lzo.c @@ -503,6 +503,7 @@ out: } const struct btrfs_compress_op btrfs_lzo_compress = { + .workspace_manager = &wsm, .init_workspace_manager = lzo_init_workspace_manager, .cleanup_workspace_manager = lzo_cleanup_workspace_manager, .get_workspace = lzo_get_workspace, diff --git a/fs/btrfs/zlib.c b/fs/btrfs/zlib.c index 8bb6f19ab3692..a5e8f02074731 100644 --- a/fs/btrfs/zlib.c +++ b/fs/btrfs/zlib.c @@ -414,6 +414,7 @@ next: } const struct btrfs_compress_op btrfs_zlib_compress = { + .workspace_manager = &wsm, .init_workspace_manager = zlib_init_workspace_manager, .cleanup_workspace_manager = zlib_cleanup_workspace_manager, .get_workspace = zlib_get_workspace, diff --git a/fs/btrfs/zstd.c b/fs/btrfs/zstd.c index 5f17c741d1679..4791e89e43e34 100644 --- a/fs/btrfs/zstd.c +++ b/fs/btrfs/zstd.c @@ -707,6 +707,8 @@ finish: } const struct btrfs_compress_op btrfs_zstd_compress = { + /* ZSTD uses own workspace manager */ + .workspace_manager = NULL, .init_workspace_manager = zstd_init_workspace_manager, .cleanup_workspace_manager = zstd_cleanup_workspace_manager, .get_workspace = zstd_get_workspace,