Re: [RESEND PATCH 2/2] erofs-utils: lib: honor rebuild whiteouts for recreated dirs
"zhaoyifan (H)" <[email protected]> Tue, 23 Jun 2026 10:56:45 +0800
| Newsgroups | org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <[email protected]> |
On 2026/6/22 11:58, Gao Xiang wrote: > > > On 2026/6/22 11:42, Yifan Zhao wrote: >> When rebuilding from upper to lower, a whiteout below an already >> recreated directory should keep that directory but stop older lower >> entries from being merged into it. >> >> Mark the existing directory opaque before applying the generic >> non-directory bailout. >> >> Reported-by: cayoub-oai <[email protected]> > > I hope it could be a real email if the reporter > can give us, which helps us to give the exact > credits too.. > >> Closes: https://github.com/erofs/erofs-utils/issues/49 >> Assisted-by: Codex:GPT-5.5 >> Signed-off-by: Yifan Zhao <[email protected]> >> --- >> lib/rebuild.c | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/lib/rebuild.c b/lib/rebuild.c >> index 51dfe18..108a464 100644 >> --- a/lib/rebuild.c >> +++ b/lib/rebuild.c >> @@ -401,7 +401,13 @@ static int erofs_rebuild_dirent_iter(struct >> erofs_dir_context *ctx) >> .nid = ctx->de_nid >> }; >> ret = erofs_read_inode_from_disk(&src); >> - if (ret || !S_ISDIR(src.i_mode)) >> + if (ret) >> + goto out; > > if (S_ISDIR(d->inode->i_mode) && > erofs_inode_is_whiteout(&src)) > > I guess? If the upper is not a directory, I think > it should be ignored instead? > S_ISDIR has already been checked earlier in this block, so I think current logic is enouth. Thanks, Yifan > Thanks, > Gao Xiang