Chris Mason wrote: > On Wed, Jul 29, 2009 at 03:14:49PM +0100, Pádraig Brady wrote: >> >> We may need to play around with fallocate() >> if we want to get back to the original >> cp semantics of actually allocating space >> on the file system for the new file. > > Well, best to just use the original cp code. I was talking with > Giuseppe about this as well, I think we should the option to do regular > cp via a flag.
Right. Well we can turn off this cloning by doing --sparse={never,always} but that has side effects. If we need an option then maybe we should have it turn on cloning rather than restore default cp behaviour? The side effects I thought of earlier, of COW without corresponding allocation were possible fragmentation on write or unexpected/mishandled ENOSPC. Also for endangered mechanical disks, subsequent processing could be slowed as the head seeks between the old and new data to be copied. Perhaps these are a small price to pay, especially considering that solid state disks will only be affected by the write()=ENOSPC issue. At the moment we have these linking options: cp -l, --link #for hardlinks cp -s, --symbolic-link #for symlinks So perhaps we should support: cp --link={soft,hard,cow} for symlink(), link() and reflink() respectively? I.E. link to the name, inode or extents respectively. > There will soon be a reflink system call that can be used on ocfs2 and > btrfs as well. Thanks for adding this to glibc! I was thinking there would be a generic syscall for this. So cp should call reflink() instead when it becomes available. thanks for the info! Pádraig. _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils