From owner-svn-src-stable@FreeBSD.ORG Sun Jul 11 09:37:35 2010 Return-Path: <owner-svn-src-stable@FreeBSD.ORG> Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2F7041065670; Sun, 11 Jul 2010 09:37:35 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1E40E8FC13; Sun, 11 Jul 2010 09:37:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6B9bZbF037721; Sun, 11 Jul 2010 09:37:35 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6B9bYAu037716; Sun, 11 Jul 2010 09:37:34 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201007110937.o6B9bYAu037716@svn.freebsd.org> From: Konstantin Belousov <kib@FreeBSD.org> Date: Sun, 11 Jul 2010 09:37:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209896 - stable/8/sys/vm X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree <svn-src-stable.freebsd.org> List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>, <mailto:svn-src-stable-request@freebsd.org?subject=unsubscribe> List-Archive: <http://lists.freebsd.org/pipermail/svn-src-stable> List-Post: <mailto:svn-src-stable@freebsd.org> List-Help: <mailto:svn-src-stable-request@freebsd.org?subject=help> List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-stable>, <mailto:svn-src-stable-request@freebsd.org?subject=subscribe> X-List-Received-Date: Sun, 11 Jul 2010 09:37:35 -0000 Author: kib Date: Sun Jul 11 09:37:34 2010 New Revision: 209896 URL: http://svn.freebsd.org/changeset/base/209896 Log: MFC r209685: Introduce a helper function vm_page_find_least(). Use it in several places, which inline the function. Modified: stable/8/sys/vm/vm_map.c stable/8/sys/vm/vm_object.c stable/8/sys/vm/vm_page.c stable/8/sys/vm/vm_page.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/vm/vm_map.c ============================================================================== --- stable/8/sys/vm/vm_map.c Sun Jul 11 08:43:30 2010 (r209895) +++ stable/8/sys/vm/vm_map.c Sun Jul 11 09:37:34 2010 (r209896) @@ -1740,13 +1740,7 @@ vm_map_pmap_enter(vm_map_t map, vm_offse start = 0; p_start = NULL; - if ((p = TAILQ_FIRST(&object->memq)) != NULL) { - if (p->pindex < pindex) { - p = vm_page_splay(pindex, object->root); - if ((object->root = p)->pindex < pindex) - p = TAILQ_NEXT(p, listq); - } - } + p = vm_page_find_least(object, pindex); /* * Assert: the variable p is either (1) the page with the * least pindex greater than or equal to the parameter pindex Modified: stable/8/sys/vm/vm_object.c ============================================================================== --- stable/8/sys/vm/vm_object.c Sun Jul 11 08:43:30 2010 (r209895) +++ stable/8/sys/vm/vm_object.c Sun Jul 11 09:37:34 2010 (r209896) @@ -1398,13 +1398,7 @@ vm_object_split(vm_map_entry_t entry) orig_object->charge -= ptoa(size); } retry: - if ((m = TAILQ_FIRST(&orig_object->memq)) != NULL) { - if (m->pindex < offidxstart) { - m = vm_page_splay(offidxstart, orig_object->root); - if ((orig_object->root = m)->pindex < offidxstart) - m = TAILQ_NEXT(m, listq); - } - } + m = vm_page_find_least(orig_object, offidxstart); vm_page_lock_queues(); for (; m != NULL && (idx = m->pindex - offidxstart) < size; m = m_next) { @@ -1909,13 +1903,7 @@ vm_object_page_remove(vm_object_t object vm_object_pip_add(object, 1); again: - if ((p = TAILQ_FIRST(&object->memq)) != NULL) { - if (p->pindex < start) { - p = vm_page_splay(start, object->root); - if ((object->root = p)->pindex < start) - p = TAILQ_NEXT(p, listq); - } - } + p = vm_page_find_least(object, start); vm_page_lock_queues(); /* * Assert: the variable p is either (1) the page with the Modified: stable/8/sys/vm/vm_page.c ============================================================================== --- stable/8/sys/vm/vm_page.c Sun Jul 11 08:43:30 2010 (r209895) +++ stable/8/sys/vm/vm_page.c Sun Jul 11 09:37:34 2010 (r209896) @@ -786,6 +786,31 @@ vm_page_lookup(vm_object_t object, vm_pi } /* + * vm_page_find_least: + * + * Returns the page associated with the object with least pindex + * greater than or equal to the parameter pindex, or NULL. + * + * The object must be locked. + * The routine may not block. + */ +vm_page_t +vm_page_find_least(vm_object_t object, vm_pindex_t pindex) +{ + vm_page_t m; + + VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); + if ((m = TAILQ_FIRST(&object->memq)) != NULL) { + if (m->pindex < pindex) { + m = vm_page_splay(pindex, object->root); + if ((object->root = m)->pindex < pindex) + m = TAILQ_NEXT(m, listq); + } + } + return (m); +} + +/* * vm_page_rename: * * Move the given memory entry from its Modified: stable/8/sys/vm/vm_page.h ============================================================================== --- stable/8/sys/vm/vm_page.h Sun Jul 11 08:43:30 2010 (r209895) +++ stable/8/sys/vm/vm_page.h Sun Jul 11 09:37:34 2010 (r209896) @@ -312,6 +312,7 @@ int vm_page_try_to_cache (vm_page_t); int vm_page_try_to_free (vm_page_t); void vm_page_dontneed(vm_page_t); void vm_page_deactivate (vm_page_t); +vm_page_t vm_page_find_least(vm_object_t, vm_pindex_t); void vm_page_insert (vm_page_t, vm_object_t, vm_pindex_t); vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t); void vm_page_remove (vm_page_t);