Re: hacking - aio_sendfile()

From: Konstantin Belousov <kostikbel_at_gmail.com>
Date: Thu, 11 Jul 2013 21:48:35 +0300
On Thu, Jul 11, 2013 at 11:44:32AM -0700, Scott Long wrote:
> 
> On Jul 10, 2013, at 11:17 PM, Konstantin Belousov <kostikbel_at_gmail.com> wrote:
> 
> > On Wed, Jul 10, 2013 at 04:36:23PM -0700, Adrian Chadd wrote:
> >> Hiya,
> >> 
> >> I've started writing an aio_sendfile() syscall.
> >> 
> >> http://people.freebsd.org/~adrian/ath/20130710-aio-sendfile-3.diff
> >> 
> >> Yes, the diff is against -HEAD and not stable/9.
> >> 
> >> It's totally horrible, hackish and likely bad. I've only done some
> >> very, very basic testing to ensure it actually works; i haven't at all
> >> stress tested it out yet. It's also very naive - I'm not at all doing
> >> any checks to see whether I can short-cut to do the aio there and
> >> then; I'm always queuing the sendfile() op through the worker threads.
> >> That's likely stupid and inefficient in a lot of cases, but it at
> >> least gets the syscall up and working.
> > Yes, it is naive, but for different reason.
> > 
> > The kern_sendfile() is synchronous function, it only completes after
> > the other end of the network communication allows it. This means
> > that calling kern_sendfile() from the aio thread blocks the thread
> > indefinitely by unbounded sleep.
> 
> 
> No, kern_sendfile is async unless you specify the SF_SYNC hack flag.
> Otherwise, it'll fill the socket buffer and then return immediately, unless
> the socket buffer is full and the socket is set to blocking mode.  That's
> outside the scope, as I said in my previous email.

You do not understand what I said, please re-read both my mail and code
before replying.  Implementing aio_sendfile() as proposed would create
yet another possibility of indefinitely block all processes using aio.

Received on Thu Jul 11 2013 - 16:48:40 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:39 UTC