summaryrefslogtreecommitdiff
path: root/sys/dev/md.c
diff options
context:
space:
mode:
authorthorpej <thorpej@NetBSD.org>2000-01-21 23:39:55 +0000
committerthorpej <thorpej@NetBSD.org>2000-01-21 23:39:55 +0000
commitdc59bc1db30221dc062e86bb7873bad0b45ca133 (patch)
treee3095a5ffd141a53bbafa4a4333cec5e0d9565ed /sys/dev/md.c
parent52242fdf9fd92890ab284190ffbe195798ae887d (diff)
Update for sys/buf.h/disksort_*() changes.
Diffstat (limited to 'sys/dev/md.c')
-rw-r--r--sys/dev/md.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/sys/dev/md.c b/sys/dev/md.c
index f5f0a05a2e3..b928d8049f3 100644
--- a/sys/dev/md.c
+++ b/sys/dev/md.c
@@ -1,4 +1,4 @@
-/* $NetBSD: md.c,v 1.21 2000/01/21 12:14:53 tsutsui Exp $ */
+/* $NetBSD: md.c,v 1.22 2000/01/21 23:39:57 thorpej Exp $ */
/*
* Copyright (c) 1995 Gordon W. Ross, Leo Weppelman.
@@ -84,7 +84,7 @@ struct md_softc {
struct device sc_dev; /* REQUIRED first entry */
struct disk sc_dkdev; /* hook for generic disk handling */
struct md_conf sc_md;
- struct buf *sc_buflist;
+ struct buf_queue sc_buflist;
};
/* shorthand for fields in sc_md: */
#define sc_addr sc_md.md_addr
@@ -147,6 +147,8 @@ md_attach(parent, self, aux)
{
struct md_softc *sc = (struct md_softc *)self;
+ BUFQ_INIT(&sc->sc_buflist);
+
/* XXX - Could accept aux info here to set the config. */
#ifdef MEMORY_DISK_HOOKS
/*
@@ -339,9 +341,8 @@ mdstrategy(bp)
#if MEMORY_DISK_SERVER
case MD_UMEM_SERVER:
/* Just add this job to the server's queue. */
- bp->b_actf = sc->sc_buflist;
- sc->sc_buflist = bp;
- if (bp->b_actf == NULL) {
+ BUFQ_INSERT_TAIL(&sc->sc_buflist, bp);
+ if (BUFQ_FIRST(&sc->sc_buflist) == bp) {
/* server queue was empty. */
wakeup((caddr_t)sc);
/* see md_server_loop() */
@@ -504,16 +505,14 @@ md_server_loop(sc)
for (;;) {
/* Wait for some work to arrive. */
- while (sc->sc_buflist == NULL) {
+ while ((bp = BUFQ_FIRST(&sc->sc_buflist)) == NULL) {
error = tsleep((caddr_t)sc, md_sleep_pri, "md_idle", 0);
if (error)
return error;
}
/* Unlink buf from head of list. */
- bp = sc->sc_buflist;
- sc->sc_buflist = bp->b_actf;
- bp->b_actf = NULL;
+ BUFQ_REMOVE(&sc->sc_buflist, bp);
/* Do the transfer to/from user space. */
error = 0;