Hi, I am trying to beat the I/O bottleneck so as to speed up bulk data transfers in high speed network. It seems that the system call sendfile() can help to reduce CPU utilization and speedup data transfers. But I have one question about the system call, First, Linux sendfile requires that the input file descriptor cannot be a network socket. What are the reasons for such a restriction? Sending a socket to a file via zero copy is definitely useful. Actually this is one approach I am trying to do to improve performance. Some discussions on Linux zero copy said this is because it is harder. Sending a socket to a file via zero copy needs the support of NICs. I cannot understand this explanation. It seems that FreeBSD has implemented bidirectional zero copy(http://people.freebsd.org/~ken/zero_copy/#Download). So why Linux does not support it? What shall I do to release the restriction that Linux enforces on sendfile? Any hints will be highly appreciated. Thanks. Xiuduan Fang