When transferring moderately large files (~500-800 MB) to/from a USB disk in nautilus, or using (s)cp (with progress bar from http://chris-lamb.co.uk/2008/01/24/can-you-get-cp-to-give-a-progress-bar-like-wget/), or when using rsync... the progress reported is far from accurate. Evidently the default file system cache size in ubuntu 11.10 64bit is quite a bit larger than for 32 bit. As a consequence, it appears to nautilus or rsync or whatever is doing the copying that the file has been completely copied, when in fact there is a large portion of the file left to write, but that entire portion is has been cached, so it appears to the program that the file has been written (i.e. because it has, from the perspective of system calls). However, the actual output file takes a good 10-20 seconds more to actually fill up. Is there anyway to tweak any of these pieces of software to report progress in terms of "how much data has been written to the actual output file" instead of "how much data has been written to the operating system".
My particular annoyance is that each of these programs reports that the file has been written, but then just hangs for a while reporting nothing. I suspect this is because the "write" system call has completed, but the "close file" system call is waiting for the cache to flush.