if (vp->v_flag & VTEXT) { uvmexp.vtextpages -= vp->v_uobj.uo_npages; uvmexp.vnodepages += vp->v_uobj.uo_npages; } vp->v_flag &= ~VTEXT;
vrele(vp)	register struct vnode *vp;{	struct proc *p = curproc;	/* XXX */#ifdef DIAGNOSTIC	if (vp == NULL)		panic("vrele: null vp");#endif	simple_lock(&vp->v_interlock);#ifdef DIAGNOSTIC	if (vp->v_usecount == 0) {		vprint("vrele: bad ref count", vp);		panic("vrele: ref cnt");	}#endif	vp->v_usecount--;	if (vp->v_usecount > 0) {		simple_unlock(&vp->v_interlock);		return;	}#ifdef DIAGNOSTIC	if (vp->v_writecount != 0) {		vprint("vrele: bad writecount", vp);		panic("vrele: v_writecount != 0");	}#endif	vputonfreelist(vp);	if (vp->v_flag & VTEXT) {		uvmexp.vtextpages -= vp->v_uobj.uo_npages;		uvmexp.vnodepages += vp->v_uobj.uo_npages;	}	vp->v_flag &= ~VTEXT;	if (vn_lock(vp, LK_EXCLUSIVE|LK_INTERLOCK, p) == 0)		VOP_INACTIVE(vp, p);}