|
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 |