View | Details | Raw Unified | Return to bug 255436
Collapse All | Expand All

(-)sys/fs/nfsclient/nfs_clstate.c (-2 / +4 lines)
Lines 3300-3309 nfscl_delegreturnvp(vnode_t vp, NFSPROC_T *p) Link Here
3300
3300
3301
	np = VTONFS(vp);
3301
	np = VTONFS(vp);
3302
	cred = newnfs_getcred();
3302
	cred = newnfs_getcred();
3303
	dp = NULL;
3303
	NFSLOCKCLSTATE();
3304
	NFSLOCKCLSTATE();
3304
	clp = VFSTONFS(vp->v_mount)->nm_clp;
3305
	clp = VFSTONFS(vp->v_mount)->nm_clp;
3305
	dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh,
3306
	if (clp != NULL)
3306
	    np->n_fhp->nfh_len);
3307
		dp = nfscl_finddeleg(clp, np->n_fhp->nfh_fh,
3308
		    np->n_fhp->nfh_len);
3307
	if (dp != NULL) {
3309
	if (dp != NULL) {
3308
		nfscl_cleandeleg(dp);
3310
		nfscl_cleandeleg(dp);
3309
		nfscl_freedeleg(&clp->nfsc_deleg, dp, false);
3311
		nfscl_freedeleg(&clp->nfsc_deleg, dp, false);
(-)sys/fs/nfsclient/nfs_clnode.c (-1 / +8 lines)
Lines 289-296 ncl_reclaim(struct vop_reclaim_args *ap) Link Here
289
	struct nfsnode *np = VTONFS(vp);
289
	struct nfsnode *np = VTONFS(vp);
290
	struct nfsdmap *dp, *dp2;
290
	struct nfsdmap *dp, *dp2;
291
	struct thread *td;
291
	struct thread *td;
292
	struct mount *mp;
292
293
293
	td = curthread;
294
	td = curthread;
295
	mp = vp->v_mount;
294
296
295
	/*
297
	/*
296
	 * If the NLM is running, give it a chance to abort pending
298
	 * If the NLM is running, give it a chance to abort pending
Lines 317-323 ncl_reclaim(struct vop_reclaim_args *ap) Link Here
317
		 * vfs_hash_remove(), since it cannot be recalled once the
319
		 * vfs_hash_remove(), since it cannot be recalled once the
318
		 * nfs node is no longer available.
320
		 * nfs node is no longer available.
319
		 */
321
		 */
320
		nfscl_delegreturnvp(vp, td);
322
		MNT_ILOCK(mp);
323
		if ((mp->mnt_kern_flag & MNTK_UNMOUNTF) == 0) {
324
			MNT_IUNLOCK(mp);
325
			nfscl_delegreturnvp(vp, td);
326
		} else
327
			MNT_IUNLOCK(mp);
321
	}
328
	}
322
329
323
	vfs_hash_remove(vp);
330
	vfs_hash_remove(vp);

Return to bug 255436