mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
erofs: move each decompressor to its own source file
Thus *_config() function declarations can be avoided. Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com> Link: https://lore.kernel.org/r/20240709094106.3018109-1-hsiangkao@linux.alibaba.com
This commit is contained in:
parent
2080ca1ed3
commit
392d20ccef
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
@ -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))
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -97,8 +97,8 @@ int z_erofs_load_deflate_config(struct super_block *sb,
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq,
|
||||
struct page **pgpl)
|
||||
static int z_erofs_deflate_decompress(struct z_erofs_decompress_req *rq,
|
||||
struct page **pgpl)
|
||||
{
|
||||
const unsigned int nrpages_out =
|
||||
PAGE_ALIGN(rq->pageofs_out + rq->outputsize) >> PAGE_SHIFT;
|
||||
|
|
@ -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",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
@ -147,8 +147,8 @@ int z_erofs_load_lzma_config(struct super_block *sb,
|
|||
return err;
|
||||
}
|
||||
|
||||
int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq,
|
||||
struct page **pgpl)
|
||||
static int z_erofs_lzma_decompress(struct z_erofs_decompress_req *rq,
|
||||
struct page **pgpl)
|
||||
{
|
||||
const unsigned int nrpages_out =
|
||||
PAGE_ALIGN(rq->pageofs_out + rq->outputsize) >> PAGE_SHIFT;
|
||||
|
|
@ -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"
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
@ -135,8 +135,8 @@ 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,
|
||||
struct page **pgpl)
|
||||
static int z_erofs_zstd_decompress(struct z_erofs_decompress_req *rq,
|
||||
struct page **pgpl)
|
||||
{
|
||||
const unsigned int nrpages_out =
|
||||
PAGE_ALIGN(rq->pageofs_out + rq->outputsize) >> PAGE_SHIFT;
|
||||
|
|
@ -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",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1213,7 +1213,7 @@ static int z_erofs_decompress_pcluster(struct z_erofs_decompress_backend *be,
|
|||
struct z_erofs_pcluster *pcl = be->pcl;
|
||||
unsigned int pclusterpages = z_erofs_pclusterpages(pcl);
|
||||
const struct z_erofs_decompressor *decomp =
|
||||
&erofs_decompressors[pcl->algorithmformat];
|
||||
z_erofs_decomp[pcl->algorithmformat];
|
||||
int i, err2;
|
||||
struct page *page;
|
||||
bool overlapped;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user