Catch a few corner cases where FreeBSD differs enough from BSD 4.4 to
confuse Soft updates.. Should solve several "dangling deps" panics.
This commit is contained in:
parent
b5fe8fabda
commit
6deaf84b1f
@ -254,7 +254,8 @@ WRITE(ap)
|
||||
|
||||
error =
|
||||
uiomove((char *)bp->b_data + blkoffset, (int)xfersize, uio);
|
||||
if (ioflag & IO_VMIO)
|
||||
if ((ioflag & IO_VMIO) &&
|
||||
(LIST_FIRST(&bp->b_dep) == NULL)) /* in ext2fs? */
|
||||
bp->b_flags |= B_RELBUF;
|
||||
|
||||
if (ioflag & IO_SYNC) {
|
||||
|
@ -254,7 +254,8 @@ WRITE(ap)
|
||||
|
||||
error =
|
||||
uiomove((char *)bp->b_data + blkoffset, (int)xfersize, uio);
|
||||
if (ioflag & IO_VMIO)
|
||||
if ((ioflag & IO_VMIO) &&
|
||||
(LIST_FIRST(&bp->b_dep) == NULL)) /* in ext2fs? */
|
||||
bp->b_flags |= B_RELBUF;
|
||||
|
||||
if (ioflag & IO_SYNC) {
|
||||
|
@ -11,7 +11,7 @@
|
||||
* 2. Absolutely no warranty of function or purpose is made by the author
|
||||
* John S. Dyson.
|
||||
*
|
||||
* $Id: vfs_bio.c,v 1.164 1998/05/01 15:10:59 peter Exp $
|
||||
* $Id: vfs_bio.c,v 1.165 1998/07/04 20:45:31 julian Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -1458,7 +1458,8 @@ getblk(struct vnode * vp, daddr_t blkno, int size, int slpflag, int slptimeo)
|
||||
bp->b_flags |= B_NOCACHE;
|
||||
VOP_BWRITE(bp);
|
||||
} else {
|
||||
if (bp->b_flags & B_VMIO) {
|
||||
if ((bp->b_flags & B_VMIO) &&
|
||||
(LIST_FIRST(&bp->b_dep) == NULL)) {
|
||||
bp->b_flags |= B_RELBUF;
|
||||
brelse(bp);
|
||||
} else {
|
||||
@ -1571,7 +1572,7 @@ geteblk(int size)
|
||||
while ((bp = getnewbuf(0, (daddr_t) 0, 0, 0, size, MAXBSIZE)) == 0);
|
||||
splx(s);
|
||||
allocbuf(bp, size);
|
||||
bp->b_flags |= B_INVAL;
|
||||
bp->b_flags |= B_INVAL; /* b_dep cleared by getnewbuf() */
|
||||
return (bp);
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)ufs_readwrite.c 8.11 (Berkeley) 5/8/95
|
||||
* $Id: ufs_readwrite.c,v 1.49 1998/04/06 18:18:50 peter Exp $
|
||||
* $Id: ufs_readwrite.c,v 1.50 1998/06/04 17:04:44 dfr Exp $
|
||||
*/
|
||||
|
||||
#define BLKSIZE(a, b, c) blksize(a, b, c)
|
||||
@ -210,7 +210,8 @@ READ(ap)
|
||||
if (error)
|
||||
break;
|
||||
|
||||
if (ioflag & IO_VMIO) {
|
||||
if ((ioflag & IO_VMIO) &&
|
||||
(LIST_FIRST(&bp->b_dep) == NULL)) {
|
||||
bp->b_flags |= B_RELBUF;
|
||||
brelse(bp);
|
||||
} else {
|
||||
@ -219,7 +220,8 @@ READ(ap)
|
||||
}
|
||||
|
||||
if (bp != NULL) {
|
||||
if (ioflag & IO_VMIO) {
|
||||
if ((ioflag & IO_VMIO) &&
|
||||
(LIST_FIRST(&bp->b_dep) == NULL)) {
|
||||
bp->b_flags |= B_RELBUF;
|
||||
brelse(bp);
|
||||
} else {
|
||||
@ -355,7 +357,8 @@ WRITE(ap)
|
||||
|
||||
error =
|
||||
uiomove((char *)bp->b_data + blkoffset, (int)xfersize, uio);
|
||||
if (ioflag & IO_VMIO)
|
||||
if ((ioflag & IO_VMIO) &&
|
||||
(LIST_FIRST(&bp->b_dep) == NULL))
|
||||
bp->b_flags |= B_RELBUF;
|
||||
|
||||
if (ioflag & IO_SYNC) {
|
||||
|
Loading…
Reference in New Issue
Block a user