From owner-cvs-all@FreeBSD.ORG Sun Jan 21 20:35:08 2007 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D588316A400 for ; Sun, 21 Jan 2007 20:35:08 +0000 (UTC) (envelope-from ache@nagual.pp.ru) Received: from nagual.pp.ru (nagual.pp.ru [194.87.13.69]) by mx1.freebsd.org (Postfix) with ESMTP id 2E96D13C45E for ; Sun, 21 Jan 2007 20:35:07 +0000 (UTC) (envelope-from ache@nagual.pp.ru) Received: from nagual.pp.ru (ache@localhost [127.0.0.1]) by nagual.pp.ru (8.13.8/8.13.8) with ESMTP id l0LKZ61f032615; Sun, 21 Jan 2007 23:35:06 +0300 (MSK) (envelope-from ache@nagual.pp.ru) Received: (from ache@localhost) by nagual.pp.ru (8.13.8/8.13.8/Submit) id l0LKZ6f9032614; Sun, 21 Jan 2007 23:35:06 +0300 (MSK) (envelope-from ache) Date: Sun, 21 Jan 2007 23:35:06 +0300 From: Andrey Chernov To: John Baldwin Message-ID: <20070121203506.GA32483@nagual.pp.ru> Mail-Followup-To: Andrey Chernov , John Baldwin , Andre Oppermann , src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org References: <200611021745.kA2HjSZC018731@repoman.freebsd.org> <200701121206.47308.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200701121206.47308.jhb@freebsd.org> User-Agent: Mutt/1.5.13 (2006-08-11) Cc: cvs-src@FreeBSD.org, src-committers@FreeBSD.org, Andre Oppermann , cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern uipc_socket.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 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: Sun, 21 Jan 2007 20:35:08 -0000 On Fri, Jan 12, 2007 at 12:06:46PM -0500, John Baldwin wrote: > On Thursday 02 November 2006 12:45, Andre Oppermann wrote: > > andre 2006-11-02 17:45:28 UTC > > > > FreeBSD src repository > > > > Modified files: > > sys/kern uipc_socket.c > > Log: > > Use the improved m_uiotombuf() function instead of home grown sosend_copyin() > > to do the userland to kernel copying in sosend_generic() and sosend_dgram(). > > > > sosend_copyin() is retained for ZERO_COPY_SOCKETS which are not yet supported > > by m_uiotombuf(). > > > > Benchmaring shows significant improvements (95% confidence): > > 66% less cpu (or 2.9 times better) with new sosend vs. old sosend (non-TSO) > > 65% less cpu (or 2.8 times better) with new sosend vs. old sosend (TSO) > > > > (Sender AMD Opteron 852 (2.6GHz) with em(4) PCI-X-133 interface and receiver > > DELL Poweredge SC1425 P-IV Xeon 3.2GHz with em(4) LOM connected back to back > > at 1000Base-TX full duplex.) > > > > Sponsored by: TCP/IP Optimization Fundraise 2005 > > MFC after: 3 month > > This breaks writes of 0 bytes (e.g. write(s, NULL, 0)) to sockets because > m_getm2(NULL, 0, ...) returns NULL and thus m_uiotombuf() returns NULL and > sosend_*() now return EFAULT. sosend_copyin() correctly handles this case > since it always allocates at least one mbuf. I'm not sure if m_uiotombuf() > is at fault or if something else is, so I'll let you fix it. This explains > the recent breakage of kcheckpass (KDE screen saver password checker) on > current, and possibly other things as well. > > Also, you've introduced another regression in that if the m_get2m() fails it > should be returning ENOBUFS and not EFAULT to userland. The comments in > sosend_*() about 'EFAULT being the only possible error' are obviously > wrong. :) Is there any progress in fixing this bug?