summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2009-03-29 21:25:40 +0000
committerkan <kan@FreeBSD.org>2009-03-29 21:25:40 +0000
commitca739eae4a06d758f8eae83c7b26012ff5898d3d (patch)
tree3aa866adbaaa50bfbba611d2975ad7f5feca772f /sys/kern/vfs_subr.c
parentf7c50ce1e4a47dd26c6dc6d42d8a07343e9d020b (diff)
downloadFreeBSD-src-ca739eae4a06d758f8eae83c7b26012ff5898d3d.zip
FreeBSD-src-ca739eae4a06d758f8eae83c7b26012ff5898d3d.tar.gz
Replace v_dd vnode pointer with v_cache_dd pointer to struct namecache
in directory vnodes. Allow namecache dotdot entry to be created pointing from child vnode to parent vnode if no existing links in opposite direction exist. Use direct link from parent to child for dotdot lookups otherwise. This restores more efficient dotdot caching in NFS filesystems which was lost when vnodes stoppped being type stable. Reviewed by: kib
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 9411e81..fcaf514 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -860,6 +860,7 @@ vdestroy(struct vnode *vp)
VNASSERT(bo->bo_dirty.bv_root == NULL, vp, ("dirtyblkroot not NULL"));
VNASSERT(TAILQ_EMPTY(&vp->v_cache_dst), vp, ("vp has namecache dst"));
VNASSERT(LIST_EMPTY(&vp->v_cache_src), vp, ("vp has namecache src"));
+ VNASSERT(vp->v_cache_dd == NULL, vp, ("vp has namecache for .."));
VI_UNLOCK(vp);
#ifdef MAC
mac_vnode_destroy(vp);
OpenPOWER on IntegriCloud