Fix "panic: cache_vop_rename: lingering negative entry"

A FreeBSD ZFS filesystem with properties "utf8only=on" and
"normalization=formD" consistently produces this panic when
building the lang/perl-5.42.0 port.

A ZFS file system with "utf8only=off" and "normalization=none"
works fine.

The cause of the panic seems to be incorrectly using the FreeBSD
namecache when normalisation is present. This commit adds a
predicate to prevent that.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Jan Martin Mikkelsen <janm-github@transactionware.com>
Closes #18430
This commit is contained in:
Jan Martin Mikkelsen
2026-04-21 23:19:10 +02:00
committed by GitHub
parent 6562851406
commit 513710ed21
+1 -1
View File
@@ -3519,7 +3519,7 @@ zfs_do_rename_impl(vnode_t *sdvp, vnode_t **svpp, struct componentname *scnp,
ZRENAMING, NULL)); ZRENAMING, NULL));
} }
} }
if (error == 0) { if (error == 0 && zfsvfs->z_use_namecache) {
cache_vop_rename(sdvp, *svpp, tdvp, *tvpp, scnp, tcnp); cache_vop_rename(sdvp, *svpp, tdvp, *tvpp, scnp, tcnp);
} }
} }