aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pst
diff options
context:
space:
mode:
authorScott Long <scottl@FreeBSD.org>2020-02-07 09:22:08 +0000
committerScott Long <scottl@FreeBSD.org>2020-02-07 09:22:08 +0000
commitd176b8039e91164cd25271ff6191a4fb1a03fe97 (patch)
treed1382f2fb54cb240d3aeda803ae80070bf8ecf13 /sys/dev/pst
parenta2abae8dc92a5778b3405cfbc1f20eaf7a067074 (diff)
Notes
Diffstat (limited to 'sys/dev/pst')
-rw-r--r--sys/dev/pst/pst-raid.c14
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--;
}
}