summaryrefslogtreecommitdiffstats
path: root/sys/dev
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
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')
-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