diff options
| author | Scott Long <scottl@FreeBSD.org> | 2020-02-07 09:22:08 +0000 |
|---|---|---|
| committer | Scott Long <scottl@FreeBSD.org> | 2020-02-07 09:22:08 +0000 |
| commit | d176b8039e91164cd25271ff6191a4fb1a03fe97 (patch) | |
| tree | d1382f2fb54cb240d3aeda803ae80070bf8ecf13 /sys/dev/pst | |
| parent | a2abae8dc92a5778b3405cfbc1f20eaf7a067074 (diff) | |
Notes
Diffstat (limited to 'sys/dev/pst')
| -rw-r--r-- | sys/dev/pst/pst-raid.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/dev/pst/pst-raid.c b/sys/dev/pst/pst-raid.c index 2c16064981ab..eda4dd4022f6 100644 --- a/sys/dev/pst/pst-raid.c +++ b/sys/dev/pst/pst-raid.c @@ -214,6 +214,7 @@ pst_start(struct pst_softc *psc) struct pst_request *request; struct bio *bp; u_int32_t mfa; + int error; if (psc->iop->outstanding < (I2O_IOP_OUTBOUND_FRAME_COUNT - 1) && (bp = bioq_first(&psc->queue))) { @@ -231,8 +232,8 @@ pst_start(struct pst_softc *psc) request->psc = psc; request->mfa = mfa; request->bp = bp; - if (pst_rw(request)) { - biofinish(request->bp, NULL, EIO); + if ((error = pst_rw(request)) != 0) { + biofinish(request->bp, NULL, error); iop_free_mfa(request->psc->iop, request->mfa); psc->iop->outstanding--; free(request, M_PSTRAID); @@ -286,7 +287,7 @@ pst_rw(struct pst_request *request) break; default: printf("pst: unknown command type 0x%02x\n", request->bp->bio_cmd); - return -1; + return EOPNOTSUPP; } msg->initiator_context = (u_int32_t)pst_done; msg->transaction_context = (u_int32_t)request; @@ -296,7 +297,7 @@ pst_rw(struct pst_request *request) if (!iop_create_sgl((struct i2o_basic_message *)msg, request->bp->bio_data, request->bp->bio_bcount, sgl_flag)) - return -1; + return EIO; request->psc->iop->reg->iqueue = request->mfa; @@ -309,6 +310,7 @@ static void pst_timeout(void *arg) { struct pst_request *request; + int error; request = arg; printf("pst: timeout mfa=0x%08x cmd=0x%02x\n", @@ -321,9 +323,9 @@ pst_timeout(void *arg) request->psc->iop->outstanding--; return; } - if (pst_rw(request)) { + if ((error = pst_rw(request)) != 0) { iop_free_mfa(request->psc->iop, request->mfa); - biofinish(request->bp, NULL, EIO); + biofinish(request->bp, NULL, error); request->psc->iop->outstanding--; } } |
