From owner-freebsd-bugs@FreeBSD.ORG Sun Sep 18 09:30:06 2005 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8146C16A41F for ; Sun, 18 Sep 2005 09:30:06 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id E77A843D46 for ; Sun, 18 Sep 2005 09:30:05 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j8I9U5rr026387 for ; Sun, 18 Sep 2005 09:30:05 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j8I9U5e3026386; Sun, 18 Sep 2005 09:30:05 GMT (envelope-from gnats) Resent-Date: Sun, 18 Sep 2005 09:30:05 GMT Resent-Message-Id: <200509180930.j8I9U5e3026386@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Divacky Roman Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8B9D216A41F for ; Sun, 18 Sep 2005 09:21:40 +0000 (GMT) (envelope-from xdivac02@stud.fit.vutbr.cz) Received: from eva.fit.vutbr.cz (eva.fit.vutbr.cz [147.229.10.14]) by mx1.FreeBSD.org (Postfix) with ESMTP id D4C2F43D45 for ; Sun, 18 Sep 2005 09:21:39 +0000 (GMT) (envelope-from xdivac02@stud.fit.vutbr.cz) Received: from eva.fit.vutbr.cz (localhost [127.0.0.1]) by eva.fit.vutbr.cz (envelope-from xdivac02@eva.fit.vutbr.cz) (8.13.4/8.13.3) with ESMTP id j8I9LZxq090906 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Sun, 18 Sep 2005 11:21:35 +0200 (CEST) Received: (from xdivac02@localhost) by eva.fit.vutbr.cz (8.13.4/8.13.3/Submit) id j8I9LZZd090905; Sun, 18 Sep 2005 11:21:35 +0200 (CEST) Message-Id: <200509180921.j8I9LZZd090905@eva.fit.vutbr.cz> Date: Sun, 18 Sep 2005 11:21:35 +0200 (CEST) From: Divacky Roman To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: kern/86290: minor optimizations + cleanup to vrele usage + stuff X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Divacky Roman List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Sep 2005 09:30:06 -0000 >Number: 86290 >Category: kern >Synopsis: minor optimizations + cleanup to vrele usage + stuff >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Sun Sep 18 09:30:05 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Divacky Roman >Release: FreeBSD 7.0-CURRENT i386 >Organization: home >Environment: FreeBSD witten 7.0-CURRENT FreeBSD 7.0-CURRENT #93: Sat Sep 17 14:02:36 CEST 2005 root@witten:/usr/obj/usr/src/sys/NEOLOGISM i386 >Description: this patch removes some Giant locking which I believe is unecessary. it also cleans up one nasty naming bug. >How-To-Repeat: apply the patch >Fix: ? cscope.out Index: kern_exit.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_exit.c,v retrieving revision 1.265 diff -u -r1.265 kern_exit.c --- kern_exit.c 2 Sep 2005 20:20:01 -0000 1.265 +++ kern_exit.c 17 Sep 2005 12:00:46 -0000 @@ -227,7 +227,6 @@ * Reset any sigio structures pointing to us as a result of * F_SETOWN with our pid. */ - mtx_lock(&Giant); /* XXX: not sure if needed */ funsetownlst(&p->p_sigiolst); /* @@ -235,7 +234,6 @@ * This may block! */ fdfree(td); - mtx_unlock(&Giant); /* * If this thread tickled GEOM, we need to wait for the giggling to @@ -360,11 +358,8 @@ p->p_tracecred = NULL; mtx_unlock(&ktrace_mtx); PROC_UNLOCK(p); - if (tracevp != NULL) { - mtx_lock(&Giant); + if (tracevp != NULL) vrele(tracevp); - mtx_unlock(&Giant); - } if (tracecred != NULL) crfree(tracecred); #endif @@ -373,9 +368,7 @@ */ if ((vtmp = p->p_textvp) != NULL) { p->p_textvp = NULL; - mtx_lock(&Giant); vrele(vtmp); - mtx_unlock(&Giant); } /* @@ -452,7 +445,7 @@ mtx_unlock(&p->p_pptr->p_sigacts->ps_mtx); pp = p->p_pptr; - PROC_UNLOCK(pp); + PROC_UNLOCK(p->p_pptr); proc_reparent(p, initproc); p->p_sigparent = SIGCHLD; PROC_LOCK(p->p_pptr); Index: kern_jail.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_jail.c,v retrieving revision 1.50 diff -u -r1.50 kern_jail.c --- kern_jail.c 23 Jun 2005 22:13:28 -0000 1.50 +++ kern_jail.c 17 Sep 2005 12:00:46 -0000 @@ -174,9 +174,7 @@ prisoncount--; mtx_unlock(&allprison_mtx); e_dropvnref: - mtx_lock(&Giant); vrele(pr->pr_root); - mtx_unlock(&Giant); e_killmtx: mtx_destroy(&pr->pr_mtx); FREE(pr, M_PRISON); @@ -298,9 +296,7 @@ pr = (struct prison *)context; - mtx_lock(&Giant); vrele(pr->pr_root); - mtx_unlock(&Giant); mtx_destroy(&pr->pr_mtx); if (pr->pr_linux != NULL) Index: kern_ktrace.c =================================================================== RCS file: /home/ncvs/src/sys/kern/kern_ktrace.c,v retrieving revision 1.101 diff -u -r1.101 kern_ktrace.c --- kern_ktrace.c 24 Jun 2005 12:05:24 -0000 1.101 +++ kern_ktrace.c 17 Sep 2005 12:00:46 -0000 @@ -267,11 +267,8 @@ { crfree(req->ktr_cred); - if (req->ktr_vp != NULL) { - mtx_lock(&Giant); + if (req->ktr_vp != NULL) vrele(req->ktr_vp); - mtx_unlock(&Giant); - } if (req->ktr_header.ktr_buffer != NULL) free(req->ktr_header.ktr_buffer, M_KTRACE); mtx_lock(&ktrace_mtx); @@ -739,11 +736,8 @@ } mtx_unlock(&ktrace_mtx); PROC_UNLOCK(p); - if (tracevp != NULL) { - mtx_lock(&Giant); + if (tracevp != NULL) vrele(tracevp); - mtx_unlock(&Giant); - } if (tracecred != NULL) crfree(tracecred); @@ -893,10 +887,8 @@ } } mtx_unlock(&ktrace_mtx); - mtx_lock(&Giant); while (vrele_count-- > 0) vrele(vp); - mtx_unlock(&Giant); } /* Index: uipc_usrreq.c =================================================================== RCS file: /home/ncvs/src/sys/kern/uipc_usrreq.c,v retrieving revision 1.155 diff -u -r1.155 uipc_usrreq.c --- uipc_usrreq.c 7 May 2005 00:41:35 -0000 1.155 +++ uipc_usrreq.c 17 Sep 2005 12:00:46 -0000 @@ -809,11 +809,8 @@ if (unp->unp_addr != NULL) FREE(unp->unp_addr, M_SONAME); uma_zfree(unp_zone, unp); - if (vp) { - mtx_lock(&Giant); + if (vp) vrele(vp); - mtx_unlock(&Giant); - } } static int Index: vfs_lookup.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_lookup.c,v retrieving revision 1.82 diff -u -r1.82 vfs_lookup.c --- vfs_lookup.c 15 Sep 2005 15:03:48 -0000 1.82 +++ vfs_lookup.c 17 Sep 2005 12:00:47 -0000 @@ -940,6 +940,7 @@ char *ptr, *buf, *cp; size_t len, sz; int error; + int vfslocked; buf = (char *) malloc(MAXPATHLEN, M_TEMP, M_WAITOK); *pathbuf = buf; @@ -972,8 +973,7 @@ goto keeporig; } - /* XXX: VFS_LOCK_GIANT? */ - mtx_lock(&Giant); + vfslocked = VFS_LOCK_GIANT((struct mount *)NULL); /* * We know that there is a / somewhere in this pathname. @@ -1024,8 +1024,7 @@ vrele(nd.ni_vp); nd_failed: - /* XXX: VFS_UNLOCK_GIANT? */ - mtx_unlock(&Giant); + VFS_UNLOCK_GIANT(vfslocked); keeporig: /* If there was an error, use the original path name. */ >Release-Note: >Audit-Trail: >Unformatted: