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

(-)fs/nfsclient/nfs_clstate.c (-1 / +10 lines)
Lines 829-836 nfscl_getcl(struct mount *mp, struct ucr Link Here
829
	    (mp->mnt_kern_flag & MNTK_UNMOUNTF) == 0)
829
	    (mp->mnt_kern_flag & MNTK_UNMOUNTF) == 0)
830
		igotlock = nfsv4_lock(&clp->nfsc_lock, 1, NULL,
830
		igotlock = nfsv4_lock(&clp->nfsc_lock, 1, NULL,
831
		    NFSCLSTATEMUTEXPTR, mp);
831
		    NFSCLSTATEMUTEXPTR, mp);
832
	if (!igotlock)
832
	if (igotlock == 0) {
833
		/*
834
		 * Call nfsv4_lock() with "iwantlock == 0" so that it will
835
		 * wait for a pending exclusive lock request.  This gives the
836
		 * exclusive lock request priority over this shared lock
837
		 * request.
838
		 * An exclusive lock on nfsc_lock is used mainly for recoveries.
839
		 */
840
		nfsv4_lock(&clp->nfsc_lock, 0, NULL, NFSCLSTATEMUTEXPTR, mp);
833
		nfsv4_getref(&clp->nfsc_lock, NULL, NFSCLSTATEMUTEXPTR, mp);
841
		nfsv4_getref(&clp->nfsc_lock, NULL, NFSCLSTATEMUTEXPTR, mp);
842
	}
834
	if (igotlock == 0 && (mp->mnt_kern_flag & MNTK_UNMOUNTF) != 0) {
843
	if (igotlock == 0 && (mp->mnt_kern_flag & MNTK_UNMOUNTF) != 0) {
835
		/*
844
		/*
836
		 * Both nfsv4_lock() and nfsv4_getref() know to check
845
		 * Both nfsv4_lock() and nfsv4_getref() know to check

Return to bug 216087