From owner-svn-src-head@freebsd.org Fri Apr 1 17:17:33 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 714B2AEB83B; Fri, 1 Apr 2016 17:17:33 +0000 (UTC) (envelope-from trasz@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 mx1.freebsd.org (Postfix) with ESMTPS id 2B5B911C7; Fri, 1 Apr 2016 17:17:33 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u31HHWiM028762; Fri, 1 Apr 2016 17:17:32 GMT (envelope-from trasz@FreeBSD.org) Received: (from trasz@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u31HHWpD028761; Fri, 1 Apr 2016 17:17:32 GMT (envelope-from trasz@FreeBSD.org) Message-Id: <201604011717.u31HHWpD028761@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: trasz set sender to trasz@FreeBSD.org using -f From: Edward Tomasz Napierala Date: Fri, 1 Apr 2016 17:17:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r297490 - head/sys/kern 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.21 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: Fri, 01 Apr 2016 17:17:33 -0000 Author: trasz Date: Fri Apr 1 17:17:32 2016 New Revision: 297490 URL: https://svnweb.freebsd.org/changeset/base/297490 Log: Reduce code duplication. MFC after: 1 month Sponsored by: The FreeBSD Foundation Modified: head/sys/kern/kern_racct.c Modified: head/sys/kern/kern_racct.c ============================================================================== --- head/sys/kern/kern_racct.c Fri Apr 1 17:05:46 2016 (r297489) +++ head/sys/kern/kern_racct.c Fri Apr 1 17:17:32 2016 (r297490) @@ -534,7 +534,7 @@ racct_adjust_resource(struct racct *racc } static int -racct_add_locked(struct proc *p, int resource, uint64_t amount) +racct_add_locked(struct proc *p, int resource, uint64_t amount, int force) { #ifdef RCTL int error; @@ -542,18 +542,18 @@ racct_add_locked(struct proc *p, int res ASSERT_RACCT_ENABLED(); - SDT_PROBE3(racct, , rusage, add, p, resource, amount); - /* * We need proc lock to dereference p->p_ucred. */ PROC_LOCK_ASSERT(p, MA_OWNED); #ifdef RCTL - error = rctl_enforce(p, resource, amount); - if (error && RACCT_IS_DENIABLE(resource)) { - SDT_PROBE3(racct, , rusage, add__failure, p, resource, amount); - return (error); + if (!force) { + error = rctl_enforce(p, resource, amount); + if (error && RACCT_IS_DENIABLE(resource)) { + SDT_PROBE3(racct, , rusage, add__failure, p, resource, amount); + return (error); + } } #endif racct_adjust_resource(p->p_racct, resource, amount); @@ -574,8 +574,10 @@ racct_add(struct proc *p, int resource, if (!racct_enable) return (0); + SDT_PROBE3(racct, , rusage, add, p, resource, amount); + mtx_lock(&racct_lock); - error = racct_add_locked(p, resource, amount); + error = racct_add_locked(p, resource, amount, 0); mtx_unlock(&racct_lock); return (error); } @@ -625,14 +627,8 @@ racct_add_force(struct proc *p, int reso SDT_PROBE3(racct, , rusage, add__force, p, resource, amount); - /* - * We need proc lock to dereference p->p_ucred. - */ - PROC_LOCK_ASSERT(p, MA_OWNED); - mtx_lock(&racct_lock); - racct_adjust_resource(p->p_racct, resource, amount); - racct_add_cred_locked(p->p_ucred, resource, amount); + racct_add_locked(p, resource, amount, 1); mtx_unlock(&racct_lock); } @@ -898,8 +894,8 @@ racct_proc_fork(struct proc *parent, str goto out; } - error = racct_add_locked(child, RACCT_NPROC, 1); - error += racct_add_locked(child, RACCT_NTHR, 1); + error = racct_add_locked(child, RACCT_NPROC, 1, 0); + error += racct_add_locked(child, RACCT_NTHR, 1, 0); out: mtx_unlock(&racct_lock);