Always supply curthread as argument to nfs_asyncio and nfs_doio

in nfs_strategy. Otherwise, for some buffers, signals would be ignored
at the intr mounts.

Reviewed by:	mohan, cel
MFC after:	1 month
Approved by:	pjd (mentor)
This commit is contained in:
Konstantin Belousov 2006-07-12 09:16:35 +00:00
parent 1a8b0c1571
commit a881fd5a0a

View File

@ -2444,17 +2444,11 @@ nfs4_strategy(struct vop_strategy_args *ap)
{
struct buf *bp = ap->a_bp;
struct ucred *cr;
struct thread *td;
int error = 0;
KASSERT(!(bp->b_flags & B_DONE), ("nfs4_strategy: buffer %p unexpectedly marked B_DONE", bp));
KASSERT(BUF_REFCNT(bp) > 0, ("nfs4_strategy: buffer %p not locked", bp));
if (bp->b_flags & B_ASYNC)
td = NULL;
else
td = curthread; /* XXX */
if (bp->b_iocmd == BIO_READ)
cr = bp->b_rcred;
else
@ -2466,8 +2460,8 @@ nfs4_strategy(struct vop_strategy_args *ap)
* otherwise just do it ourselves.
*/
if ((bp->b_flags & B_ASYNC) == 0 ||
nfs_asyncio(VFSTONFS(ap->a_vp->v_mount), bp, NOCRED, td))
error = nfs_doio(ap->a_vp, bp, cr, td);
nfs_asyncio(VFSTONFS(ap->a_vp->v_mount), bp, NOCRED, curthread))
error = nfs_doio(ap->a_vp, bp, cr, curthread);
return (error);
}