SCCS-vsn: sys/luna68k/dev/st.c 7.6
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)st.c 7.5 (Berkeley) %G%
+ * @(#)st.c 7.6 (Berkeley) %G%
register struct hp_device *hd;
{
register struct st_softc *sc = &st_softc[hd->hp_unit];
register struct hp_device *hd;
{
register struct st_softc *sc = &st_softc[hd->hp_unit];
+ register struct buf *bp;
+ for (bp = sttab; bp < &sttab[NST]; bp++)
+ bp->b_actb = &bp->b_actf;
sc->sc_hd = hd;
sc->sc_punit = stpunit(hd->hp_flags);
sc->sc_type = stident(sc, hd);
sc->sc_hd = hd;
sc->sc_punit = stpunit(hd->hp_flags);
sc->sc_type = stident(sc, hd);
register struct buf *dp = &sttab[unit];
int s;
register struct buf *dp = &sttab[unit];
int s;
-
- if (dp->b_actf == NULL)
- dp->b_actf = bp;
- else
- dp->b_actl->av_forw = bp;
-
- dp->b_actl = bp;
-
+ bp->b_actb = dp->b_actb;
+ *dp->b_actb = bp;
+ dp->b_actb = &bp->b_actf;
if (dp->b_active == 0) {
dp->b_active = 1;
stustart(unit);
if (dp->b_active == 0) {
dp->b_active = 1;
stustart(unit);
register struct st_softc *sc = &st_softc[unit];
register struct hp_device *hp = sc->sc_hd;
register struct scsi_queue *dq = &sc->sc_dq;
register struct st_softc *sc = &st_softc[unit];
register struct hp_device *hp = sc->sc_hd;
register struct scsi_queue *dq = &sc->sc_dq;
- register struct buf *bp = sttab[unit].b_actf;
+ register struct buf *dp, *bp = sttab[unit].b_actf;
register struct scsi_fmt_cdb *cmd;
long nblks;
register struct scsi_fmt_cdb *cmd;
long nblks;
bp->b_error = EIO;
sttab[unit].b_errcnt = 0;
bp->b_error = EIO;
sttab[unit].b_errcnt = 0;
- sttab[unit].b_actf = bp->b_actf;
-
+ if (dp = bp->b_actf)
+ dp->b_actb = bp->b_actb;
+ else
+ sttab[unit].b_actb = bp->b_actb;
+ *bp->b_actb = dp;
bp->b_resid = 0;
biodone(bp);
bp->b_resid = 0;
biodone(bp);
register struct st_softc *sc = &st_softc[unit];
register struct scsi_xsense *xp = (struct scsi_xsense *) xsense_buff;
register struct scsi_queue *dq = &sc->sc_dq;
register struct st_softc *sc = &st_softc[unit];
register struct scsi_xsense *xp = (struct scsi_xsense *) xsense_buff;
register struct scsi_queue *dq = &sc->sc_dq;
- register struct buf *bp = dq->dq_bp;
+ register struct buf *dp, *bp = dq->dq_bp;
int ctlr = dq->dq_ctlr;
int slave = dq->dq_slave;
int ctlr = dq->dq_ctlr;
int slave = dq->dq_slave;
done:
sttab[unit].b_errcnt = 0;
done:
sttab[unit].b_errcnt = 0;
- sttab[unit].b_actf = bp->b_actf;
-
+ if (dp = bp->b_actf)
+ dp->b_actb = bp->b_actb;
+ else
+ sttab[unit].b_actb = bp->b_actb;
+ *bp->b_actb = dp;
bp->b_resid = 0;
biodone(bp);
bp->b_resid = 0;
biodone(bp);