diff --git a/sys/ufs/ufs/ufs_readwrite.c b/sys/ufs/ufs/ufs_readwrite.c index 9d407bb07b0d..7fc80b3aa638 100644 --- a/sys/ufs/ufs/ufs_readwrite.c +++ b/sys/ufs/ufs/ufs_readwrite.c @@ -1,4 +1,4 @@ -/* $NetBSD: ufs_readwrite.c,v 1.35 2001/09/30 02:50:35 chs Exp $ */ +/* $NetBSD: ufs_readwrite.c,v 1.36 2001/10/03 05:02:46 chs Exp $ */ /*- * Copyright (c) 1993 @@ -205,6 +205,7 @@ WRITE(void *v) int ubc_alloc_flags; void *win; vsize_t bytelen; + boolean_t async; boolean_t usepc = FALSE; cred = ap->a_cred; @@ -260,6 +261,7 @@ WRITE(void *v) return (EFBIG); } + async = vp->v_mount->mnt_flag & MNT_ASYNC; resid = uio->uio_resid; osize = ip->i_ffs_size; bsize = fs->fs_bsize; @@ -352,7 +354,7 @@ WRITE(void *v) * XXXUBC simplistic async flushing. */ - if (oldoff >> 16 != uio->uio_offset >> 16) { + if (!async && oldoff >> 16 != uio->uio_offset >> 16) { simple_lock(&vp->v_uobj.vmobjlock); error = (vp->v_uobj.pgops->pgo_put)(&vp->v_uobj, (oldoff >> 16) << 16, (uio->uio_offset >> 16) << 16,