Hi He, On Mon, Jul 11, 2022 at 10:47:17AM +0800, Li He wrote: > Add --offset to erofsfuse to skip bytes at the start of the image file. > > Signed-off-by: Li He <l...@uniontech.com>
Thanks for the patch! The patch roughly looks good to me, some nit as below.. > --- > fuse/main.c | 6 ++++++ > include/erofs/config.h | 3 +++ > lib/io.c | 2 ++ > 3 files changed, 11 insertions(+) > > diff --git a/fuse/main.c b/fuse/main.c > index f4c2476..a2a6449 100644 > --- a/fuse/main.c > +++ b/fuse/main.c > @@ -151,6 +151,7 @@ static struct fuse_operations erofs_ops = { > static struct options { > const char *disk; > const char *mountpoint; > + u64 offset; We can use cfg.c_offset directly instead it seems? > unsigned int debug_lvl; > bool show_help; > bool odebug; > @@ -158,6 +159,7 @@ static struct options { > > #define OPTION(t, p) { t, offsetof(struct options, p), 1 } > static const struct fuse_opt option_spec[] = { > + OPTION("--offset=%lu", offset), > OPTION("--dbglevel=%u", debug_lvl), > OPTION("--help", show_help), > FUSE_OPT_KEY("--device=", 1), > @@ -170,6 +172,7 @@ static void usage(void) > > fputs("usage: [options] IMAGE MOUNTPOINT\n\n" > "Options:\n" > + " --offset=# # bytes to skip when read IMAGE\n" need to update manpage as well... Thanks, Gao Xiang > " --dbglevel=# set output message level to # > (maximum 9)\n" > " --device=# specify an extra device to be used > together\n" > #if FUSE_MAJOR_VERSION < 3 > @@ -190,6 +193,7 @@ static void usage(void) > static void erofsfuse_dumpcfg(void) > { > erofs_dump("disk: %s\n", fusecfg.disk); > + erofs_dump("offset: %lu\n", fusecfg.offset); > erofs_dump("mountpoint: %s\n", fusecfg.mountpoint); > erofs_dump("dbglevel: %u\n", cfg.c_dbg_lvl); > } > @@ -279,6 +283,8 @@ int main(int argc, char *argv[]) > if (fusecfg.odebug && cfg.c_dbg_lvl < EROFS_DBG) > cfg.c_dbg_lvl = EROFS_DBG; > > + cfg.c_offset = fusecfg.offset; > + > erofsfuse_dumpcfg(); > ret = dev_open_ro(fusecfg.disk); > if (ret) { > diff --git a/include/erofs/config.h b/include/erofs/config.h > index 0d0916c..8b6f7db 100644 > --- a/include/erofs/config.h > +++ b/include/erofs/config.h > @@ -73,6 +73,9 @@ struct erofs_configure { > char *fs_config_file; > char *block_list_file; > #endif > + > + /* offset when read mutli partiton image */ > + u64 c_offset; > }; > > extern struct erofs_configure cfg; > diff --git a/lib/io.c b/lib/io.c > index 9c663c5..524cfb4 100644 > --- a/lib/io.c > +++ b/lib/io.c > @@ -261,6 +261,8 @@ int dev_read(int device_id, void *buf, u64 offset, size_t > len) > if (cfg.c_dry_run) > return 0; > > + offset += cfg.c_offset; > + > if (!buf) { > erofs_err("buf is NULL"); > return -EINVAL; > -- > 2.20.1 > >