[PATCH v2 2/4] erofs-utils: lib: unify all identical compressor print function
Guo Xuenan
guoxuenan at huaweicloud.com
Thu Jun 15 22:01:31 AEST 2023
On 2023/6/15 18:46, Gao Xiang wrote:
>
>
> On 2023/6/15 18:17, Guo Xuenan via Linux-erofs wrote:
>> {dump,fsck}.erofs use the same compressor print function,
>> available compressors means which algothrims are currently
>> supported by binary tools.
>> supported compressors including all algothrims that are ready
>> for your erofs binary tools.
>>
>> Signed-off-by: Guo Xuenan <guoxuenan at huawei.com>
>> ---
>> fsck/main.c | 15 +-----------
>> include/erofs/compress.h | 3 ++-
>> lib/compressor.c | 51 ++++++++++++++++++++++++++--------------
>> mkfs/main.c | 15 +-----------
>> 4 files changed, 38 insertions(+), 46 deletions(-)
>>
>> diff --git a/fsck/main.c b/fsck/main.c
>> index f816bec..e559050 100644
>> --- a/fsck/main.c
>> +++ b/fsck/main.c
>> @@ -49,19 +49,6 @@ static struct option long_options[] = {
>> {0, 0, 0, 0},
>> };
>> -static void print_available_decompressors(FILE *f, const char *delim)
>> -{
>> - unsigned int i = 0;
>> - const char *s;
>> -
>> - while ((s = z_erofs_list_available_compressors(i)) != NULL) {
>> - if (i++)
>> - fputs(delim, f);
>> - fputs(s, f);
>> - }
>> - fputc('\n', f);
>> -}
>> -
>> static void usage(void)
>> {
>> fputs("usage: [options] IMAGE\n\n"
>> @@ -84,7 +71,7 @@ static void usage(void)
>> " --no-preserve-owner extract as yourself\n"
>> " --no-preserve-perms apply user's umask when
>> extracting permissions\n"
>> "\nSupported algorithms are: ", stderr);
>> - print_available_decompressors(stderr, ", ");
>> + erofs_print_available_compressors(stderr);
>> }
>> static void erofsfsck_print_version(void)
>> diff --git a/include/erofs/compress.h b/include/erofs/compress.h
>> index 08af9e3..f1b9bbd 100644
>> --- a/include/erofs/compress.h
>> +++ b/include/erofs/compress.h
>> @@ -22,7 +22,8 @@ int erofs_write_compressed_file(struct erofs_inode
>> *inode, int fd);
>> int z_erofs_compress_init(struct erofs_buffer_head *bh);
>> int z_erofs_compress_exit(void);
>> -const char *z_erofs_list_available_compressors(unsigned int i);
>> +void erofs_print_available_compressors(FILE *f);
>> +void erofs_print_supported_compressors(FILE *f, unsigned int mask);
>> static inline bool erofs_is_packed_inode(struct erofs_inode *inode)
>> {
>> diff --git a/lib/compressor.c b/lib/compressor.c
>> index 88a2fb0..da8d1b9 100644
>> --- a/lib/compressor.c
>> +++ b/lib/compressor.c
>> @@ -10,18 +10,6 @@
>> #define EROFS_CONFIG_COMPR_DEF_BOUNDARY (128)
>> -static const struct erofs_compressor *compressors[] = {
>> -#if LZ4_ENABLED
>> -#if LZ4HC_ENABLED
>> - &erofs_compressor_lz4hc,
>> -#endif
>> - &erofs_compressor_lz4,
>> -#endif
>> -#if HAVE_LIBLZMA
>> - &erofs_compressor_lzma,
>> -#endif
>> -};
>> -
>> /* for compressors type configuration */
>> static struct erofs_supported_algothrim {
>> int algtype;
>> @@ -119,9 +107,38 @@ int erofs_compress_destsize(const struct
>> erofs_compress *c,
>> return ret;
>> }
>> -const char *z_erofs_list_available_compressors(unsigned int i)
>> +void erofs_print_supported_compressors(FILE *f, unsigned int mask)
>> {
>> - return i >= ARRAY_SIZE(compressors) ? NULL : compressors[i]->name;
>> + unsigned int i = 0;
>> + int comma = false;
>> + const char *s;
>> +
>> + while (i < erofs_ccfg.erofs_ccfg_num) {
>> + s = erofs_ccfg.compressors[i].name;
>> + if (s && (mask & (1 <<
>> erofs_ccfg.compressors[i++].algorithmtype))) {
>> + if (comma)
>> + fputs(", ", f);
>> + else
>> + comma = true;
>> + fputs(s, f);
>> + }
>> + }
>> + fputc('\n', f);
>> +}
>> +
>> +void erofs_print_available_compressors(FILE *f)
>> +{
>
> Should just erofs_print_supported_compressors(f, ~0) and avoid this
> helper?
>
As commit message of this patch explained, available compressors means
which algothrims are
currentlyavailable to user in binary tools. I mean fsck/mkfs.erofs
binary tools may only support
lz4 compression.erofs_print_available_compressors should only print lz4;
but for dump.erofs ,
which is not used tomake erofs image, there is a bit difference here.
dump.erofs should identify
all supportedalgorithms.
> Thanks,
> Gao Xiang
>
--
Best regards
Guo Xuenan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linux-erofs/attachments/20230615/e98e27ab/attachment.htm>
More information about the Linux-erofs
mailing list