Update for sys/buf.h/disksort_*() changes.

This commit is contained in:
thorpej 2000-01-21 23:43:10 +00:00
parent f7c9b87381
commit 0b0aecffd6
7 changed files with 43 additions and 40 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: xy.c,v 1.14 1999/07/28 10:03:02 drochner Exp $ */
/* $NetBSD: xy.c,v 1.15 2000/01/21 23:43:10 thorpej Exp $ */
/*
*
@ -553,9 +553,7 @@ xyattach(parent, self, aux)
/* 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->xyq);
xy->xyrq = &xyc->reqs[xa->driveno];
@ -1095,7 +1093,7 @@ xystrategy(bp)
*/
s = splbio(); /* protect the queues */
disksort(&xy->xyq, bp);
disksort_blkno(&xy->xyq, bp); /* XXX disksort_cylinder */
/* start 'em up */
@ -1716,7 +1714,7 @@ xyc_reset(xycsc, quiet, blastmode, error, xysc)
bus_dmamap_unload(xycsc->dmatag, iorq->dmamap);
iorq->xy->xyq.b_actf = iorq->buf->b_actf;
BUFQ_REMOVE(&iorq->xy->xyq, iorq->buf);
disk_unbusy(&xycsc->reqs[lcv].xy->sc_dk,
(xycsc->reqs[lcv].buf->b_bcount -
xycsc->reqs[lcv].buf->b_resid));
@ -1762,9 +1760,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_FIRST(&xy->xyq) == NULL) continue;
if (xy->xyrq->mode != XY_SUB_FREE) continue;
xyc_startbuf(xycsc, xy, xy->xyq.b_actf);
xyc_startbuf(xycsc, xy, BUFQ_FIRST(&xy->xyq));
}
}
xyc_submit_iorq(xycsc, iorq, XY_SUB_NOQ);
@ -1899,7 +1897,7 @@ xyc_remove_iorq(xycsc)
bus_dmamap_unload(xycsc->dmatag, iorq->dmamap);
iorq->xy->xyq.b_actf = bp->b_actf;
BUFQ_REMOVE(&iorq->xy->xyq, bp);
disk_unbusy(&iorq->xy->sc_dk,
(bp->b_bcount - bp->b_resid));
iorq->mode = XY_SUB_FREE;

View File

@ -1,4 +1,4 @@
/* $NetBSD: xyvar.h,v 1.4 1999/06/30 15:07:45 drochner Exp $ */
/* $NetBSD: xyvar.h,v 1.5 2000/01/21 23:43:10 thorpej Exp $ */
/*
*
@ -111,7 +111,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 buf_queue xyq; /* queued I/O requests */
struct dkbad dkb; /* bad144 sectors */
};

View File

