From owner-svn-src-user@FreeBSD.ORG  Tue Mar 12 06:14:32 2013
Return-Path: <owner-svn-src-user@FreeBSD.ORG>
Delivered-To: svn-src-user@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org
 [IPv6:2001:1900:2254:206a::19:1])
 by hub.freebsd.org (Postfix) with ESMTP id C37D8AB7;
 Tue, 12 Mar 2013 06:14:32 +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 AC6D3A08;
 Tue, 12 Mar 2013 06:14:32 +0000 (UTC)
Received: from svn.freebsd.org ([127.0.1.70])
 by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r2C6EWH9058966;
 Tue, 12 Mar 2013 06:14:32 GMT (envelope-from alc@svn.freebsd.org)
Received: (from alc@localhost)
 by svn.freebsd.org (8.14.6/8.14.5/Submit) id r2C6EWve058965;
 Tue, 12 Mar 2013 06:14:32 GMT (envelope-from alc@svn.freebsd.org)
Message-Id: <201303120614.r2C6EWve058965@svn.freebsd.org>
From: Alan Cox <alc@FreeBSD.org>
Date: Tue, 12 Mar 2013 06:14:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r248185 - user/attilio/vmcontention/sys/vm
X-SVN-Group: user
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 12 Mar 2013 06:14:32 -0000

Author: alc
Date: Tue Mar 12 06:14:31 2013
New Revision: 248185
URL: http://svnweb.freebsd.org/changeset/base/248185

Log:
  When transferring the page from one object to another, don't insert the
  page into its new object until the page's pindex has been updated.
  Otherwise, one code path within vm_radix_insert() may use the wrong
  pindex value.
  
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  user/attilio/vmcontention/sys/vm/vm_page.c

Modified: user/attilio/vmcontention/sys/vm/vm_page.c
==============================================================================
--- user/attilio/vmcontention/sys/vm/vm_page.c	Tue Mar 12 04:37:04 2013	(r248184)
+++ user/attilio/vmcontention/sys/vm/vm_page.c	Tue Mar 12 06:14:31 2013	(r248185)
@@ -1110,10 +1110,10 @@ vm_page_cache_transfer(vm_object_t orig_
 		if ((m->pindex - offidxstart) >= new_object->size)
 			break;
 		vm_radix_remove(&orig_object->cache, m->pindex);
-		vm_radix_insert(&new_object->cache, m->pindex - offidxstart, m);
 		/* Update the page's object and offset. */
 		m->object = new_object;
 		m->pindex -= offidxstart;
+		vm_radix_insert(&new_object->cache, m->pindex, m);
 	}
 	mtx_unlock(&vm_page_queue_free_mtx);
 }