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
Signed-off-by: Li Guifu <bluce....@aliyun.com> --- 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; 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