From 8edbaf859d237e2f9ea5dfd7f20b0a7aca0a19c9 Mon Sep 17 00:00:00 2001 From: Hidetoshi Shimokawa Date: Wed, 10 Sep 2003 15:48:51 +0000 Subject: [PATCH] Fix asynchronous physio breakage introduced in rev 1.163. We cannnot use bp->b_caller2 because DEV_STRATEGY will overwrite it. --- sys/kern/vfs_aio.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sys/kern/vfs_aio.c b/sys/kern/vfs_aio.c index fc5207352ff..f5dfcfc7198 100644 --- a/sys/kern/vfs_aio.c +++ b/sys/kern/vfs_aio.c @@ -1097,7 +1097,6 @@ aio_qphysio(struct proc *p, struct aiocblist *aiocbe) /* * Get a copy of the kva from the physical buffer. */ - bp->b_caller1 = p; bp->b_dev = vp->v_rdev; error = 0; @@ -1120,7 +1119,7 @@ aio_qphysio(struct proc *p, struct aiocblist *aiocbe) s = splbio(); aiocbe->bp = bp; - bp->b_caller2 = (void *)aiocbe; + bp->b_caller1 = (void *)aiocbe; TAILQ_INSERT_TAIL(&aio_bufjobs, aiocbe, list); TAILQ_INSERT_TAIL(&ki->kaio_bufqueue, aiocbe, plist); aiocbe->jobstate = JOBST_JOBQBUF; @@ -2128,9 +2127,9 @@ aio_physwakeup(struct buf *bp) wakeup(bp); - aiocbe = (struct aiocblist *)bp->b_caller2; + aiocbe = (struct aiocblist *)bp->b_caller1; if (aiocbe) { - p = bp->b_caller1; + p = aiocbe->userproc; aiocbe->jobstate = JOBST_JOBBFINISHED; aiocbe->uaiocb._aiocb_private.status -= bp->b_resid;