diff options
author | dg <dg@FreeBSD.org> | 1995-02-28 02:52:48 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1995-02-28 02:52:48 +0000 |
commit | 191e07d353e643784ea91e9e9d578e7b180ed299 (patch) | |
tree | 9f1cb5462ae5014d91095c62cf29fe3d96817127 /sys/kern/vfs_extattr.c | |
parent | 9dc9082480a38668c9917b37e40d2e91563ecddf (diff) | |
download | FreeBSD-src-191e07d353e643784ea91e9e9d578e7b180ed299.zip FreeBSD-src-191e07d353e643784ea91e9e9d578e7b180ed299.tar.gz |
Do a vnode_pager_uncache after the VOP_RENAME to lose the remaining
reference to the old vnode.
Suggested by: Bruce Evans
Diffstat (limited to 'sys/kern/vfs_extattr.c')
-rw-r--r-- | sys/kern/vfs_extattr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index b63f748..eef1fce 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94 - * $Id: vfs_syscalls.c,v 1.16 1994/11/04 14:41:34 davidg Exp $ + * $Id: vfs_syscalls.c,v 1.17 1995/02/13 13:45:04 davidg Exp $ */ #include <sys/param.h> @@ -938,7 +938,7 @@ unlink(p, uap, retval) if (vp->v_flag & VROOT) error = EBUSY; else - (void)vnode_pager_uncache(vp); + (void) vnode_pager_uncache(vp); } if (!error) { @@ -1854,6 +1854,8 @@ out: LEASE_CHECK(tvp, p, p->p_ucred, LEASE_WRITE); error = VOP_RENAME(fromnd.ni_dvp, fromnd.ni_vp, &fromnd.ni_cnd, tond.ni_dvp, tond.ni_vp, &tond.ni_cnd); + if (tvp && !error) + (void) vnode_pager_uncache(tvp); } else { VOP_ABORTOP(tond.ni_dvp, &tond.ni_cnd); if (tdvp == tvp) |