On Jul 10, 2013, at 11:17 PM, Konstantin Belousov <kostik...@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.

Scott

_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to