Hi Guifu, I'd suggest the following subject...
erofs-utils: stop building tree if file fails to open On Sun, Nov 22, 2020 at 12:27:59PM +0800, Li Guifu via Linux-erofs wrote: > It would not has the permission to access one file when mkfs.erofs > was not run in the root mode, eg run without sudo, So stop and > exit immediately stop and exit immediately if it fails to open a file, e.g mkfs.erofs doesn't run under the root user (e.g. run without sudo.) > > Signed-off-by: Li Guifu <[email protected]> > --- > lib/inode.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/lib/inode.c b/lib/inode.c > index fee5c96..4641561 100644 > --- a/lib/inode.c > +++ b/lib/inode.c > @@ -364,6 +364,7 @@ int erofs_write_file(struct erofs_inode *inode) > } > > /* fallback to all data uncompressed */ > + errno = 0; Why is it necessary, -errno is only used and returned if (fd < 0) Could you update and resend this? Thanks, Gao Xiang > fd = open(inode->i_srcpath, O_RDONLY | O_BINARY); > if (fd < 0) > return -errno; > @@ -908,7 +909,9 @@ struct erofs_inode *erofs_mkfs_build_tree(struct > erofs_inode *dir) > if (ret) > return ERR_PTR(ret); > } else { > - erofs_write_file(dir); > + ret = erofs_write_file(dir); > + if (ret) > + return ERR_PTR(ret); > } > > erofs_prepare_inode_buffer(dir); > @@ -982,10 +985,11 @@ struct erofs_inode *erofs_mkfs_build_tree(struct > erofs_inode *dir) > > d->inode = erofs_mkfs_build_tree_from_path(dir, buf); > if (IS_ERR(d->inode)) { > + ret = PTR_ERR(d->inode); > fail: > d->inode = NULL; > d->type = EROFS_FT_UNKNOWN; > - continue; > + goto err_closedir; > } > > d->type = erofs_type_by_mode[d->inode->i_mode >> S_SHIFT]; > -- > 2.17.1 >
