btrfs: manage heuristic workspace as index 0
[sfrench/cifs-2.6.git] / fs / btrfs / compression.h
index ddda9b80bf2044edc3ae210bb401ce8e728fdbe2..9a0e73c65b871ccf323420a4f3b865215f64a4f2 100644 (file)
@@ -64,6 +64,16 @@ struct compressed_bio {
        u32 sums;
 };
 
+static inline unsigned int btrfs_compress_type(unsigned int type_level)
+{
+       return (type_level & 0xF);
+}
+
+static inline unsigned int btrfs_compress_level(unsigned int type_level)
+{
+       return ((type_level & 0xF0) >> 4);
+}
+
 void __init btrfs_init_compress(void);
 void __cold btrfs_exit_compress(void);
 
@@ -122,6 +132,10 @@ struct btrfs_compress_op {
        void (*set_level)(struct list_head *ws, unsigned int type);
 };
 
+/* The heuristic workspaces are managed via the 0th workspace manager */
+#define BTRFS_NR_WORKSPACE_MANAGERS    (BTRFS_COMPRESS_TYPES + 1)
+
+extern const struct btrfs_compress_op btrfs_heuristic_compress;
 extern const struct btrfs_compress_op btrfs_zlib_compress;
 extern const struct btrfs_compress_op btrfs_lzo_compress;
 extern const struct btrfs_compress_op btrfs_zstd_compress;