@ -1,4 +1,4 @@
/* $NetBSD: disklabel.h,v 1.53 1999/09/21 03:08:18 enami Exp $ */
/* $NetBSD: disklabel.h,v 1.54 2000/01/21 23:43:10 thorpej Exp $ */
/*
* Copyright (c) 1987, 1988, 1993
@ -347,9 +347,13 @@ struct partinfo {
};
#ifdef _KERNEL
struct buf_queue;
void diskerr
__P((struct buf *, char *, char *, int, int, struct disklabel *));
void disksort __P((struct buf *, struct buf *));
void disksort_cylinder __P((struct buf_queue *, struct buf *));
void disksort_blkno __P((struct buf_queue *, struct buf *));
void disksort_tail __P((struct buf_queue *, struct buf *));
u_int dkcksum __P((struct disklabel *));
int setdisklabel __P((struct disklabel *, struct disklabel *, u_long,
struct cpu_disklabel *));

View File

@ -1,4 +1,4 @@
/* $NetBSD: mfs_vfsops.c,v 1.21 1999/07/17 01:08:30 wrstuden Exp $ */
/* $NetBSD: mfs_vfsops.c,v 1.22 2000/01/21 23:43:10 thorpej Exp $ */
/*
* Copyright (c) 1989, 1990, 1993, 1994
@ -143,7 +143,7 @@ mfs_mountroot()
mfsp->mfs_size = mfs_rootsize;
mfsp->mfs_vnode = rootvp;
mfsp->mfs_pid = p->p_pid;
mfsp->mfs_buflist = (struct buf *)0;
BUFQ_INIT(&mfsp->mfs_buflist);
if ((error = ffs_mountfs(rootvp, mp, p)) != 0) {
mp->mnt_op->vfs_refcount--;
vfs_unbusy(mp);
@ -246,9 +246,9 @@ mfs_mount(mp, path, data, ndp, p)
mfsp->mfs_size = args.size;
mfsp->mfs_vnode = devvp;
mfsp->mfs_pid = p->p_pid;
mfsp->mfs_buflist = (struct buf *)0;
BUFQ_INIT(&mfsp->mfs_buflist);
if ((error = ffs_mountfs(devvp, mp, p)) != 0) {
mfsp->mfs_buflist = (struct buf *)-1;
BUFQ_FIRST(&mfsp->mfs_buflist) = (struct buf *) -1;
vrele(devvp);
return (error);
}
@ -287,7 +287,7 @@ mfs_start(mp, flags, p)
int sleepreturn = 0;
base = mfsp->mfs_baseoff;
while (mfsp->mfs_buflist != (struct buf *)-1) {
while (BUFQ_FIRST(&mfsp->mfs_buflist) != (struct buf *) -1) {
/*
* If a non-ignored signal is received, try to unmount.
* If that fails, or the filesystem is already in the
@ -303,8 +303,8 @@ mfs_start(mp, flags, p)
continue;
}
while ((bp = mfsp->mfs_buflist) != NULL) {
mfsp->mfs_buflist = bp->b_actf;
while ((bp = BUFQ_FIRST(&mfsp->mfs_buflist)) != NULL) {
BUFQ_REMOVE(&mfsp->mfs_buflist, bp);
mfs_doio(bp, base);
wakeup((caddr_t)bp);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: mfs_vnops.c,v 1.18 1999/10/01 22:12:02 mycroft Exp $ */
/* $NetBSD: mfs_vnops.c,v 1.19 2000/01/21 23:43:10 thorpej Exp $ */
/*
* Copyright (c) 1989, 1993
@ -162,8 +162,7 @@ mfs_strategy(v)
} else if (mfsp->mfs_pid == p->p_pid) {
mfs_doio(bp, mfsp->mfs_baseoff);
} else {
bp->b_actf = mfsp->mfs_buflist;
mfsp->mfs_buflist = bp;
BUFQ_INSERT_TAIL(&mfsp->mfs_buflist, bp);
wakeup((caddr_t)vp);
}
return (0);
@ -237,8 +236,8 @@ mfs_close(v)
/*
* Finish any pending I/O requests.
*/
while ((bp = mfsp->mfs_buflist) != NULL) {
mfsp->mfs_buflist = bp->b_actf;
while ((bp = BUFQ_FIRST(&mfsp->mfs_buflist)) != NULL) {
BUFQ_REMOVE(&mfsp->mfs_buflist, bp);
mfs_doio(bp, mfsp->mfs_baseoff);
wakeup((caddr_t)bp);
}
@ -255,12 +254,12 @@ mfs_close(v)
*/
if (vp->v_usecount > 1)
printf("mfs_close: ref count %ld > 1\n", vp->v_usecount);
if (vp->v_usecount > 1 || mfsp->mfs_buflist)
if (vp->v_usecount > 1 || BUFQ_FIRST(&mfsp->mfs_buflist) != NULL)
panic("mfs_close");
/*
* Send a request to the filesystem server to exit.
*/
mfsp->mfs_buflist = (struct buf *)(-1);
BUFQ_FIRST(&mfsp->mfs_buflist) = (struct buf *) -1;
wakeup((caddr_t)vp);
return (0);
}
@ -280,9 +279,10 @@ mfs_inactive(v)
struct vnode *vp = ap->a_vp;
struct mfsnode *mfsp = VTOMFS(vp);
if (mfsp->mfs_buflist && mfsp->mfs_buflist != (struct buf *)(-1))
if (BUFQ_FIRST(&mfsp->mfs_buflist) != NULL &&
BUFQ_FIRST(&mfsp->mfs_buflist) != (struct buf *) -1)
panic("mfs_inactive: not inactive (mfs_buflist %p)",
mfsp->mfs_buflist);
BUFQ_FIRST(&mfsp->mfs_buflist));
VOP_UNLOCK(vp, 0);
return (0);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: mfsnode.h,v 1.6 1998/03/01 02:23:30 fvdl Exp $ */
/* $NetBSD: mfsnode.h,v 1.7 2000/01/21 23:43:10 thorpej Exp $ */
/*
* Copyright (c) 1989, 1993
@ -44,7 +44,7 @@ struct mfsnode {
caddr_t mfs_baseoff; /* base of file system in memory */
long mfs_size; /* size of memory file system */
pid_t mfs_pid; /* supporting process pid */
struct buf *mfs_buflist; /* list of I/O requests */
struct buf_queue mfs_buflist; /* list of I/O requests */
long mfs_spare[4];
};

