]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/ubifs/compress.c
Merge branch 'pm-cpufreq'
[linux.git] / fs / ubifs / compress.c
index 99c53ad11e93e360a99edaa1da30d2dbd30cd8dd..3a92e6af69b2296347c97adece77e85a2224e0ef 100644 (file)
@@ -59,6 +59,24 @@ static struct ubifs_compressor zlib_compr = {
 };
 #endif
 
+#ifdef CONFIG_UBIFS_FS_ZSTD
+static DEFINE_MUTEX(zstd_enc_mutex);
+static DEFINE_MUTEX(zstd_dec_mutex);
+
+static struct ubifs_compressor zstd_compr = {
+       .compr_type = UBIFS_COMPR_ZSTD,
+       .comp_mutex = &zstd_enc_mutex,
+       .decomp_mutex = &zstd_dec_mutex,
+       .name = "zstd",
+       .capi_name = "zstd",
+};
+#else
+static struct ubifs_compressor zstd_compr = {
+       .compr_type = UBIFS_COMPR_ZSTD,
+       .name = "zstd",
+};
+#endif
+
 /* All UBIFS compressors */
 struct ubifs_compressor *ubifs_compressors[UBIFS_COMPR_TYPES_CNT];
 
@@ -216,13 +234,19 @@ int __init ubifs_compressors_init(void)
        if (err)
                return err;
 
-       err = compr_init(&zlib_compr);
+       err = compr_init(&zstd_compr);
        if (err)
                goto out_lzo;
 
+       err = compr_init(&zlib_compr);
+       if (err)
+               goto out_zstd;
+
        ubifs_compressors[UBIFS_COMPR_NONE] = &none_compr;
        return 0;
 
+out_zstd:
+       compr_exit(&zstd_compr);
 out_lzo:
        compr_exit(&lzo_compr);
        return err;
@@ -235,4 +259,5 @@ void ubifs_compressors_exit(void)
 {
        compr_exit(&lzo_compr);
        compr_exit(&zlib_compr);
+       compr_exit(&zstd_compr);
 }