[PATCH v1 0/3] Make erofs-utils more library friendly

Gao Xiang hsiangkao at linux.alibaba.com
Sun Nov 21 21:31:13 AEDT 2021


Hi Kelvin,

On Sat, Nov 20, 2021 at 09:39:17PM -0800, Kelvin Zhang wrote:
> EROFS-utils contains several usage of global variables, namely
> 
> 1. int erofs_devfd, stores the file descriptor to open'ed block devices.
> This is referened in many places.
> 2. struct erofs_sb_info sbi; Stores parsed super block.
> 
> These global variables make embedding erofs library diffcult. To make
> library usage easier, a series of 3 patches are drafted to refactor away
> the global variables. Each patch has been built and tested by calling
> mkfs.erofs and ensure the same output is generated.

Agreed, that is mainly due to fast iterative development. If we consider
to export liberofs as a real library, these all needs to be resolved in
advance, and it'd be better to stablize all liberofs APIs as well.

However, let's postpone this work until 1.4 is out, I have to admit I'm
a bit delay of releasing v1.4 due to my busy work.
Now I'm working on pre-releasing..

Thanks,
Gao Xiang

> 
> Kelvin Zhang (3):
>   Make erofs_devfd a parameter for most functions
>   Mark certain callback function pointers as const
>   Make super block info struct a paramater instead of globals
> 
>  Android.bp                 |  44 +++++++-
>  dump/main.c                |  84 ++++++++------
>  fsck/main.c                |  90 +++++++++------
>  fuse/dir.c                 |   8 +-
>  fuse/main.c                |  19 ++--
>  include/erofs/blobchunk.h  |   7 +-
>  include/erofs/cache.h      |  15 +--
>  include/erofs/compress.h   |  10 +-
>  include/erofs/config.h     |  15 +--
>  include/erofs/decompress.h |   5 +-
>  include/erofs/defs.h       |  21 ++++
>  include/erofs/inode.h      |   9 +-
>  include/erofs/internal.h   |  72 ++++++------
>  include/erofs/io.h         |  48 +++++---
>  include/erofs/iterate.h    |  35 ++++++
>  include/erofs/xattr.h      |   2 +-
>  iterate/main.c             |  51 +++++++++
>  lib/blobchunk.c            |  11 +-
>  lib/cache.c                |  33 +++---
>  lib/compress.c             | 104 ++++++++++-------
>  lib/compressor.c           |   9 +-
>  lib/compressor.h           |  13 ++-
>  lib/compressor_liblzma.c   |   4 +-
>  lib/compressor_lz4.c       |   8 +-
>  lib/compressor_lz4hc.c     |   6 +-
>  lib/config.c               |  64 ++++++-----
>  lib/data.c                 |  54 +++++----
>  lib/decompress.c           |  12 +-
>  lib/inode.c                | 129 ++++++++++++---------
>  lib/io.c                   |  74 ++++++------
>  lib/iterate.c              | 223 +++++++++++++++++++++++++++++++++++++
>  lib/namei.c                |  44 +++++---
>  lib/super.c                |  28 ++---
>  lib/xattr.c                |  10 +-
>  lib/zmap.c                 |  92 +++++++++------
>  mkfs/main.c                |  92 +++++++--------
>  36 files changed, 1069 insertions(+), 476 deletions(-)
>  create mode 100644 include/erofs/iterate.h
>  create mode 100644 iterate/main.c
>  create mode 100644 lib/iterate.c
> 
> -- 
> 2.34.0.rc2.393.gf8c9666880-goog


More information about the Linux-erofs mailing list