On 2015-10-16 08:24, Christoph Hellwig wrote: > On Fri, Oct 16, 2015 at 01:02:23PM +0100, P??draig Brady wrote: >> Right. reflinking is transparent to the user, though its consequences are not. >> Consequences being the possible extra latency or ENOSPC on CoW. > > You can get all these consequences without doing the file system reflink > by using a COW file system, any dedup scheme or thinly provisioned or > COW storage devices. > >> Therefore reflinking should be an explicit action/flag IMHO. > > This still does not make any sense, as it only prevents one of many > ways a file could do COW operations underneath. If you don't want > ENOSPC use fallocate, or the proposed COPY_FALLOC flag. If you want > care about latency you need to carefull benchmark your setup but in > general falloc / COPY_FALLOC might be a good starting point. But for > 99% of the copies a reflink is exactly the right thing to do. There is at least one reason other than avoiding ENOSPC and minimizing latency that people may want to avoid reflinking things: They actually _want_ multiple physically independent copies of the same file on the disk. Usually people do go about this wrong (some people I know don't understand that having multiple copies of a file on the same filesystem provides no greater safety than one copy), but that doesn't mean that this isn't a perfectly valid use case for copying a file.