diff --git a/main.c b/main.c index 91ea3d0..7ca4229 100644 --- a/main.c +++ b/main.c @@ -4555,6 +4555,8 @@ ovl_rename_direct (fuse_req_t req, fuse_ino_t parent, const char *name, ret = create_whiteout (lo, pnode, name, false, true); if (ret < 0) goto error; + + pnode->loaded = 0; } if (delete_whiteout (lo, destfd, NULL, newname) < 0) diff --git a/tests/fedora-installs.sh b/tests/fedora-installs.sh index eaf7d93..e0c9052 100755 --- a/tests/fedora-installs.sh +++ b/tests/fedora-installs.sh @@ -211,3 +211,20 @@ touch merged/a merged/b chmod 6 merged/a mv merged/a merged/x mv merged/b merged/a + +# https://github.com/containers/fuse-overlayfs/issues/279 +umount -l merged + +rm -rf lower upper workdir merged +mkdir lower upper workdir merged +mkdir lower/test +touch lower/test/a.txt + +fuse-overlayfs -o lowerdir=lower,upperdir=upper,workdir=workdir merged + +(cd merged/test; touch a.txt; mv a.txt a2.txt; touch a3.txt; ln -s a3.txt a.txt) + +if test -e upperdir/test/.wh.a.txt; then + echo "whiteout file still exists" >&2 + exit 1 +fi