From owner-svn-src-head@FreeBSD.ORG Sat Apr 6 06:02:56 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 2FA0DD9F; Sat, 6 Apr 2013 06:02:56 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 0857C15E; Sat, 6 Apr 2013 06:02:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r3662tDf031186; Sat, 6 Apr 2013 06:02:55 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r3662tQk031185; Sat, 6 Apr 2013 06:02:55 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201304060602.r3662tQk031185@svn.freebsd.org> From: Alan Cox Date: Sat, 6 Apr 2013 06:02:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r249182 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Apr 2013 06:02:56 -0000 Author: alc Date: Sat Apr 6 06:02:55 2013 New Revision: 249182 URL: http://svnweb.freebsd.org/changeset/base/249182 Log: Simplify vm_radix_insert(). Reviewed by: attilio Tested by: pho Sponsored by: EMC / Isilon Storage Division Modified: head/sys/vm/vm_radix.c Modified: head/sys/vm/vm_radix.c ============================================================================== --- head/sys/vm/vm_radix.c Sat Apr 6 03:31:28 2013 (r249181) +++ head/sys/vm/vm_radix.c Sat Apr 6 06:02:55 2013 (r249182) @@ -406,7 +406,7 @@ void vm_radix_insert(struct vm_radix *rtree, vm_page_t page) { vm_pindex_t index, newind; - struct vm_radix_node *rnode, *tmp, *tmp2; + struct vm_radix_node *parent, *rnode, *tmp; vm_page_t m; int slot; uint16_t clev; @@ -444,44 +444,23 @@ vm_radix_insert(struct vm_radix *rtree, vm_radix_addpage(rnode, index, rnode->rn_clev, page); return; } + parent = rnode; rnode = rnode->rn_child[slot]; } while (!vm_radix_keybarr(rnode, index)); /* - * Scan the trie from the top and find the parent to insert - * the new object. - */ - newind = rnode->rn_owner; - clev = vm_radix_keydiff(newind, index); - slot = VM_RADIX_COUNT; - for (rnode = vm_radix_getroot(rtree); ; rnode = tmp) { - KASSERT(rnode != NULL, ("%s: edge cannot be NULL in the scan", - __func__)); - KASSERT(clev >= rnode->rn_clev, - ("%s: unexpected trie depth: clev: %d, rnode->rn_clev: %d", - __func__, clev, rnode->rn_clev)); - slot = vm_radix_slot(index, rnode->rn_clev); - tmp = rnode->rn_child[slot]; - KASSERT(tmp != NULL && !vm_radix_isleaf(tmp), - ("%s: unexpected lookup interruption", __func__)); - if (tmp->rn_clev > clev) - break; - } - KASSERT(rnode != NULL && tmp != NULL && slot < VM_RADIX_COUNT, - ("%s: invalid scan parameters rnode: %p, tmp: %p, slot: %d", - __func__, (void *)rnode, (void *)tmp, slot)); - - /* * A new node is needed because the right insertion level is reached. * Setup the new intermediate node and add the 2 children: the * new object and the older edge. */ - tmp2 = vm_radix_node_get(vm_radix_trimkey(index, clev - 1), 2, + newind = rnode->rn_owner; + clev = vm_radix_keydiff(newind, index); + tmp = vm_radix_node_get(vm_radix_trimkey(index, clev - 1), 2, clev); - rnode->rn_child[slot] = tmp2; - vm_radix_addpage(tmp2, index, clev, page); + parent->rn_child[slot] = tmp; + vm_radix_addpage(tmp, index, clev, page); slot = vm_radix_slot(newind, clev); - tmp2->rn_child[slot] = tmp; + tmp->rn_child[slot] = rnode; } /*