Add changes to the experimental nfs client to use the PBDRY flag for
msleep(9) when a vnode lock or similar may be held. The changes are just a clone of the changes applied to the regular nfs client by r195703. Approved by: re (kensmith), kib (mentor)
This commit is contained in:
parent
206a336872
commit
c79e697621
@ -911,6 +911,13 @@ struct nfsreq {
|
||||
#define NFSVNO_DELEGOK(v) (1)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Define this as the flags argument for msleep() when catching signals
|
||||
* while holding a resource that other threads would block for, such as
|
||||
* a vnode lock.
|
||||
*/
|
||||
#define NFS_PCATCH (PCATCH | PBDRY)
|
||||
|
||||
#endif /* _KERNEL */
|
||||
|
||||
#endif /* _NFSPORT_NFS_H */
|
||||
|
@ -1357,7 +1357,7 @@ nfs_getcacheblk(struct vnode *vp, daddr_t bn, int size, struct thread *td)
|
||||
sigset_t oldset;
|
||||
|
||||
ncl_set_sigmask(td, &oldset);
|
||||
bp = getblk(vp, bn, size, PCATCH, 0, 0);
|
||||
bp = getblk(vp, bn, size, NFS_PCATCH, 0, 0);
|
||||
ncl_restore_sigmask(td, &oldset);
|
||||
while (bp == NULL) {
|
||||
if (newnfs_sigintr(nmp, td))
|
||||
@ -1396,7 +1396,7 @@ ncl_vinvalbuf(struct vnode *vp, int flags, struct thread *td, int intrflg)
|
||||
if ((nmp->nm_mountp->mnt_kern_flag & MNTK_UNMOUNTF))
|
||||
intrflg = 1;
|
||||
if (intrflg) {
|
||||
slpflag = PCATCH;
|
||||
slpflag = NFS_PCATCH;
|
||||
slptimeo = 2 * hz;
|
||||
} else {
|
||||
slpflag = 0;
|
||||
@ -1484,7 +1484,7 @@ ncl_asyncio(struct nfsmount *nmp, struct buf *bp, struct ucred *cred, struct thr
|
||||
}
|
||||
again:
|
||||
if (nmp->nm_flag & NFSMNT_INT)
|
||||
slpflag = PCATCH;
|
||||
slpflag = NFS_PCATCH;
|
||||
gotiod = FALSE;
|
||||
|
||||
/*
|
||||
@ -1553,7 +1553,7 @@ again:
|
||||
mtx_unlock(&ncl_iod_mutex);
|
||||
return (error2);
|
||||
}
|
||||
if (slpflag == PCATCH) {
|
||||
if (slpflag == NFS_PCATCH) {
|
||||
slpflag = 0;
|
||||
slptimeo = 2 * hz;
|
||||
}
|
||||
|
@ -2448,7 +2448,7 @@ ncl_flush(struct vnode *vp, int waitfor, struct ucred *cred, struct thread *td,
|
||||
int bvecsize = 0, bveccount;
|
||||
|
||||
if (nmp->nm_flag & NFSMNT_INT)
|
||||
slpflag = PCATCH;
|
||||
slpflag = NFS_PCATCH;
|
||||
if (!commit)
|
||||
passone = 0;
|
||||
bo = &vp->v_bufobj;
|
||||
@ -2646,7 +2646,7 @@ loop:
|
||||
error = EINTR;
|
||||
goto done;
|
||||
}
|
||||
if (slpflag == PCATCH) {
|
||||
if (slpflag & PCATCH) {
|
||||
slpflag = 0;
|
||||
slptimeo = 2 * hz;
|
||||
}
|
||||
@ -2684,7 +2684,7 @@ loop:
|
||||
error = newnfs_sigintr(nmp, td);
|
||||
if (error)
|
||||
goto done;
|
||||
if (slpflag == PCATCH) {
|
||||
if (slpflag & PCATCH) {
|
||||
slpflag = 0;
|
||||
slptimeo = 2 * hz;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user