date: 1996/09/06 03:00:31; author: donn; state: Exp; lines: +1 -2
Because NFS doesn't implement vnode locking, nfs_inactive() doesn't really
have the vnode locked and hence it can't reliably access the vnode after
it performs a blocking operation. We remove one blocking call and push
the no-op VOP_UNLOCK higher so that we don't access the vnode after we
delete the sillyrename file. This should prevent crashes we've seen in
which the vnode turned into a UFS vnode and caused a panic in ufs_unlock()
when we tried to 'unlock' it.
date: 1996/09/25 19:15:21; author: cp; state: Exp; lines: +4 -0
Kirk's change to not corrupt files after a delete.
date: 1996/11/08 19:53:45; author: donn; state: Exp; lines: +16 -4
Krik's change to solve the paradox that vclean() calls nfs_inactive()
with VXLOCK set on the vnode, and nfs_inactive() was calling vget()
to get a reference on the vnode, which in turn hung on VXLOCK.
Nfs_inactive() now checks v_usecount to make sure that the vnode
is not coming from vclean() before it does a vget().
(1) it's unnecessary
(2) it causes machines to hang (yup!)
(3) it'd be gone in a few days anyway (it'd been yanked out
of 4.4-Lite by macklem long ago)
It was only there because macklem couldn't originally decide if things
should be locked, or not...