aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/vfs_export.c
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>1998-04-18 06:26:16 +0000
committerPeter Wemm <peter@FreeBSD.org>1998-04-18 06:26:16 +0000
commit37b8ccd37a40d96cde47ef5c83b7a3eeca20da21 (patch)
tree5d3a5d620b0d437936d60bca837956c5cc95f9bb /sys/kern/vfs_export.c
parent141d52a90073a0c04e2c56d1ec3e78cbba70b3b3 (diff)
Notes
Diffstat (limited to 'sys/kern/vfs_export.c')
-rw-r--r--sys/kern/vfs_export.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c
index 2950d8551a1d..8e6c9dc33709 100644
--- a/sys/kern/vfs_export.c
+++ b/sys/kern/vfs_export.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
- * $Id: vfs_subr.c,v 1.149 1998/04/15 18:37:49 tegge Exp $
+ * $Id: vfs_subr.c,v 1.150 1998/04/16 03:31:26 peter Exp $
*/
/*
@@ -2404,6 +2404,7 @@ vfs_export_lookup(mp, nep, nam)
void
vfs_msync(struct mount *mp, int flags) {
struct vnode *vp, *nvp;
+ struct vm_object *obj;
int anyio, tries;
tries = 5;
@@ -2417,9 +2418,15 @@ loop:
goto loop;
}
- if ((vp->v_flag & VXLOCK) ||
- (VOP_ISLOCKED(vp) && (flags != MNT_WAIT))) {
+ if (vp->v_flag & VXLOCK) /* XXX: what if MNT_WAIT? */
continue;
+
+ if (flags != MNT_WAIT) {
+ obj = vp->v_object;
+ if (obj == NULL || (obj->flags & OBJ_MIGHTBEDIRTY) == 0)
+ continue;
+ if (VOP_ISLOCKED(vp))
+ continue;
}
simple_lock(&vp->v_interlock);