diff options
author | kan <kan@FreeBSD.org> | 2009-03-29 21:25:40 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2009-03-29 21:25:40 +0000 |
commit | ca739eae4a06d758f8eae83c7b26012ff5898d3d (patch) | |
tree | 3aa866adbaaa50bfbba611d2975ad7f5feca772f /sys/kern/vfs_subr.c | |
parent | f7c50ce1e4a47dd26c6dc6d42d8a07343e9d020b (diff) | |
download | FreeBSD-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.c | 1 |
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); |