static void heuristic_init_workspace_manager(void)
 {
-       btrfs_init_workspace_manager(&heuristic_wsm, &btrfs_heuristic_compress);
+       btrfs_init_workspace_manager(BTRFS_COMPRESS_NONE);
 }
 
 static void heuristic_cleanup_workspace_manager(void)
        &btrfs_zstd_compress,
 };
 
-void btrfs_init_workspace_manager(struct workspace_manager *wsm,
-                                 const struct btrfs_compress_op *ops)
+void btrfs_init_workspace_manager(int type)
 {
+       const struct btrfs_compress_op *ops = btrfs_compress_op[type];
+       struct workspace_manager *wsm = ops->workspace_manager;
        struct list_head *workspace;
 
        wsm->ops = ops;
 
        wait_queue_head_t ws_wait;
 };
 
-void btrfs_init_workspace_manager(struct workspace_manager *wsm,
-                                 const struct btrfs_compress_op *ops);
+void btrfs_init_workspace_manager(int type);
 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);
 
 
 static void lzo_init_workspace_manager(void)
 {
-       btrfs_init_workspace_manager(&wsm, &btrfs_lzo_compress);
+       btrfs_init_workspace_manager(BTRFS_COMPRESS_LZO);
 }
 
 static void lzo_cleanup_workspace_manager(void)
 
 
 static void zlib_init_workspace_manager(void)
 {
-       btrfs_init_workspace_manager(&wsm, &btrfs_zlib_compress);
+       btrfs_init_workspace_manager(BTRFS_COMPRESS_ZLIB);
 }
 
 static void zlib_cleanup_workspace_manager(void)