From owner-svn-src-all@freebsd.org Fri Nov 29 19:49:21 2019 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 09AC51BA5F0; Fri, 29 Nov 2019 19:49:21 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47PlSw6SNfz4FqT; Fri, 29 Nov 2019 19:49:20 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C20A11B07A; Fri, 29 Nov 2019 19:49:20 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id xATJnKNu089690; Fri, 29 Nov 2019 19:49:20 GMT (envelope-from jeff@FreeBSD.org) Received: (from jeff@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id xATJnK5f089689; Fri, 29 Nov 2019 19:49:20 GMT (envelope-from jeff@FreeBSD.org) Message-Id: <201911291949.xATJnK5f089689@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jeff set sender to jeff@FreeBSD.org using -f From: Jeff Roberson Date: Fri, 29 Nov 2019 19:49:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r355216 - head/sys/vm X-SVN-Group: head X-SVN-Commit-Author: jeff X-SVN-Commit-Paths: head/sys/vm X-SVN-Commit-Revision: 355216 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Nov 2019 19:49:21 -0000 Author: jeff Date: Fri Nov 29 19:49:20 2019 New Revision: 355216 URL: https://svnweb.freebsd.org/changeset/base/355216 Log: Avoid acquiring the object lock if color is already set. It can not be unset until the object is recycled so this check is stable. Now that we can acquire the ref without a lock it is not necessary to group these operations and we can avoid it entirely in many cases. Reviewed by: kib, markj Differential Revision: https://reviews.freebsd.org/D22565 Modified: head/sys/vm/vm_mmap.c Modified: head/sys/vm/vm_mmap.c ============================================================================== --- head/sys/vm/vm_mmap.c Fri Nov 29 19:47:40 2019 (r355215) +++ head/sys/vm/vm_mmap.c Fri Nov 29 19:49:20 2019 (r355216) @@ -1325,12 +1325,14 @@ vm_mmap_vnode(struct thread *td, vm_size_t objsize, } else { KASSERT(obj->type == OBJT_DEFAULT || obj->type == OBJT_SWAP, ("wrong object type")); - VM_OBJECT_WLOCK(obj); - vm_object_reference_locked(obj); + vm_object_reference(obj); #if VM_NRESERVLEVEL > 0 - vm_object_color(obj, 0); + if ((obj->flags & OBJ_COLORED) == 0) { + VM_OBJECT_WLOCK(obj); + vm_object_color(obj, 0); + VM_OBJECT_WUNLOCK(obj); + } #endif - VM_OBJECT_WUNLOCK(obj); } *objp = obj; *flagsp = flags;