[PATCH v3 0/3] erofs-utils: introduce fuse implementation

Gao Xiang hsiangkao at aol.com
Fri Nov 27 22:46:14 AEDT 2020


From: Gao Xiang <hsiangkao at redhat.com>

changes since v2:
 - erofs_dbg() -> erofs_dump() in signal_handle_sigsegv() (Guifu);
 - get rid of unnecessary new lines (Guifu).

changes since v1:
 - fix off-by-one error of namebuf in erofs_fill_dentries();
 - drop unused "struct erofs_super_block super;" in lib/super.c; 
 - fix clang/32-bit build errors founded by travis CI.

Hi all,

I've finished cleaning up erofsfuse - a fuse implementation of erofs
just now. It's now considered as multithread safe since it's
currently stateless by killing useless caches and using high-level
libfuse APIs(also libfuse itself is MT-safe). Therefore, I don't
need to release another liberofs MT-safe version for now as well.

As I said eariler, the main usage of erofsfuse is to support handling
erofs images on older kernels without kernel modification, which
was requested by real vendors (thanks to folks from OPPO to pick
it up).

And to summarize the benefits of erofsfuse, I think it would be:

 - erofs images can be supported on various platforms;
 - an independent unpack tool can be developed based on this;
 - new on-disk feature can be iterated, verified effectively.

erofsfuse will be included in the upcoming erofs-utils v1.2, but
disabled by default for now. Since it still needs sometime to
stablize and also notice LZ4_decompress_safe_partial() was broken
in lz4-1.9.2, which just fixed in lz4-1.9.3 days ago [1].

BTW, recently some other people get in touch with me in private
to ask for some latest micro-benchmark among compression fses,
so I spared some extra time on this as well, see:
https://github.com/erofs/erofs-openbenchmark/wiki/linux_5.10_rc4-compression-FSes-benchmark
I might test on hikey960 board as well yet need to seek more
extra time but I think no much difference on relative
relationship (but yeah, CPU-storage combination is vital for
seqread uplimit).

Thanks,
Gao Xiang

Cc: Li Guifu <blucerlee at gmail.com>
Cc: Huang Jianan <huangjianan at oppo.com>
Cc: Guo Weichao <guoweichao at oppo.com>

Huang Jianan (2):
  erofs-utils: fuse: support symlink & special inode
  erofs-utils: fuse: add compressed file support

Li Guifu (1):
  erofs-utils: introduce fuse implementation

 Makefile.am                |   4 +
 configure.ac               |  22 +-
 fuse/Makefile.am           |  10 +
 fuse/dir.c                 | 103 +++++++++
 fuse/main.c                | 240 +++++++++++++++++++++
 include/erofs/decompress.h |  35 ++++
 include/erofs/defs.h       |   5 +
 include/erofs/internal.h   |  92 +++++++-
 include/erofs/io.h         |   1 +
 include/erofs/trace.h      |  14 ++
 include/erofs_fs.h         |   4 +
 lib/Makefile.am            |   4 +-
 lib/data.c                 | 204 ++++++++++++++++++
 lib/decompress.c           |  87 ++++++++
 lib/io.c                   |  16 ++
 lib/namei.c                | 264 +++++++++++++++++++++++
 lib/super.c                |  78 +++++++
 lib/zmap.c                 | 415 +++++++++++++++++++++++++++++++++++++
 18 files changed, 1594 insertions(+), 4 deletions(-)
 create mode 100644 fuse/Makefile.am
 create mode 100644 fuse/dir.c
 create mode 100644 fuse/main.c
 create mode 100644 include/erofs/decompress.h
 create mode 100644 include/erofs/trace.h
 create mode 100644 lib/data.c
 create mode 100644 lib/decompress.c
 create mode 100644 lib/namei.c
 create mode 100644 lib/super.c
 create mode 100644 lib/zmap.c

-- 
2.24.0



More information about the Linux-erofs mailing list