svn commit: r323768 - in head/sys: kern vm
Konstantin Belousov
kib at FreeBSD.org
Tue Sep 19 16:46:38 UTC 2017
Author: kib
Date: Tue Sep 19 16:46:37 2017
New Revision: 323768
URL: https://svnweb.freebsd.org/changeset/base/323768
Log:
For unlinked files, do not msync(2) or sync on the vnode deactivation.
One consequence of the patch is that msyncing unlinked file mappings
no longer reduces the amount of the dirty memory in the system, but I
do not think that there are users of msync(2) that utilize it for such
side-effect.
Reported and tested by: tjil
PR: 222356
Reviewed by: alc
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Differential revision: https://reviews.freebsd.org/D12411
Modified:
head/sys/kern/vfs_subr.c
head/sys/vm/vm_object.c
Modified: head/sys/kern/vfs_subr.c
==============================================================================
--- head/sys/kern/vfs_subr.c Tue Sep 19 16:38:54 2017 (r323767)
+++ head/sys/kern/vfs_subr.c Tue Sep 19 16:46:37 2017 (r323768)
@@ -3054,8 +3054,8 @@ vinactive(struct vnode *vp, struct thread *td)
* point that VOP_INACTIVE() is called, there could still be
* pending I/O and dirty pages in the object.
*/
- obj = vp->v_object;
- if (obj != NULL && (obj->flags & OBJ_MIGHTBEDIRTY) != 0) {
+ if ((obj = vp->v_object) != NULL && (vp->v_vflag & VV_NOSYNC) == 0 &&
+ (obj->flags & OBJ_MIGHTBEDIRTY) != 0) {
VM_OBJECT_WLOCK(obj);
vm_object_page_clean(obj, 0, 0, 0);
VM_OBJECT_WUNLOCK(obj);
Modified: head/sys/vm/vm_object.c
==============================================================================
--- head/sys/vm/vm_object.c Tue Sep 19 16:38:54 2017 (r323767)
+++ head/sys/vm/vm_object.c Tue Sep 19 16:46:37 2017 (r323768)
@@ -1083,8 +1083,8 @@ vm_object_sync(vm_object_t object, vm_ooffset_t offset
* I/O.
*/
if (object->type == OBJT_VNODE &&
- (object->flags & OBJ_MIGHTBEDIRTY) != 0) {
- vp = object->handle;
+ (object->flags & OBJ_MIGHTBEDIRTY) != 0 &&
+ ((vp = object->handle)->v_vflag & VV_NOSYNC) == 0) {
VM_OBJECT_WUNLOCK(object);
(void) vn_start_write(vp, &mp, V_WAIT);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
More information about the svn-src-all
mailing list