From: Kent Overstreet <kent.overstreet@linux.dev>
Date: Thu, 24 Apr 2025 22:07:06 +0000 (-0400)
Subject: bcachefs: unlink: casefold d_invalidate
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=7cb85324c4f6817d5147b9d298c71bf9b5e87c6b;p=users%2Fdwmw2%2Flinux.git

bcachefs: unlink: casefold d_invalidate

casefolding results in additional aliases on lookup for the
non-casefolded names - these need invalidating on unlink.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
---

diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c
index c73e970528163..5b716ffde500c 100644
--- a/fs/bcachefs/fs.c
+++ b/fs/bcachefs/fs.c
@@ -847,6 +847,11 @@ int __bch2_unlink(struct inode *vdir, struct dentry *dentry,
 		 */
 		set_nlink(&inode->v, 0);
 	}
+
+	if (IS_CASEFOLDED(vdir)) {
+		d_invalidate(dentry);
+		d_prune_aliases(&inode->v);
+	}
 err:
 	bch2_trans_put(trans);
 	bch2_unlock_inodes(INODE_UPDATE_LOCK, dir, inode);