summaryrefslogtreecommitdiffstats
path: root/sys/dev/twe/twe.c
diff options
context:
space:
mode:
authormsmith <msmith@FreeBSD.org>2000-11-03 16:11:05 +0000
committermsmith <msmith@FreeBSD.org>2000-11-03 16:11:05 +0000
commita1750a380142dd6f26bd6d163514bb5f107d1a9b (patch)
tree980f98f8910632ea00fce5a764d9a48c51aafeba /sys/dev/twe/twe.c
parenta25227ce2064b3482f7a49e6a6222de580a32585 (diff)
downloadFreeBSD-src-a1750a380142dd6f26bd6d163514bb5f107d1a9b.zip
FreeBSD-src-a1750a380142dd6f26bd6d163514bb5f107d1a9b.tar.gz
If we can't get a command to back the bio we just took off the queue,
put the bio back, otherwise we'll drop it when we bail. This was causing bio lossage under load, leading to eventual system lockup.
Diffstat (limited to 'sys/dev/twe/twe.c')
-rw-r--r--sys/dev/twe/twe.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/twe/twe.c b/sys/dev/twe/twe.c
index c9205dd..53075ab 100644
--- a/sys/dev/twe/twe.c
+++ b/sys/dev/twe/twe.c
@@ -831,8 +831,10 @@ twe_startio(struct twe_softc *sc)
if ((bp = twe_dequeue_bio(sc)) == NULL)
break;
/* get a command */
- if (twe_get_request(sc, &tr))
+ if (twe_get_request(sc, &tr)) {
+ twe_enqueue_bio(sc, bp);
break;
+ }
/* connect the bio to the command */
tr->tr_complete = twe_completeio;
OpenPOWER on IntegriCloud