SCCS-vsn: sys/kern/kern_physio.c 4.4
SCCS-vsn: sys/kern/vfs_bio.c 4.4
SCCS-vsn: sys/kern/vfs_cluster.c 4.4
-/* kern_physio.c 4.3 %G% */
+/* kern_physio.c 4.4 %G% */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/seg.h"
#include "../h/pte.h"
#include "../h/vm.h"
#include "../h/seg.h"
#include "../h/pte.h"
#include "../h/vm.h"
/*
* The following several routines allocate and free
/*
* The following several routines allocate and free
bp = getblk(dev, blkno);
if (bp->b_flags&B_DONE) {
bp = getblk(dev, blkno);
if (bp->b_flags&B_DONE) {
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_HIT, dev, blkno);
+#endif
#ifdef DISKMON
io_info.ncache++;
#endif
#ifdef DISKMON
io_info.ncache++;
#endif
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS, dev, blkno);
+#endif
#ifdef DISKMON
io_info.nread++;
#endif
#ifdef DISKMON
io_info.nread++;
#endif
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS, dev, blkno);
+#endif
#ifdef DISKMON
io_info.nread++;
#endif
u.u_vm.vm_inblk++; /* pay for read */
}
#ifdef DISKMON
io_info.nread++;
#endif
u.u_vm.vm_inblk++; /* pay for read */
}
+#ifdef EPAWNJ
+ else
+ trace(TR_BREAD|TR_HIT, dev, blkno);
+#endif
}
if (rablkno && !incore(dev, rablkno)) {
rabp = getblk(dev, rablkno);
}
if (rablkno && !incore(dev, rablkno)) {
rabp = getblk(dev, rablkno);
- if (rabp->b_flags & B_DONE)
+ if (rabp->b_flags & B_DONE) {
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_HIT|TR_RA, dev, blkno);
+#endif
+ } else {
rabp->b_flags |= B_READ|B_ASYNC;
rabp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(rabp);
rabp->b_flags |= B_READ|B_ASYNC;
rabp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(rabp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS|TR_RA, dev, rablock);
+#endif
#ifdef DISKMON
io_info.nreada++;
#endif
#ifdef DISKMON
io_info.nreada++;
#endif
#endif
if ((flag&B_DELWRI) == 0)
u.u_vm.vm_oublk++; /* noone paid yet */
#endif
if ((flag&B_DELWRI) == 0)
u.u_vm.vm_oublk++; /* noone paid yet */
+#ifdef EPAWNJ
+ trace(TR_BWRITE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
if ((flag&B_ASYNC) == 0) {
iowait(bp);
(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
if ((flag&B_ASYNC) == 0) {
iowait(bp);
if (bp->b_dev == NODEV)
goto done;
/* INLINE EXPANSION OF bunhash(bp) */
if (bp->b_dev == NODEV)
goto done;
/* INLINE EXPANSION OF bunhash(bp) */
+#ifdef EPAWNJ
+ trace(TR_BRELSE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
(void) spl6();
i = BUFHASH(dbtofsb(bp->b_blkno));
x = bp - buf;
(void) spl6();
i = BUFHASH(dbtofsb(bp->b_blkno));
x = bp - buf;
- if (bp->b_dev != NODEV)
+ if (bp->b_dev != NODEV) {
+#ifdef EPAWNJ
+ trace(TR_BRELSE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
bp->b_flags = B_BUSY;
bp->b_back->b_forw = bp->b_forw;
bp->b_forw->b_back = bp->b_back;
bp->b_flags = B_BUSY;
bp->b_back->b_forw = bp->b_forw;
bp->b_forw->b_back = bp->b_back;
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/seg.h"
#include "../h/pte.h"
#include "../h/vm.h"
#include "../h/seg.h"
#include "../h/pte.h"
#include "../h/vm.h"
/*
* The following several routines allocate and free
/*
* The following several routines allocate and free
bp = getblk(dev, blkno);
if (bp->b_flags&B_DONE) {
bp = getblk(dev, blkno);
if (bp->b_flags&B_DONE) {
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_HIT, dev, blkno);
+#endif
#ifdef DISKMON
io_info.ncache++;
#endif
#ifdef DISKMON
io_info.ncache++;
#endif
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS, dev, blkno);
+#endif
#ifdef DISKMON
io_info.nread++;
#endif
#ifdef DISKMON
io_info.nread++;
#endif
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS, dev, blkno);
+#endif
#ifdef DISKMON
io_info.nread++;
#endif
u.u_vm.vm_inblk++; /* pay for read */
}
#ifdef DISKMON
io_info.nread++;
#endif
u.u_vm.vm_inblk++; /* pay for read */
}
+#ifdef EPAWNJ
+ else
+ trace(TR_BREAD|TR_HIT, dev, blkno);
+#endif
}
if (rablkno && !incore(dev, rablkno)) {
rabp = getblk(dev, rablkno);
}
if (rablkno && !incore(dev, rablkno)) {
rabp = getblk(dev, rablkno);
- if (rabp->b_flags & B_DONE)
+ if (rabp->b_flags & B_DONE) {
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_HIT|TR_RA, dev, blkno);
+#endif
+ } else {
rabp->b_flags |= B_READ|B_ASYNC;
rabp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(rabp);
rabp->b_flags |= B_READ|B_ASYNC;
rabp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(rabp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS|TR_RA, dev, rablock);
+#endif
#ifdef DISKMON
io_info.nreada++;
#endif
#ifdef DISKMON
io_info.nreada++;
#endif
#endif
if ((flag&B_DELWRI) == 0)
u.u_vm.vm_oublk++; /* noone paid yet */
#endif
if ((flag&B_DELWRI) == 0)
u.u_vm.vm_oublk++; /* noone paid yet */
+#ifdef EPAWNJ
+ trace(TR_BWRITE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
if ((flag&B_ASYNC) == 0) {
iowait(bp);
(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
if ((flag&B_ASYNC) == 0) {
iowait(bp);
if (bp->b_dev == NODEV)
goto done;
/* INLINE EXPANSION OF bunhash(bp) */
if (bp->b_dev == NODEV)
goto done;
/* INLINE EXPANSION OF bunhash(bp) */
+#ifdef EPAWNJ
+ trace(TR_BRELSE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
(void) spl6();
i = BUFHASH(dbtofsb(bp->b_blkno));
x = bp - buf;
(void) spl6();
i = BUFHASH(dbtofsb(bp->b_blkno));
x = bp - buf;
- if (bp->b_dev != NODEV)
+ if (bp->b_dev != NODEV) {
+#ifdef EPAWNJ
+ trace(TR_BRELSE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
bp->b_flags = B_BUSY;
bp->b_back->b_forw = bp->b_forw;
bp->b_forw->b_back = bp->b_back;
bp->b_flags = B_BUSY;
bp->b_back->b_forw = bp->b_forw;
bp->b_forw->b_back = bp->b_back;
-/* vfs_cluster.c 4.3 %G% */
+/* vfs_cluster.c 4.4 %G% */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/seg.h"
#include "../h/pte.h"
#include "../h/vm.h"
#include "../h/seg.h"
#include "../h/pte.h"
#include "../h/vm.h"
/*
* The following several routines allocate and free
/*
* The following several routines allocate and free
bp = getblk(dev, blkno);
if (bp->b_flags&B_DONE) {
bp = getblk(dev, blkno);
if (bp->b_flags&B_DONE) {
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_HIT, dev, blkno);
+#endif
#ifdef DISKMON
io_info.ncache++;
#endif
#ifdef DISKMON
io_info.ncache++;
#endif
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS, dev, blkno);
+#endif
#ifdef DISKMON
io_info.nread++;
#endif
#ifdef DISKMON
io_info.nread++;
#endif
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
bp->b_flags |= B_READ;
bp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(bp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS, dev, blkno);
+#endif
#ifdef DISKMON
io_info.nread++;
#endif
u.u_vm.vm_inblk++; /* pay for read */
}
#ifdef DISKMON
io_info.nread++;
#endif
u.u_vm.vm_inblk++; /* pay for read */
}
+#ifdef EPAWNJ
+ else
+ trace(TR_BREAD|TR_HIT, dev, blkno);
+#endif
}
if (rablkno && !incore(dev, rablkno)) {
rabp = getblk(dev, rablkno);
}
if (rablkno && !incore(dev, rablkno)) {
rabp = getblk(dev, rablkno);
- if (rabp->b_flags & B_DONE)
+ if (rabp->b_flags & B_DONE) {
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_HIT|TR_RA, dev, blkno);
+#endif
+ } else {
rabp->b_flags |= B_READ|B_ASYNC;
rabp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(rabp);
rabp->b_flags |= B_READ|B_ASYNC;
rabp->b_bcount = BSIZE;
(*bdevsw[major(dev)].d_strategy)(rabp);
+#ifdef EPAWNJ
+ trace(TR_BREAD|TR_MISS|TR_RA, dev, rablock);
+#endif
#ifdef DISKMON
io_info.nreada++;
#endif
#ifdef DISKMON
io_info.nreada++;
#endif
#endif
if ((flag&B_DELWRI) == 0)
u.u_vm.vm_oublk++; /* noone paid yet */
#endif
if ((flag&B_DELWRI) == 0)
u.u_vm.vm_oublk++; /* noone paid yet */
+#ifdef EPAWNJ
+ trace(TR_BWRITE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
if ((flag&B_ASYNC) == 0) {
iowait(bp);
(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
if ((flag&B_ASYNC) == 0) {
iowait(bp);
if (bp->b_dev == NODEV)
goto done;
/* INLINE EXPANSION OF bunhash(bp) */
if (bp->b_dev == NODEV)
goto done;
/* INLINE EXPANSION OF bunhash(bp) */
+#ifdef EPAWNJ
+ trace(TR_BRELSE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
(void) spl6();
i = BUFHASH(dbtofsb(bp->b_blkno));
x = bp - buf;
(void) spl6();
i = BUFHASH(dbtofsb(bp->b_blkno));
x = bp - buf;
- if (bp->b_dev != NODEV)
+ if (bp->b_dev != NODEV) {
+#ifdef EPAWNJ
+ trace(TR_BRELSE, bp->b_dev, dbtofsb(bp->b_blkno));
+#endif
bp->b_flags = B_BUSY;
bp->b_back->b_forw = bp->b_forw;
bp->b_forw->b_back = bp->b_back;
bp->b_flags = B_BUSY;
bp->b_back->b_forw = bp->b_forw;
bp->b_forw->b_back = bp->b_back;