On Mon, Sep 15, 2008 at 02:44:32PM +0800, Lin Mac wrote:
> 
> I think my question is not precise. And I'm not really familiar with linux 
> block and virtual file system subsystems, so please correct me if I'm wrong.

Neither am I :-).

> Reading from samba can achieve zero copy  with help of sendfile and 
> scather/gather support of NIC driver.
> 
> Writing to samba by going to user space and back again would cause 2 memory 
> copy (copy_to_user, copy_from_user).
> 
> Writing to samba with splice could avoid going to user space, so there is no 
> memory copy (copy_to_user, copy_from_user). But buffers received from network 
> driver (around 1.5kB each) are  sent to file system subsystem and below. Will 
> it be cached and gathered to become a continuous buffer (which cause 1 memory 
> copy), or does virtual file system subsystem and below could support 
> scatter/gather, so there will be no memory copy at all (zero copy) ?

This is a kernel implementation detail. Remember Samba
runs on many other kernels, not just Linux. Linux has
splice, *BSD has receivefile, Solaris probably has
something different.

The point is that Samba calls the kernel function at
the right point to *allow* zero-copy writes - it's up
to the specific kernel to ensure that happens (this
is a long-winded way of saying I'm not a kernel engineer,
sorry :-).

Jeremy.
-- 
To unsubscribe from this list go to the following URL and read the
instructions:  https://lists.samba.org/mailman/listinfo/samba

Reply via email to