Messages in this thread | | | Date | Thu, 20 Nov 2003 15:44:55 -0700 | From | Andreas Dilger <> | Subject | Re: OT: why no file copy() libc/syscall ?? |
| |
On Nov 20, 2003 23:31 +0100, Xavier Bestel wrote: > Le jeu 20/11/2003 à 20:08, Jesse Pollard a écrit : > > 1. what happens if the copy is aborted?
Same as now with "cp" - partial copy.
> > 2. what happens if the network drops while the remote server continues?
Irrelevant, since you can't access the file at that point (i.e. if server continues then great, but if it doesn't it's no different than the server disconnecting/crashing in the middle of a regular copy.
> > 3. what about buffer synchronization?
Sync file locally before starting, and no buffers on client are created. If you write to file while it is being copied, how is that different than two writers for same file now (i.e. usually broken). If the network filesystem doesn't support locking, that's the filesystem's problem and this API doesn't change it.
> > 4. what errors should be reported ?
Covered pretty well elsewhere. Of course EINTR should be reserved for "interrupted, please continue if you want" as opposed to a hard error.
> > 5. what happens when the syscall is interupted? Especially if the remote > > copy may take a while (I've seen some require an hour or more - worst > > case: days due to a media error (completed after the disk was replaced)).
Partial copy, no different than now.
> > 6. what about a client opening the copy before it is finished copying?
Reads partial file, no different than now.
> 7. How to report progress with your average file manager ?
Support signals and restart the copy where it left off. Interrupting once a second or whatever isn't onerous if needed and you can restart. You could even support some sort of "SIGUSR1" like dd does to get status back without actually killing things. Alternately, just stat the target file as it is being copied to watch progress.
Cheers, Andreas -- Andreas Dilger http://sourceforge.net/projects/ext2resize/ http://www-mddsp.enel.ucalgary.ca/People/adilger/
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |