Messages in this thread | | | Date | Fri, 13 Nov 2009 19:09:54 -0800 (PST) | Subject | Re: [RFC PATCH] net: add dataref destructor to sk_buff | From | David Miller <> |
| |
From: Gregory Haskins <gregory.haskins@gmail.com> Date: Fri, 13 Nov 2009 21:27:57 -0500
> Clearly there must be _some_ mechanism to synchronize (e.g. > flush/barrier) though, right? Otherwise, that interface would seem to > be quite prone to races and would likely be unusable. So what does > said flush use to know when the buffer is free?
There is no such synchronization at all.
If some synchronization is required, it must be done at a higher level.
For example, SAMBA can only use sendfile() to serve file contents when the client holds an SMB "OP Lock" on the file. Luckily, by default pretty much all SMB client implementations hold the OP Lock on a file even just to read it (this is so that self-modifying autoexec.bat scripts work :-)
But frankly most sendfile() consumers don't care, and the only thing that really matters is that the checksum on the final TCP packet that goes out is correct, and since we require card checksums to sendfile() without copying, that is taken care of transparently.
| |