diff options
author | julian <julian@FreeBSD.org> | 1998-07-08 01:04:33 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 1998-07-08 01:04:33 +0000 |
commit | 78a155ddaf49598651f8b5c0d320e4f5d2b49ee3 (patch) | |
tree | 6f1f0ad6440f38aa17066e9b0245b0c8e2c8095e /sys/ufs | |
parent | d306217e883e7f102fce3e41810679494964038c (diff) | |
download | FreeBSD-src-78a155ddaf49598651f8b5c0d320e4f5d2b49ee3.zip FreeBSD-src-78a155ddaf49598651f8b5c0d320e4f5d2b49ee3.tar.gz |
Catch a few corner cases where FreeBSD differs enough from BSD 4.4 to
confuse Soft updates..
Should solve several "dangling deps" panics.
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ufs/ufs_readwrite.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/ufs/ufs/ufs_readwrite.c b/sys/ufs/ufs/ufs_readwrite.c index a2e4fd4..b4d50e7 100644 --- a/sys/ufs/ufs/ufs_readwrite.c +++ b/sys/ufs/ufs/ufs_readwrite.c @@ -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) { |