From owner-freebsd-hackers@FreeBSD.ORG Sun Nov 9 10:26:25 2003 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6267D16A4CE for ; Sun, 9 Nov 2003 10:26:25 -0800 (PST) Received: from mail.speakeasy.net (mail6.speakeasy.net [216.254.0.206]) by mx1.FreeBSD.org (Postfix) with ESMTP id 374A443FA3 for ; Sun, 9 Nov 2003 10:26:24 -0800 (PST) (envelope-from jmg@hydrogen.funkthat.com) Received: (qmail 14696 invoked from network); 9 Nov 2003 18:26:23 -0000 Received: from unknown (HELO hydrogen.funkthat.com) ([69.17.45.168]) (envelope-sender ) by mail6.speakeasy.net (qmail-ldap-1.03) with SMTP for ; 9 Nov 2003 18:26:23 -0000 Received: from hydrogen.funkthat.com (jqdovs@localhost.funkthat.com [127.0.0.1])hA9IQHgP052596; Sun, 9 Nov 2003 10:26:17 -0800 (PST) (envelope-from jmg@hydrogen.funkthat.com) Received: (from jmg@localhost) by hydrogen.funkthat.com (8.12.10/8.12.10/Submit) id hA9IQFmO052595; Sun, 9 Nov 2003 10:26:15 -0800 (PST) Date: Sun, 9 Nov 2003 10:26:14 -0800 From: John-Mark Gurney To: Igor Sysoev Message-ID: <20031109182614.GH558@funkthat.com> Mail-Followup-To: Igor Sysoev , Mike Silbersack , freebsd-hackers@freebsd.org, Vivek Pai , Alan Cox References: <20031109033026.GF558@funkthat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.1i X-Operating-System: FreeBSD 4.2-RELEASE i386 X-PGP-Fingerprint: B7 EC EF F8 AE ED A7 31 96 7A 22 B3 D8 56 36 F4 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html cc: freebsd-hackers@freebsd.org cc: Vivek Pai cc: Alan Cox Subject: Re: Update: Debox sendfile modifications X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: John-Mark Gurney List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Nov 2003 18:26:25 -0000 Igor Sysoev wrote this message on Sun, Nov 09, 2003 at 15:16 +0300: > On Sat, 8 Nov 2003, John-Mark Gurney wrote: > > > Igor Sysoev wrote this message on Wed, Nov 05, 2003 at 12:31 +0300: > > > I think it can done in the following way - a socket should have flag > > > that says that sendfile() had started the reading a page. > > > > layer violation... > > I do not think that it's layer violation. sendfile() works with > descriptor so it should know its state. It should know wheather > descriptor is non-blocking or has it enough buffer space. Ugh, yes, you are correct.. it is limited to sockets: if ((error = fgetsock(td, uap->s, &so, NULL)) != 0) goto done; if (so->so_type != SOCK_STREAM) { :( [...] > > If you made this a fd transparent operation then I would agree with > > it. > > The current sendfile() implementation works with sockets only. > Well, I agree that such sendfile() implementation is a hack. > Nowever this implementation is very usefull in the real world - > it allows to minimize a data copy in http and ftp servers. > > I just could not figure to myself where can be usefull the > high perfomance sendfile() to a pipe. It's not so much of how, but optimizing for the general case, not the specific case. I was using pipes as an example, what about for coping one fd to another? Right now cp will try to mmap a 16meg buffer, and use that, if it fails, it falls back to a read/write loop.. why not do something like copyfd that does it more optimally? > I think that it's better to leave sendfile() as a sending to a socket > only hack. I believe that any sendfile() generalization (e.g. sending > data from a socket to a file) is useless. oh? why do you think that is useless? What about all the applications like ftp clients, and wget/fetch/curl that do it on a regular basis? -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."