From owner-cvs-all@FreeBSD.ORG Sat Nov 20 02:09:49 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1903B16A4CE; Sat, 20 Nov 2004 02:09:49 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 05E9443D39; Sat, 20 Nov 2004 02:09:49 +0000 (GMT) (envelope-from rwatson@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK29maM098870; Sat, 20 Nov 2004 02:09:48 GMT (envelope-from rwatson@repoman.freebsd.org) Received: (from rwatson@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK29moH098869; Sat, 20 Nov 2004 02:09:48 GMT (envelope-from rwatson) Message-Id: <200411200209.iAK29moH098869@repoman.freebsd.org> From: Robert Watson Date: Sat, 20 Nov 2004 02:09:48 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: RELENG_5 Subject: cvs commit: src/sys/kern uipc_syscalls.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:09:49 -0000 rwatson 2004-11-20 02:09:48 UTC FreeBSD src repository Modified files: (Branch: RELENG_5) sys/kern uipc_syscalls.c Log: Merge uipc_syscalls:1.204 from HEAD to RELENG_5: date: 2004/10/24 23:45:01; author: rwatson; state: Exp; lines: +87 -23 Move from using the socket reference count to the file reference count to prevent sockets from being garbage collected during socket-specific system calls. This is the same approach used in most VFS-specific system calls, as well as generic file descriptor system calls such as read() and write(). To do this, add a utility function getsock(), which is logically identical to getvnode() used for the same purpose in VFS. Unlike fgetsock(), it returns with the file reference count elevated, but no bump of the socket reference count. Replace matching calls to fputsock() with fdrop(). This change is made to all socket system calls other than sendfile() and accept(), but the approach should be applicable to those system calls also. This shaves about four mutex operations off of each of these system calls, including send() and recv() variants, adding about 1% to pps on minimal UDP packets for UP using netblast, and 4% on SMP. Reviewed by: pjd Revision Changes Path 1.200.2.2 +87 -23 src/sys/kern/uipc_syscalls.c