summaryrefslogtreecommitdiff
path: root/sys/dev/pst
diff options
context:
space:
mode:
authorSøren Schmidt <sos@FreeBSD.org>2003-04-02 11:36:43 +0000
committerSøren Schmidt <sos@FreeBSD.org>2003-04-02 11:36:43 +0000
commitb539f9d52331852bf719c5d405ee558c1a791a06 (patch)
tree3ec46a1c293844bdbabf435d1c3a233b38deff2f /sys/dev/pst
parentac03f2af252346997c538a4ec138cdb73ea5533b (diff)
Notes
Diffstat (limited to 'sys/dev/pst')
-rw-r--r--sys/dev/pst/pst-raid.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/pst/pst-raid.c b/sys/dev/pst/pst-raid.c
index cb6be1267993..b7c96de2abea 100644
--- a/sys/dev/pst/pst-raid.c
+++ b/sys/dev/pst/pst-raid.c
@@ -215,9 +215,11 @@ pst_start(struct pst_softc *psc)
if (psc->outstanding < (I2O_IOP_OUTBOUND_FRAME_COUNT - 1) &&
(bp = bioq_first(&psc->queue))) {
if ((mfa = iop_get_mfa(psc->iop)) != 0xffffffff) {
+ bioq_remove(&psc->queue, bp);
if (!(request = malloc(sizeof(struct pst_request),
M_PSTRAID, M_NOWAIT | M_ZERO))) {
printf("pst: out of memory in start\n");
+ biofinish(request->bp, NULL, ENOMEM);
iop_free_mfa(psc->iop, mfa);
return;
}
@@ -230,7 +232,6 @@ pst_start(struct pst_softc *psc)
else
request->timeout_handle =
timeout((timeout_t*)pst_timeout, request, 10 * hz);
- bioq_remove(&psc->queue, bp);
if (pst_rw(request)) {
biofinish(request->bp, NULL, EIO);
iop_free_mfa(request->psc->iop, request->mfa);