diff options
-rw-r--r-- | sys/arch/sparc/dev/xy.c | 17 | ||||
-rw-r--r-- | sys/arch/sparc/dev/xyvar.h | 4 |
2 files changed, 8 insertions, 13 deletions
diff --git a/sys/arch/sparc/dev/xy.c b/sys/arch/sparc/dev/xy.c index ea4838dee00..6bf95635639 100644 --- a/sys/arch/sparc/dev/xy.c +++ b/sys/arch/sparc/dev/xy.c @@ -1,4 +1,4 @@ -/* $OpenBSD: xy.c,v 1.57 2013/11/01 17:36:19 krw Exp $ */ +/* $OpenBSD: xy.c,v 1.58 2013/11/20 00:15:32 dlg Exp $ */ /* $NetBSD: xy.c,v 1.26 1997/07/19 21:43:56 pk Exp $ */ /* @@ -508,10 +508,7 @@ xyattach(parent, self, aux) xy->parent = xyc; /* init queue of waiting bufs */ - - xy->xyq.b_active = 0; - xy->xyq.b_actf = 0; - xy->xyq.b_actb = &xy->xyq.b_actf; /* XXX b_actb: not used? */ + bufq_init(&xy->xy_bufq, BUFQ_DEFAULT); xy->xyrq = &xyc->reqs[xa->driveno]; @@ -1003,14 +1000,14 @@ xystrategy(bp) if (bounds_check_with_label(bp, xy->sc_dk.dk_label) == -1) goto done; + bufq_queue(&xy->xy_bufq, bp); + /* * now we know we have a valid buf structure that we need to do I/O * on. */ s = splbio(); /* protect the queues */ - disksort(&xy->xyq, bp); - /* start 'em up */ xyc_start(xy->parent, NULL); @@ -1604,7 +1601,6 @@ xyc_reset(xycsc, quiet, blastmode, error, xysc) dvma_mapout((vaddr_t)iorq->dbufbase, (vaddr_t)iorq->buf->b_data, iorq->buf->b_bcount); - iorq->xy->xyq.b_actf = iorq->buf->b_actf; disk_unbusy(&xycsc->reqs[lcv].xy->sc_dk, (xycsc->reqs[lcv].buf->b_bcount - xycsc->reqs[lcv].buf->b_resid), @@ -1651,9 +1647,9 @@ xyc_start(xycsc, iorq) if (iorq == NULL) { for (lcv = 0; lcv < XYC_MAXDEV ; lcv++) { if ((xy = xycsc->sc_drives[lcv]) == NULL) continue; - if (xy->xyq.b_actf == NULL) continue; + if (!bufq_peek(&xy->xy_bufq)) continue; if (xy->xyrq->mode != XY_SUB_FREE) continue; - xyc_startbuf(xycsc, xy, xy->xyq.b_actf); + xyc_startbuf(xycsc, xy, bufq_dequeue(&xy->xy_bufq)); } } xyc_submit_iorq(xycsc, iorq, XY_SUB_NOQ); @@ -1783,7 +1779,6 @@ xyc_remove_iorq(xycsc) dvma_mapout((vaddr_t) iorq->dbufbase, (vaddr_t) bp->b_data, bp->b_bcount); - iorq->xy->xyq.b_actf = bp->b_actf; disk_unbusy(&iorq->xy->sc_dk, (bp->b_bcount - bp->b_resid), (bp->b_flags & B_READ)); diff --git a/sys/arch/sparc/dev/xyvar.h b/sys/arch/sparc/dev/xyvar.h index 90e1d5a6d7b..2865f4a3a88 100644 --- a/sys/arch/sparc/dev/xyvar.h +++ b/sys/arch/sparc/dev/xyvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: xyvar.h,v 1.7 2011/06/05 18:40:33 matthew Exp $ */ +/* $OpenBSD: xyvar.h,v 1.8 2013/11/20 00:15:32 dlg Exp $ */ /* $NetBSD: xyvar.h,v 1.4 1996/03/31 22:39:04 pk Exp $ */ /* @@ -115,7 +115,7 @@ struct xy_softc { u_char nsect; /* number of sectors per track */ u_char hw_spt; /* as above, but includes spare sectors */ struct xy_iorq *xyrq; /* this disk's ioreq structure */ - struct buf xyq; /* queue'd I/O requests */ + struct bufq xy_bufq; /* queue'd I/O requests */ struct dkbad dkb; /* bad144 sectors */ }; |