bcachefs: unlink: casefold d_invalidate
authorKent Overstreet <kent.overstreet@linux.dev>
Thu, 24 Apr 2025 22:07:06 +0000 (18:07 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 24 Apr 2025 23:09:52 +0000 (19:09 -0400)
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>
fs/bcachefs/fs.c

index c73e970528163439869066b057e43d787b218e3a..5b716ffde500c7c2c32d4e8dcebfc77b6ffcc7f3 100644 (file)
@@ -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);