The last argument to vm_object_page_clean() are now bit flags, rather than

the old true/false.

While here, have vfs_msync() only call vm_object_page_clean() with
OBJPC_SYNC if called with MNT_WAIT flags.  vfs_msync() is called at unmount
time (with MNT_WAIT) and from the syncer process (formerly update).
This should make dirty mmap writebacks a little less nasty.

I have tested this a little with SOFTUPDATES enabled, but I don't normally
use it since I've been badly burned too many times.
This commit is contained in:
Peter Wemm 1998-10-31 07:42:04 +00:00
parent 255e0e14be
commit b421db370b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=40777
4 changed files with 8 additions and 8 deletions

View file

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
* $Id: vfs_subr.c,v 1.170 1998/10/29 09:51:27 peter Exp $
* $Id: vfs_subr.c,v 1.171 1998/10/29 11:50:32 bde Exp $
*/
/*
@ -2467,7 +2467,7 @@ vfs_msync(struct mount *mp, int flags) {
if (!vget(vp,
LK_INTERLOCK | LK_EXCLUSIVE | LK_RETRY | LK_NOOBJ, curproc)) {
if (vp->v_object) {
vm_object_page_clean(vp->v_object, 0, 0, TRUE);
vm_object_page_clean(vp->v_object, 0, 0, flags == MNT_WAIT ? OBJPC_SYNC : 0);
anyio = 1;
}
vput(vp);

View file

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
* $Id: vfs_syscalls.c,v 1.106 1998/09/10 02:27:52 tegge Exp $
* $Id: vfs_syscalls.c,v 1.107 1998/09/24 15:02:46 luoqi Exp $
*/
/* For 4.3 integer FS ID compatibility */
@ -2410,7 +2410,7 @@ fsync(p, uap)
vp = (struct vnode *)fp->f_data;
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
if (vp->v_object)
vm_object_page_clean(vp->v_object, 0, 0, FALSE);
vm_object_page_clean(vp->v_object, 0, 0, 0);
if ((error = VOP_FSYNC(vp, fp->f_cred, MNT_WAIT, p)) == 0 &&
vp->v_mount && (vp->v_mount->mnt_flag & MNT_SOFTDEP) &&
bioops.io_fsync)

View file

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95
* $Id: vfs_subr.c,v 1.170 1998/10/29 09:51:27 peter Exp $
* $Id: vfs_subr.c,v 1.171 1998/10/29 11:50:32 bde Exp $
*/
/*
@ -2467,7 +2467,7 @@ vfs_msync(struct mount *mp, int flags) {
if (!vget(vp,
LK_INTERLOCK | LK_EXCLUSIVE | LK_RETRY | LK_NOOBJ, curproc)) {
if (vp->v_object) {
vm_object_page_clean(vp->v_object, 0, 0, TRUE);
vm_object_page_clean(vp->v_object, 0, 0, flags == MNT_WAIT ? OBJPC_SYNC : 0);
anyio = 1;
}
vput(vp);

View file

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94
* $Id: vfs_syscalls.c,v 1.106 1998/09/10 02:27:52 tegge Exp $
* $Id: vfs_syscalls.c,v 1.107 1998/09/24 15:02:46 luoqi Exp $
*/
/* For 4.3 integer FS ID compatibility */
@ -2410,7 +2410,7 @@ fsync(p, uap)
vp = (struct vnode *)fp->f_data;
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
if (vp->v_object)
vm_object_page_clean(vp->v_object, 0, 0, FALSE);
vm_object_page_clean(vp->v_object, 0, 0, 0);
if ((error = VOP_FSYNC(vp, fp->f_cred, MNT_WAIT, p)) == 0 &&
vp->v_mount && (vp->v_mount->mnt_flag & MNT_SOFTDEP) &&
bioops.io_fsync)