Volker.Lendecke at SerNet.DE
Thu Jan 7 14:23:04 MST 2010
On Thu, Jan 07, 2010 at 04:05:35PM -0500, Learner Study wrote:
> 1. sendfile() takes a input-fd and out-fd so why can't that be used
> for WRITE operation (i.e. reading from socket fd on network side and
> writing to file fd towards the disk).
The manpage for sendfile that I right now have at hand says:
Presently (Linux 2.6.9): in_fd, must correspond to a file which sup-
ports mmap(2)-like operations (i.e., it cannot be a socket); and out_fd
must refer to a socket.
If you have any pointers that this has changed in recent
versions of Linux or any other Unix, please give me a
pointer to it!
> 2. Without sendfile() (in WRITE operation), data is read from socket
> in user space before being written back to the disk (kernel space).
> So, there are two copies (one during socket read and second during
> disk write).
> Is that correct understanding?
Yes. This is exactly what we have tried to tune away by
using splice, but as Samba so far is a single-threaded
daemon, this very quickly leads to a deadlock.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: not available
More information about the samba-technical