summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-04-24 18:07:06 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-04-24 19:09:52 -0400
commit7cb85324c4f6817d5147b9d298c71bf9b5e87c6b (patch)
treea15b4ce1d1411a9d05c23f2755a5f776bf234cd5 /fs
parent9cdde3c7aa3d5bfc7c7b5ec849e5a3288a66af35 (diff)
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>
Diffstat (limited to 'fs')
-rw-r--r--fs/bcachefs/fs.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c
index c73e97052816..5b716ffde500 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);