Loading fs/erofs/compress.h +5 −15 Original line number Diff line number Diff line Loading @@ -81,21 +81,11 @@ static inline bool z_erofs_put_shortlivedpage(struct page **pagepool, return true; } extern const struct z_erofs_decompressor z_erofs_lzma_decomp; extern const struct z_erofs_decompressor z_erofs_deflate_decomp; extern const struct z_erofs_decompressor z_erofs_zstd_decomp; extern const struct z_erofs_decompressor *z_erofs_decomp[]; int z_erofs_fixup_insize(struct z_erofs_decompress_req *rq, const char *padbuf, unsigned int padbufsize); extern const struct z_erofs_decompressor erofs_decompressors[]; /* prototypes for specific algorithms */ int z_erofs_load_lzma_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size); int z_erofs_load_deflate_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size); int z_erofs_load_zstd_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size); int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, struct page **pagepool); int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, struct page **pagepool); int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, struct page **pgpl); #endif fs/erofs/decompressor.c +11 −25 Original line number Diff line number Diff line Loading @@ -371,40 +371,28 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq, return 0; } const struct z_erofs_decompressor erofs_decompressors[] = { [Z_EROFS_COMPRESSION_SHIFTED] = { const struct z_erofs_decompressor *z_erofs_decomp[] = { [Z_EROFS_COMPRESSION_SHIFTED] = &(const struct z_erofs_decompressor) { .decompress = z_erofs_transform_plain, .name = "shifted" }, [Z_EROFS_COMPRESSION_INTERLACED] = { [Z_EROFS_COMPRESSION_INTERLACED] = &(const struct z_erofs_decompressor) { .decompress = z_erofs_transform_plain, .name = "interlaced" }, [Z_EROFS_COMPRESSION_LZ4] = { [Z_EROFS_COMPRESSION_LZ4] = &(const struct z_erofs_decompressor) { .config = z_erofs_load_lz4_config, .decompress = z_erofs_lz4_decompress, .name = "lz4" }, #ifdef CONFIG_EROFS_FS_ZIP_LZMA [Z_EROFS_COMPRESSION_LZMA] = { .config = z_erofs_load_lzma_config, .decompress = z_erofs_lzma_decompress, .name = "lzma" }, [Z_EROFS_COMPRESSION_LZMA] = &z_erofs_lzma_decomp, #endif #ifdef CONFIG_EROFS_FS_ZIP_DEFLATE [Z_EROFS_COMPRESSION_DEFLATE] = { .config = z_erofs_load_deflate_config, .decompress = z_erofs_deflate_decompress, .name = "deflate" }, [Z_EROFS_COMPRESSION_DEFLATE] = &z_erofs_deflate_decomp, #endif #ifdef CONFIG_EROFS_FS_ZIP_ZSTD [Z_EROFS_COMPRESSION_ZSTD] = { .config = z_erofs_load_zstd_config, .decompress = z_erofs_zstd_decompress, .name = "zstd" }, [Z_EROFS_COMPRESSION_ZSTD] = &z_erofs_zstd_decomp, #endif }; Loading Loading @@ -432,6 +420,7 @@ int z_erofs_parse_cfgs(struct super_block *sb, struct erofs_super_block *dsb) offset = EROFS_SUPER_OFFSET + sbi->sb_size; alg = 0; for (algs = sbi->available_compr_algs; algs; algs >>= 1, ++alg) { const struct z_erofs_decompressor *dec = z_erofs_decomp[alg]; void *data; if (!(algs & 1)) Loading @@ -443,16 +432,13 @@ int z_erofs_parse_cfgs(struct super_block *sb, struct erofs_super_block *dsb) break; } if (alg >= ARRAY_SIZE(erofs_decompressors) || !erofs_decompressors[alg].config) { if (alg < Z_EROFS_COMPRESSION_MAX && dec && dec->config) { ret = dec->config(sb, dsb, data, size); } else { erofs_err(sb, "algorithm %d isn't enabled on this kernel", alg); ret = -EOPNOTSUPP; } else { ret = erofs_decompressors[alg].config(sb, dsb, data, size); } kfree(data); if (ret) break; Loading fs/erofs/decompressor_deflate.c +9 −3 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ int __init z_erofs_deflate_init(void) return 0; } int z_erofs_load_deflate_config(struct super_block *sb, static int z_erofs_load_deflate_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { struct z_erofs_deflate_cfgs *dfl = data; Loading Loading @@ -97,7 +97,7 @@ int z_erofs_load_deflate_config(struct super_block *sb, return -ENOMEM; } int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, static int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, struct page **pgpl) { const unsigned int nrpages_out = Loading Loading @@ -252,3 +252,9 @@ int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_deflate_wq); return err; } const struct z_erofs_decompressor z_erofs_deflate_decomp = { .config = z_erofs_load_deflate_config, .decompress = z_erofs_deflate_decompress, .name = "deflate", }; fs/erofs/decompressor_lzma.c +9 −3 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ int __init z_erofs_lzma_init(void) return 0; } int z_erofs_load_lzma_config(struct super_block *sb, static int z_erofs_load_lzma_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { static DEFINE_MUTEX(lzma_resize_mutex); Loading Loading @@ -147,7 +147,7 @@ int z_erofs_load_lzma_config(struct super_block *sb, return err; } int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, static int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, struct page **pgpl) { const unsigned int nrpages_out = Loading Loading @@ -293,3 +293,9 @@ int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_lzma_wq); return err; } const struct z_erofs_decompressor z_erofs_lzma_decomp = { .config = z_erofs_load_lzma_config, .decompress = z_erofs_lzma_decompress, .name = "lzma" }; fs/erofs/decompressor_zstd.c +9 −3 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ int __init z_erofs_zstd_init(void) return 0; } int z_erofs_load_zstd_config(struct super_block *sb, static int z_erofs_load_zstd_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { static DEFINE_MUTEX(zstd_resize_mutex); Loading Loading @@ -135,7 +135,7 @@ int z_erofs_load_zstd_config(struct super_block *sb, return strm ? -ENOMEM : 0; } int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, static int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, struct page **pgpl) { const unsigned int nrpages_out = Loading Loading @@ -277,3 +277,9 @@ int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_zstd_wq); return err; } const struct z_erofs_decompressor z_erofs_zstd_decomp = { .config = z_erofs_load_zstd_config, .decompress = z_erofs_zstd_decompress, .name = "zstd", }; Loading
fs/erofs/compress.h +5 −15 Original line number Diff line number Diff line Loading @@ -81,21 +81,11 @@ static inline bool z_erofs_put_shortlivedpage(struct page **pagepool, return true; } extern const struct z_erofs_decompressor z_erofs_lzma_decomp; extern const struct z_erofs_decompressor z_erofs_deflate_decomp; extern const struct z_erofs_decompressor z_erofs_zstd_decomp; extern const struct z_erofs_decompressor *z_erofs_decomp[]; int z_erofs_fixup_insize(struct z_erofs_decompress_req *rq, const char *padbuf, unsigned int padbufsize); extern const struct z_erofs_decompressor erofs_decompressors[]; /* prototypes for specific algorithms */ int z_erofs_load_lzma_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size); int z_erofs_load_deflate_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size); int z_erofs_load_zstd_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size); int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, struct page **pagepool); int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, struct page **pagepool); int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, struct page **pgpl); #endif
fs/erofs/decompressor.c +11 −25 Original line number Diff line number Diff line Loading @@ -371,40 +371,28 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq, return 0; } const struct z_erofs_decompressor erofs_decompressors[] = { [Z_EROFS_COMPRESSION_SHIFTED] = { const struct z_erofs_decompressor *z_erofs_decomp[] = { [Z_EROFS_COMPRESSION_SHIFTED] = &(const struct z_erofs_decompressor) { .decompress = z_erofs_transform_plain, .name = "shifted" }, [Z_EROFS_COMPRESSION_INTERLACED] = { [Z_EROFS_COMPRESSION_INTERLACED] = &(const struct z_erofs_decompressor) { .decompress = z_erofs_transform_plain, .name = "interlaced" }, [Z_EROFS_COMPRESSION_LZ4] = { [Z_EROFS_COMPRESSION_LZ4] = &(const struct z_erofs_decompressor) { .config = z_erofs_load_lz4_config, .decompress = z_erofs_lz4_decompress, .name = "lz4" }, #ifdef CONFIG_EROFS_FS_ZIP_LZMA [Z_EROFS_COMPRESSION_LZMA] = { .config = z_erofs_load_lzma_config, .decompress = z_erofs_lzma_decompress, .name = "lzma" }, [Z_EROFS_COMPRESSION_LZMA] = &z_erofs_lzma_decomp, #endif #ifdef CONFIG_EROFS_FS_ZIP_DEFLATE [Z_EROFS_COMPRESSION_DEFLATE] = { .config = z_erofs_load_deflate_config, .decompress = z_erofs_deflate_decompress, .name = "deflate" }, [Z_EROFS_COMPRESSION_DEFLATE] = &z_erofs_deflate_decomp, #endif #ifdef CONFIG_EROFS_FS_ZIP_ZSTD [Z_EROFS_COMPRESSION_ZSTD] = { .config = z_erofs_load_zstd_config, .decompress = z_erofs_zstd_decompress, .name = "zstd" }, [Z_EROFS_COMPRESSION_ZSTD] = &z_erofs_zstd_decomp, #endif }; Loading Loading @@ -432,6 +420,7 @@ int z_erofs_parse_cfgs(struct super_block *sb, struct erofs_super_block *dsb) offset = EROFS_SUPER_OFFSET + sbi->sb_size; alg = 0; for (algs = sbi->available_compr_algs; algs; algs >>= 1, ++alg) { const struct z_erofs_decompressor *dec = z_erofs_decomp[alg]; void *data; if (!(algs & 1)) Loading @@ -443,16 +432,13 @@ int z_erofs_parse_cfgs(struct super_block *sb, struct erofs_super_block *dsb) break; } if (alg >= ARRAY_SIZE(erofs_decompressors) || !erofs_decompressors[alg].config) { if (alg < Z_EROFS_COMPRESSION_MAX && dec && dec->config) { ret = dec->config(sb, dsb, data, size); } else { erofs_err(sb, "algorithm %d isn't enabled on this kernel", alg); ret = -EOPNOTSUPP; } else { ret = erofs_decompressors[alg].config(sb, dsb, data, size); } kfree(data); if (ret) break; Loading
fs/erofs/decompressor_deflate.c +9 −3 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ int __init z_erofs_deflate_init(void) return 0; } int z_erofs_load_deflate_config(struct super_block *sb, static int z_erofs_load_deflate_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { struct z_erofs_deflate_cfgs *dfl = data; Loading Loading @@ -97,7 +97,7 @@ int z_erofs_load_deflate_config(struct super_block *sb, return -ENOMEM; } int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, static int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, struct page **pgpl) { const unsigned int nrpages_out = Loading Loading @@ -252,3 +252,9 @@ int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_deflate_wq); return err; } const struct z_erofs_decompressor z_erofs_deflate_decomp = { .config = z_erofs_load_deflate_config, .decompress = z_erofs_deflate_decompress, .name = "deflate", };
fs/erofs/decompressor_lzma.c +9 −3 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ int __init z_erofs_lzma_init(void) return 0; } int z_erofs_load_lzma_config(struct super_block *sb, static int z_erofs_load_lzma_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { static DEFINE_MUTEX(lzma_resize_mutex); Loading Loading @@ -147,7 +147,7 @@ int z_erofs_load_lzma_config(struct super_block *sb, return err; } int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, static int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, struct page **pgpl) { const unsigned int nrpages_out = Loading Loading @@ -293,3 +293,9 @@ int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_lzma_wq); return err; } const struct z_erofs_decompressor z_erofs_lzma_decomp = { .config = z_erofs_load_lzma_config, .decompress = z_erofs_lzma_decompress, .name = "lzma" };
fs/erofs/decompressor_zstd.c +9 −3 Original line number Diff line number Diff line Loading @@ -72,7 +72,7 @@ int __init z_erofs_zstd_init(void) return 0; } int z_erofs_load_zstd_config(struct super_block *sb, static int z_erofs_load_zstd_config(struct super_block *sb, struct erofs_super_block *dsb, void *data, int size) { static DEFINE_MUTEX(zstd_resize_mutex); Loading Loading @@ -135,7 +135,7 @@ int z_erofs_load_zstd_config(struct super_block *sb, return strm ? -ENOMEM : 0; } int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, static int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, struct page **pgpl) { const unsigned int nrpages_out = Loading Loading @@ -277,3 +277,9 @@ int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq, wake_up(&z_erofs_zstd_wq); return err; } const struct z_erofs_decompressor z_erofs_zstd_decomp = { .config = z_erofs_load_zstd_config, .decompress = z_erofs_zstd_decompress, .name = "zstd", };