From owner-cvs-all@FreeBSD.ORG Mon Jan 22 14:59:26 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 2C7DC16A404 for ; Mon, 22 Jan 2007 14:59:26 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) by mx1.freebsd.org (Postfix) with ESMTP id 9556413C46A for ; Mon, 22 Jan 2007 14:59:25 +0000 (UTC) (envelope-from andre@freebsd.org) Received: (qmail 80843 invoked from network); 22 Jan 2007 14:39:14 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 22 Jan 2007 14:39:14 -0000 Message-ID: <45B4D14B.20102@freebsd.org> Date: Mon, 22 Jan 2007 15:59:23 +0100 From: Andre Oppermann User-Agent: Thunderbird 1.5.0.9 (Windows/20061207) MIME-Version: 1.0 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> <20070121203506.GA32483@nagual.pp.ru> In-Reply-To: <20070121203506.GA32483@nagual.pp.ru> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: 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: Mon, 22 Jan 2007 14:59:26 -0000 Andrey Chernov wrote: > 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? Just fixed. The regression test passes and I hope KDE too. -- Andre