summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2012-11-05 16:40:42 +0000
committerkib <kib@FreeBSD.org>2012-11-05 16:40:42 +0000
commit0e30ee6e51d14354615209958bb9ad07f1a90590 (patch)
tree17360d5ffd459f61caeea07269174db4b4439122 /sys/kern/vfs_subr.c
parent908519dd897b1c03e8c993dcc4ba46eb8b94d544 (diff)
downloadFreeBSD-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
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c3
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) {
OpenPOWER on IntegriCloud