summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_default.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-11-06 05:33:02 +0000
committeralc <alc@FreeBSD.org>2004-11-06 05:33:02 +0000
commit4030274372d7f9f80cfaca348850163d9304a431 (patch)
treef75344d5038066255af0c0ea580ccb09e34bd84f /sys/kern/vfs_default.c
parent88e4a8c0bdafc82867314450455ec25c5ebd48db (diff)
downloadFreeBSD-src-4030274372d7f9f80cfaca348850163d9304a431.zip
FreeBSD-src-4030274372d7f9f80cfaca348850163d9304a431.tar.gz
Move a call to wakeup() from vm_object_terminate() to vnode_pager_dealloc()
because this call is only needed to wake threads that slept when they discovered a dead object connected to a vnode. To eliminate unnecessary calls to wakeup() by vnode_pager_dealloc(), introduce a new flag, OBJ_DISCONNECTWNT. Reviewed by: tegge@
Diffstat (limited to 'sys/kern/vfs_default.c')
-rw-r--r--sys/kern/vfs_default.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c
index a2d7a0d..99b6e4d 100644
--- a/sys/kern/vfs_default.c
+++ b/sys/kern/vfs_default.c
@@ -424,6 +424,7 @@ retry:
VM_OBJECT_LOCK(object);
if (object->flags & OBJ_DEAD) {
VOP_UNLOCK(vp, 0, td);
+ vm_object_set_flag(object, OBJ_DISCONNECTWNT);
msleep(object, VM_OBJECT_MTX(object), PDROP | PVM,
"vodead", 0);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
OpenPOWER on IntegriCloud