[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