Don't put the request onto the `worklist' in ccb_submit(), since it may

still be on the pending queue.
This commit is contained in:
ad 2001-02-12 19:04:35 +00:00
parent ec0ab7054b
commit 469b91fce0
1 changed files with 4 additions and 5 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: mlx.c,v 1.3 2001/02/06 12:53:48 ad Exp $ */
/* $NetBSD: mlx.c,v 1.4 2001/02/12 19:04:35 ad Exp $ */
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
@ -1851,6 +1851,7 @@ mlx_ccb_enqueue(struct mlx_softc *mlx, struct mlx_ccb *mc)
if (mlx_ccb_submit(mlx, mc) != 0)
break;
SIMPLEQ_REMOVE_HEAD(&mlx->mlx_ccb_queue, mc, mc_chain.simpleq);
TAILQ_INSERT_TAIL(&mlx->mlx_ccb_worklist, mc, mc_chain.tailq);
}
splx(s);
@ -1939,6 +1940,7 @@ mlx_ccb_poll(struct mlx_softc *mlx, struct mlx_ccb *mc, int timo)
if ((rv = mlx_ccb_submit(mlx, mc)) != 0)
return (rv);
TAILQ_INSERT_TAIL(&mlx->mlx_ccb_worklist, mc, mc_chain.tailq);
for (timo *= 10; timo != 0; timo--) {
mlx_intr(mlx);
@ -2013,11 +2015,8 @@ mlx_ccb_submit(struct mlx_softc *mlx, struct mlx_ccb *mc)
break;
DELAY(100);
}
if (i != 0) {
TAILQ_INSERT_TAIL(&mlx->mlx_ccb_worklist, mc, mc_chain.tailq);
if (i != 0)
return (0);
}
DPRINTF(("mlx_ccb_submit: rejected; queueing\n"));
mc->mc_status = MLX_STATUS_WEDGED;