[PATCH v10] erofs-utils: add support for fuse 2/3 lowlevel API

Gao Xiang hsiangkao at linux.alibaba.com
Tue Oct 10 14:51:01 AEDT 2023



On 2023/9/18 17:03, Li Yiyan wrote:
> Support FUSE low-level APIs for erofsfuse. Lowlevel APIs offer improved
> performance compared to the previous high-level APIs, while maintaining
> compatibility with libfuse version 2(>=2.6) and 3 (>=3.0).
> 
> Dataset: linux 5.15
> Compression algorithm: lz4hc,12
> Additional options: -T0 -C16384
> Test options: --warmup 3 -p "echo 3 > /proc/sys/vm/drop_caches; sleep 1"
> 
> Evaluation result (highlevel->lowlevel avg time):
> 	- Sequence metadata: 777.3 ms->180.9 ms
> 	- Sequence data: 3.282 s->818.1 ms
> 	- Random metadata: 1.571 s->928.3 ms
> 	- Random data: 2.461 s->597.8 ms
> 
> Signed-off-by: Li Yiyan <lyy0627 at sjtu.edu.cn>

Looks good to me, applied to -experimental now.

...

>   
>   static void usage(void)
>   {
> -	struct fuse_args args = FUSE_ARGS_INIT(0, NULL);
> +#if FUSE_MAJOR_VERSION >= 3
> +	fuse_lowlevel_version();
> +#endif
> +	fprintf(stderr, "erofsfuse version: %s\n\n", cfg.c_version);
>   
>   	fputs("usage: [options] IMAGE MOUNTPOINT\n\n"
>   	      "Options:\n"
> @@ -220,12 +546,15 @@ static void usage(void)
>   	      "    --device=#             specify an extra device to be used together\n"
>   #if FUSE_MAJOR_VERSION < 3
>   	      "    --help                 display this help and exit\n"
> +	      "    --version              display erofsfuse version\n"
>   #endif
>   	      "\n", stderr);
>   
>   #if FUSE_MAJOR_VERSION >= 3
> +	fputs("\nFUSE options:\n", stderr);
>   	fuse_cmdline_help();
>   #else
> +	struct fuse_args args = FUSE_ARGS_INIT(0, NULL);

It's not a good idea to mix definitions and the rest code.
I will fix manually.

Thanks,
Gao Xiang


More information about the Linux-erofs mailing list