From owner-cvs-src-old@FreeBSD.ORG Sun Feb 8 20:23:49 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 89222106567A for ; Sun, 8 Feb 2009 20:23:49 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6A9738FC14 for ; Sun, 8 Feb 2009 20:23:49 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n18KNnQK022141 for ; Sun, 8 Feb 2009 20:23:49 GMT (envelope-from kib@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n18KNnoJ022140 for cvs-src-old@freebsd.org; Sun, 8 Feb 2009 20:23:49 GMT (envelope-from kib@repoman.freebsd.org) Message-Id: <200902082023.n18KNnoJ022140@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to kib@repoman.freebsd.org using -f From: Konstantin Belousov Date: Sun, 8 Feb 2009 20:23:46 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/vm vm_fault.c vnode_pager.c vnode_pager.h X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Feb 2009 20:23:55 -0000 kib 2009-02-08 20:23:46 UTC FreeBSD src repository Modified files: sys/vm vm_fault.c vnode_pager.c vnode_pager.h Log: SVN rev 188331 on 2009-02-08 20:23:46Z by kib 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 Revision Changes Path 1.243 +80 -43 src/sys/vm/vm_fault.c 1.247 +0 -53 src/sys/vm/vnode_pager.c 1.21 +0 -1 src/sys/vm/vnode_pager.h