diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index 5dc4636..1c15ea6 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -1134,6 +1134,7 @@ retry: /* forced unmount */ vrele(*vpp); *vpp = NULL; + printf("%s: failing dot lookup for %p\n", __func__, *vpp); return (ENOENT); } } else @@ -1641,6 +1642,16 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, struct componentname *cnp, if (n2->nc_dvp == dvp && n2->nc_nlen == cnp->cn_namelen && !bcmp(nc_get_name(n2), cnp->cn_nameptr, n2->nc_nlen)) { + if ((n2->nc_flag & NCF_NEGATIVE) || vp == NULL) { + if ((n2->nc_flag & NCF_NEGATIVE && vp != NULL) || + (!(n2->nc_flag & NCF_NEGATIVE) && vp == NULL)) { + printf("%s: dvp %p name [%s] positive vs negative entry (found %p, inserting %p)\n", __func__, + dvp, cnp->cn_nameptr, n2->nc_vp, ncp->nc_vp); + } + } else if (n2->nc_vp != ncp->nc_vp) { + printf("%s: dvp %p name [%s] positive entry conflict (found %p, inserting %p)\n", __func__, + dvp, cnp->cn_nameptr, n2->nc_vp, ncp->nc_vp); + } if (tsp != NULL) { KASSERT((n2->nc_flag & NCF_TS) != 0, ("no NCF_TS"));