From owner-cvs-src@FreeBSD.ORG Wed Aug 10 02:17:51 2005 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1FA2716A485; Wed, 10 Aug 2005 02:17:45 +0000 (GMT) (envelope-from tegge@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id AA2E0454DF; Wed, 10 Aug 2005 00:17:36 +0000 (GMT) (envelope-from tegge@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j7A0Haoa076906; Wed, 10 Aug 2005 00:17:36 GMT (envelope-from tegge@repoman.freebsd.org) Received: (from tegge@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j7A0HaZE076905; Wed, 10 Aug 2005 00:17:36 GMT (envelope-from tegge) Message-Id: <200508100017.j7A0HaZE076905@repoman.freebsd.org> From: Tor Egge Date: Wed, 10 Aug 2005 00:17:36 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/vm vm_object.c vm_pageout.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Aug 2005 02:17:51 -0000 tegge 2005-08-10 00:17:36 UTC FreeBSD src repository Modified files: sys/vm vm_object.c vm_pageout.c Log: Don't allow pagedaemon to skip pages while scanning PQ_ACTIVE or PQ_INACTIVE due to the vm object being locked. When a process writes large amounts of data to a file, the vm object associated with that file can contain most of the physical pages on the machine. If the process is preempted while holding the lock on the vm object, pagedaemon would be able to move very few pages from PQ_INACTIVE to PQ_CACHE or from PQ_ACTIVE to PQ_INACTIVE, resulting in unlimited cleaning of dirty pages belonging to other vm objects. Temporarily unlock the page queues lock while locking vm objects to avoid lock order violation. Detect and handle relevant page queue changes. This change depends on both the lock portion of struct vm_object and normal struct vm_page being type stable. Reviewed by: alc Revision Changes Path 1.350 +5 -0 src/sys/vm/vm_object.c 1.269 +70 -5 src/sys/vm/vm_pageout.c