diff options
author | kib <kib@FreeBSD.org> | 2012-11-05 16:40:42 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2012-11-05 16:40:42 +0000 |
commit | 0e30ee6e51d14354615209958bb9ad07f1a90590 (patch) | |
tree | 17360d5ffd459f61caeea07269174db4b4439122 | |
parent | 908519dd897b1c03e8c993dcc4ba46eb8b94d544 (diff) | |
download | FreeBSD-src-0e30ee6e51d14354615209958bb9ad07f1a90590.zip FreeBSD-src-0e30ee6e51d14354615209958bb9ad07f1a90590.tar.gz |
A clarification to the behaviour of the active vnode list management
regarding the vnode page cleaning.
In collaboration with: pho
MFC after: 1 week
-rw-r--r-- | sys/kern/vfs_subr.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 26e4bf3..ac600de 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -2507,6 +2507,9 @@ vinactive(struct vnode *vp, struct thread *td) * Before moving off the active list, we must be sure that any * modified pages are on the vnode's dirty list since these will * no longer be checked once the vnode is on the inactive list. + * Because the vnode vm object keeps a hold reference on the vnode + * if there is at least one resident non-cached page, the vnode + * cannot leave the active list without the page cleanup done. */ obj = vp->v_object; if (obj != NULL && (obj->flags & OBJ_MIGHTBEDIRTY) != 0) { |