On 09/28/2010 06:26 PM, Samuel Kidman wrote:
On Tue, Sep 28, 2010 at 10:07 PM, Simon Andrews
<simon.andrews(a)bbsrc.ac.uk <mailto:simon.andrews@bbsrc.ac.uk>> wrote:
I have a fedora 13 box on which I have a remote mounted nfs share
over a
fairly slow (10Mb/s) link. I'm then transferring data onto this share
from a different machine using scp.
The problem is that after scp reports that it's 100% complete the
program will hang for ~20 mins before it will move on to another file.
At this point it can't be killed.
It looks like the nfs daemon is caching write data (around 2GB of it)
which lets scp think its finished when actually there's loads of data
sitting in a write buffer. The hanging is presumably the time it
takes
to flush the buffer (there is a process called nfsiod which is active
during this time and df shows data is still being written).
Does anyone know how to either make this buffer smaller, or get rid of
it all together so the scp can accruately report on its progress?
Thanks
Simon.
Hey! Simon,
you could also re-write scp to open the file descriptor with
O_SYNC to force all writes to be synchronous, and you will
obviate the need to call fsync().