summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1998-07-08 01:04:33 +0000
committerjulian <julian@FreeBSD.org>1998-07-08 01:04:33 +0000
commit78a155ddaf49598651f8b5c0d320e4f5d2b49ee3 (patch)
tree6f1f0ad6440f38aa17066e9b0245b0c8e2c8095e /sys/ufs
parentd306217e883e7f102fce3e41810679494964038c (diff)
downloadFreeBSD-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.c11
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) {
OpenPOWER on IntegriCloud