svn commit: r353468 - head/sys/kern

Mateusz Guzik mjg at FreeBSD.org
Sun Oct 13 15:39:11 UTC 2019


Author: mjg
Date: Sun Oct 13 15:39:11 2019
New Revision: 353468
URL: https://svnweb.freebsd.org/changeset/base/353468

Log:
  vfs: return free vnode batches in sync instead of vfs_msync
  
  It is a more natural fit. vfs_msync only deals with active vnodes.
  
  Reviewed by:	kib
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D22008

Modified:
  head/sys/kern/vfs_subr.c

Modified: head/sys/kern/vfs_subr.c
==============================================================================
--- head/sys/kern/vfs_subr.c	Sun Oct 13 15:15:09 2019	(r353467)
+++ head/sys/kern/vfs_subr.c	Sun Oct 13 15:39:11 2019	(r353468)
@@ -4395,8 +4395,6 @@ vfs_msync(struct mount *mp, int flags)
 
 	CTR2(KTR_VFS, "%s: mp %p", __func__, mp);
 
-	vnlru_return_batch(mp);
-
 	MNT_VNODE_FOREACH_ACTIVE(vp, mp, mvp) {
 		obj = vp->v_object;
 		if (obj != NULL && (obj->flags & OBJ_MIGHTBEDIRTY) != 0 &&
@@ -4628,6 +4626,11 @@ sync_fsync(struct vop_fsync_args *ap)
 		return (0);
 	}
 	save = curthread_pflags_set(TDP_SYNCIO);
+	/*
+	 * The filesystem at hand may be idle with free vnodes stored in the
+	 * batch.  Return them instead of letting them stay there indefinitely.
+	 */
+	vnlru_return_batch(mp);
 	vfs_msync(mp, MNT_NOWAIT);
 	error = VFS_SYNC(mp, MNT_LAZY);
 	curthread_pflags_restore(save);


More information about the svn-src-all mailing list