summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2000-12-06 20:55:09 +0000
committerdillon <dillon@FreeBSD.org>2000-12-06 20:55:09 +0000
commit978bf0288dcc63cbf07834a158c164d4cee393ca (patch)
tree59ffd38a7a64826e4f30ed824a0ada494283bbb3 /sys/ufs
parent8580ef5e63b43faff61acfa23651c9b573963149 (diff)
downloadFreeBSD-src-978bf0288dcc63cbf07834a158c164d4cee393ca.zip
FreeBSD-src-978bf0288dcc63cbf07834a158c164d4cee393ca.tar.gz
Add necessary bwillwrite() in writev() entry point.
Deal with excessive dirty buffers when msync() syncs non-contiguous dirty buffers by checking for the case in UFS *before* checking for clusterability.
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ufs/ufs_readwrite.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/ufs/ufs/ufs_readwrite.c b/sys/ufs/ufs/ufs_readwrite.c
index 785219c..4830120 100644
--- a/sys/ufs/ufs/ufs_readwrite.c
+++ b/sys/ufs/ufs/ufs_readwrite.c
@@ -495,6 +495,9 @@ WRITE(ap)
if (ioflag & IO_SYNC) {
(void)bwrite(bp);
+ } else if (vm_page_count_severe() || buf_dirty_count_severe()) {
+ bp->b_flags |= B_CLUSTEROK;
+ bawrite(bp);
} else if (xfersize + blkoffset == fs->fs_bsize) {
if ((vp->v_mount->mnt_flag & MNT_NOCLUSTERW) == 0) {
bp->b_flags |= B_CLUSTEROK;
@@ -502,9 +505,6 @@ WRITE(ap)
} else {
bawrite(bp);
}
- } else if (vm_page_count_severe() || buf_dirty_count_severe()) {
- bp->b_flags |= B_CLUSTEROK;
- bawrite(bp);
} else {
bp->b_flags |= B_CLUSTEROK;
bdwrite(bp);
OpenPOWER on IntegriCloud