- if (vp == NULL)
- panic("nfs_inactive NULL vp");
- if (vp->v_count == 0) {
- np = VTONFS(vp);
- np->n_flag |= NLOCKED;
- if (np->n_sillyrename) {
- /*
- * Remove the silly file that was rename'd earlier
- */
- sp = np->n_sillyrename;
- ndp = &sp->s_namei;
- if (!nfs_nget(vp->v_mount, &sp->s_fh, &dnp)) {
- ndp->ni_dvp = NFSTOV(dnp);
- if (sp->s_flag == REMOVE)
- nfs_removeit(ndp);
- else
- nfs_rmdirit(ndp);
- nfs_nput(ndp->ni_dvp);
- }
- crfree(ndp->ni_cred);
- free((caddr_t)sp, M_TEMP);
- np->n_sillyrename = (struct sillyrename *)0;
- }
- nfs_unlock(vp);
- np->n_flag = 0;
- /*
- * Scan the request list for any requests left hanging about
- */
- s = splnet();
- rep = nfsreqh.r_next;
- while (rep) {
- if (rep->r_vp == vp) {
- rep->r_prev->r_next = rep2 = rep->r_next;
- if (rep->r_next != NULL)
- rep->r_next->r_prev = rep->r_prev;
- m_freem(rep->r_mreq);
- if (rep->r_mrep != NULL)
- m_freem(rep->r_mrep);
- free((caddr_t)rep, M_NFSREQ);
- rep = rep2;
- } else
- rep = rep->r_next;
- }
- splx(s);
+ np = VTONFS(vp);
+ if (prtactive && vp->v_usecount != 0)
+ vprint("nfs_inactive: pushing active", vp);
+ nfs_lock(vp);
+ sp = np->n_sillyrename;
+ np->n_sillyrename = (struct sillyrename *)0;
+ if (sp) {