projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make escape escape force escape
[unix-history]
/
usr
/
src
/
sys
/
kern
/
vfs_cluster.c
diff --git
a/usr/src/sys/kern/vfs_cluster.c
b/usr/src/sys/kern/vfs_cluster.c
index
cca3112
..
a1a6ddf
100644
(file)
--- a/
usr/src/sys/kern/vfs_cluster.c
+++ b/
usr/src/sys/kern/vfs_cluster.c
@@
-1,4
+1,4
@@
-/* vfs_cluster.c 4.2
0 81/04/24
*/
+/* vfs_cluster.c 4.2
3 81/07/25
*/
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
@@
-202,7
+202,7
@@
register struct buf *bp;
if ((flag&B_DELWRI) == 0)
u.u_vm.vm_oublk++; /* noone paid yet */
#ifdef TRACE
if ((flag&B_DELWRI) == 0)
u.u_vm.vm_oublk++; /* noone paid yet */
#ifdef TRACE
- trace(TR_BWRITE, bp->b_dev,
dbtofsb(bp->b_blkno)
);
+ trace(TR_BWRITE, bp->b_dev,
bp->b_blkno
);
#endif
(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
if ((flag&B_ASYNC) == 0) {
#endif
(*bdevsw[major(bp->b_dev)].d_strategy)(bp);
if ((flag&B_ASYNC) == 0) {
@@
-391,7
+391,7
@@
daddr_t blkno;
goto loop;
}
#ifdef TRACE
goto loop;
}
#ifdef TRACE
- trace(TR_BRELSE, bp->b_dev,
dbtofsb(bp->b_blkno)
);
+ trace(TR_BRELSE, bp->b_dev,
bp->b_blkno
);
#endif
bp->b_flags = B_BUSY;
bp->b_back->b_forw = bp->b_forw;
#endif
bp->b_flags = B_BUSY;
bp->b_back->b_forw = bp->b_forw;
@@
-433,7
+433,7
@@
loop:
goto loop;
}
#ifdef TRACE
goto loop;
}
#ifdef TRACE
- trace(TR_BRELSE, bp->b_dev,
dbtofsb(bp->b_blkno)
);
+ trace(TR_BRELSE, bp->b_dev,
bp->b_blkno
);
#endif
bp->b_flags = B_BUSY|B_INVAL;
bp->b_back->b_forw = bp->b_forw;
#endif
bp->b_flags = B_BUSY|B_INVAL;
bp->b_back->b_forw = bp->b_forw;
@@
-597,6
+597,9
@@
swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
swpf[bp - swbuf] = pfcent;
swsize[bp - swbuf] = nbytes;
}
swpf[bp - swbuf] = pfcent;
swsize[bp - swbuf] = nbytes;
}
+#ifdef TRACE
+ trace(TR_SWAPIO, dev, bp->b_blkno);
+#endif
(*bdevsw[major(dev)].d_strategy)(bp);
if (flag & B_DIRTY) {
if (c < nbytes)
(*bdevsw[major(dev)].d_strategy)(bp);
if (flag & B_DIRTY) {
if (c < nbytes)
@@
-716,7
+719,7
@@
unsigned (*mincnt)();
bp->b_error = 0;
bp->b_proc = u.u_procp;
bp->b_un.b_addr = u.u_base;
bp->b_error = 0;
bp->b_proc = u.u_procp;
bp->b_un.b_addr = u.u_base;
- while (u.u_count != 0
&& (bp->b_flags&B_ERROR)==0
) {
+ while (u.u_count != 0) {
bp->b_flags = B_BUSY | B_PHYS | rw;
bp->b_dev = dev;
bp->b_blkno = u.u_offset >> PGSHIFT;
bp->b_flags = B_BUSY | B_PHYS | rw;
bp->b_dev = dev;
bp->b_blkno = u.u_offset >> PGSHIFT;
@@
-737,6
+740,8
@@
unsigned (*mincnt)();
bp->b_un.b_addr += c;
u.u_count -= c;
u.u_offset += c;
bp->b_un.b_addr += c;
u.u_count -= c;
u.u_offset += c;
+ if (bp->b_flags&B_ERROR)
+ break;
}
bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS);
u.u_count = bp->b_resid;
}
bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS);
u.u_count = bp->b_resid;