if (error && intrflg && nfs_sigintr(nmp, NULL, p))
if (error && intrflg && nfs_sigintr(nmp, (struct nfsreq *)0, p))
nfs_vinvalbuf(vp, flags, cred, p, intrflg)	struct vnode *vp;	int flags;	struct ucred *cred;	struct proc *p;	int intrflg;{	register struct nfsnode *np = VTONFS(vp);	struct nfsmount *nmp = VFSTONFS(vp->v_mount);	int error = 0, slpflag, slptimeo;	if ((nmp->nm_flag & NFSMNT_INT) == 0)		intrflg = 0;	if (intrflg) {		slpflag = PCATCH;		slptimeo = 2 * hz;	} else {		slpflag = 0;		slptimeo = 0;	}	/*	 * First wait for any other process doing a flush to complete.	 */	while (np->n_flag & NFLUSHINPROG) {		np->n_flag |= NFLUSHWANT;		error = tsleep((caddr_t)&np->n_flag, PRIBIO + 2, "nfsvinval",			slptimeo);		if (error && intrflg && nfs_sigintr(nmp, NULL, p))			return (EINTR);	}	/*	 * Now, flush as required.	 */	np->n_flag |= NFLUSHINPROG;	error = vinvalbuf(vp, flags, cred, p, slpflag, 0);	while (error) {		if (intrflg && nfs_sigintr(nmp, NULL, p)) {			np->n_flag &= ~NFLUSHINPROG;			if (np->n_flag & NFLUSHWANT) {				np->n_flag &= ~NFLUSHWANT;				wakeup((caddr_t)&np->n_flag);			}			return (EINTR);		}		error = vinvalbuf(vp, flags, cred, p, 0, slptimeo);	}	np->n_flag &= ~(NMODIFIED | NFLUSHINPROG);	if (np->n_flag & NFLUSHWANT) {		np->n_flag &= ~NFLUSHWANT;		wakeup((caddr_t)&np->n_flag);	}	return (0);}