View File

@ -1,4 +1,4 @@
/* $NetBSD: uvm_swap.c,v 1.32 2000/01/11 06:57:51 chs Exp $ */
/* $NetBSD: uvm_swap.c,v 1.33 2000/01/21 23:43:10 thorpej Exp $ */
/*
* Copyright (c) 1995, 1996, 1997 Matthew R. Green
@ -144,7 +144,8 @@ struct swapdev {
int swd_bsize; /* blocksize (bytes) */
int swd_maxactive; /* max active i/o reqs */
struct buf swd_tab; /* buffer list */
struct buf_queue swd_tab; /* buffer list */
int swd_active; /* number of active buffers */
struct ucred *swd_cred; /* cred for file access */
};
@ -691,6 +692,7 @@ sys_swapctl(p, v, retval)
sdp->swd_flags = SWF_FAKE; /* placeholder only */
sdp->swd_vp = vp;
sdp->swd_dev = (vp->v_type == VBLK) ? vp->v_rdev : NODEV;
BUFQ_INIT(&sdp->swd_tab);
/*
* XXX Is NFS elaboration necessary?
@ -1332,7 +1334,6 @@ sw_reg_strategy(sdp, bp, bn)
/*
* Just sort by block number
*/
nbp->vb_buf.b_cylinder = nbp->vb_buf.b_blkno;
s = splbio();
if (vnx->vx_error != 0) {
putvndbuf(nbp);
@ -1344,7 +1345,7 @@ sw_reg_strategy(sdp, bp, bn)
bgetvp(vp, &nbp->vb_buf);
/* sort it in and start I/O if we are not over our limit */
disksort(&sdp->swd_tab, &nbp->vb_buf);
disksort_blkno(&sdp->swd_tab, &nbp->vb_buf);
sw_reg_start(sdp);
splx(s);
@ -1388,12 +1389,12 @@ sw_reg_start(sdp)
sdp->swd_flags |= SWF_BUSY;
while (sdp->swd_tab.b_active < sdp->swd_maxactive) {
bp = sdp->swd_tab.b_actf;
while (sdp->swd_active < sdp->swd_maxactive) {
bp = BUFQ_FIRST(&sdp->swd_tab);
if (bp == NULL)
break;
sdp->swd_tab.b_actf = bp->b_actf;
sdp->swd_tab.b_active++;
BUFQ_REMOVE(&sdp->swd_tab, bp);
sdp->swd_active++;
UVMHIST_LOG(pdhist,
"sw_reg_start: bp %p vp %p blkno %p cnt %lx",
@ -1477,7 +1478,7 @@ sw_reg_iodone(bp)
/*
* done! start next swapdev I/O if one is pending
*/
sdp->swd_tab.b_active--;
sdp->swd_active--;
sw_reg_start(sdp);
splx(s);
}