On Sep 13, 2015 4:25 PM, "Dave Chinner" <david@xxxxxxxxxxxxx> wrote: > > On Tue, Sep 08, 2015 at 04:08:43PM -0700, Andy Lutomirski wrote: > > Can we have a clean way to figure out whether two file ranges are the > > same in a way that allows false negatives? I.e. return 1 if the > > ranges are reflinks of each other and 0 if not? Pretty please? I've > > implemented that in the past on btrfs by syncing the ranges and then > > comparing FIEMAP output, but that's hideous. > > That fundamentally doesn't work for userspace, because the moment > the filesystem drops it's locks on the inodes in the kernel after > doing the comparison the mappings can change. IOWs, by the time the > information gets back to userspace, it's already wrong. e.g. cp made > this mistake by trying to use FIEMAP to optimise hole detection in > files and ended up with corrupt copies. > > It really doesn't matter what the syscall/ioctl interface is, trying > to make application logic decisions based on inode block mappings > from userspace is racy and not safe and will go wrong... > I agree, and that thing was just an experiment. I'd love to see a sane and correct interface, though. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html