aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vnode_pager.h
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2009-02-08 20:23:46 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2009-02-08 20:23:46 +0000
commitd2bf64c3092cd55b27ef9bfd22f4e52337466c85 (patch)
tree68ebea214520a9cb20262023e74434b226712dbe /sys/vm/vnode_pager.h
parent0dd9f21c2363c857b842a416d0ab7c6bc7bdc046 (diff)
downloadsrc-d2bf64c3092cd55b27ef9bfd22f4e52337466c85.tar.gz
src-d2bf64c3092cd55b27ef9bfd22f4e52337466c85.zip
Do not sleep for vnode lock while holding map lock in vm_fault. Try to
acquire vnode lock for OBJT_VNODE object after map lock is dropped. Because we have the busy page(s) in the object, sleeping there would result in deadlock with vnode resize. Try to get lock without sleeping, and, if the attempt failed, drop the state, lock the vnode, and restart the fault handler from the start with already locked vnode. Because the vnode_pager_lock() function is inlined in vm_fault(), axe it. Based on suggestion by: alc Reviewed by: tegge, alc Tested by: pho
Notes
Notes: svn path=/head/; revision=188331
Diffstat (limited to 'sys/vm/vnode_pager.h')
-rw-r--r--sys/vm/vnode_pager.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/sys/vm/vnode_pager.h b/sys/vm/vnode_pager.h
index aa9be03c17ba..88ae306b3fbd 100644
--- a/sys/vm/vnode_pager.h
+++ b/sys/vm/vnode_pager.h
@@ -39,7 +39,6 @@
#define _VNODE_PAGER_ 1
#ifdef _KERNEL
-struct vnode *vnode_pager_lock(vm_object_t);
/*
* XXX Generic routines; currently called by badly written FS code; these