On 09/28/2010 06:26 PM, Samuel Kidman wrote:
On Tue, Sep 28, 2010 at 10:07 PM, Simon Andrews <simon.andrews@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().