in *_sync(), don't skip vnodes which have (potentially dirty) pages.

This commit is contained in:
chs 2000-12-10 19:36:31 +00:00
parent 40638d9f35
commit 3a5e4f901b
3 changed files with 13 additions and 10 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: msdosfs_vfsops.c,v 1.71 2000/11/27 08:39:47 chs Exp $ */
/* $NetBSD: msdosfs_vfsops.c,v 1.72 2000/12/10 19:36:31 chs Exp $ */
/*-
* Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@ -896,10 +896,11 @@ loop:
simple_lock(&vp->v_interlock);
nvp = vp->v_mntvnodes.le_next;
dep = VTODE(vp);
if (vp->v_type == VNON || (((dep->de_flag &
if (waitfor == MNT_LAZY || vp->v_type == VNON ||
(((dep->de_flag &
(DE_ACCESS | DE_CREATE | DE_UPDATE | DE_MODIFIED)) == 0) &&
(vp->v_dirtyblkhd.lh_first == NULL ||
waitfor == MNT_LAZY))) {
(LIST_EMPTY(&vp->v_dirtyblkhd) &&
vp->v_uvm.u_obj.uo_npages == 0))) {
simple_unlock(&vp->v_interlock);
continue;
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: nfs_vfsops.c,v 1.97 2000/11/27 08:39:50 chs Exp $ */
/* $NetBSD: nfs_vfsops.c,v 1.98 2000/12/10 19:36:32 chs Exp $ */
/*
* Copyright (c) 1989, 1993, 1995
@ -879,8 +879,9 @@ loop:
*/
if (vp->v_mount != mp)
goto loop;
if (VOP_ISLOCKED(vp) || vp->v_dirtyblkhd.lh_first == NULL ||
waitfor == MNT_LAZY)
if (waitfor == MNT_LAZY || VOP_ISLOCKED(vp) ||
(LIST_EMPTY(&vp->v_dirtyblkhd) &&
vp->v_uvm.u_obj.uo_npages == 0))
continue;
if (vget(vp, LK_EXCLUSIVE))
goto loop;

View File

@ -1,4 +1,4 @@
/* $NetBSD: ext2fs_vfsops.c,v 1.40 2000/11/27 08:39:53 chs Exp $ */
/* $NetBSD: ext2fs_vfsops.c,v 1.41 2000/12/10 19:36:32 chs Exp $ */
/*
* Copyright (c) 1997 Manuel Bouyer.
@ -778,10 +778,11 @@ loop:
simple_lock(&vp->v_interlock);
nvp = LIST_NEXT(vp, v_mntvnodes);
ip = VTOI(vp);
if (vp->v_type == VNON ||
if (waitfor == MNT_LAZY || vp->v_type == VNON ||
((ip->i_flag &
(IN_ACCESS | IN_CHANGE | IN_UPDATE | IN_MODIFIED | IN_ACCESSED)) == 0 &&
LIST_EMPTY(&vp->v_dirtyblkhd)))
LIST_EMPTY(&vp->v_dirtyblkhd) &&
vp->v_uvm.u_obj.uo_npages == 0))
{
simple_unlock(&vp->v_interlock);
continue;