Thanks for installing that. I found the comments still a bit confusing so I pushed the attached; hope it's OK. It is annoying that in the common case where A is a regular file and B does not exist but will be created on the same file system, the syscalls start out: openat(AT_FDCWD, "B", O_RDONLY|O_PATH|O_DIRECTORY) = -1 ENOENT newfstatat(AT_FDCWD, "A", ...}, 0) = 0 openat(AT_FDCWD, "A", O_RDONLY) = 3 newfstatat(3, "", ..., AT_EMPTY_PATH) = 0 openat(AT_FDCWD, "B", O_WRONLY|O_CREAT|O_EXCL, 0775) = 4 ioctl(4, BTRFS_IOC_CLONE or FICLONE, 3) = -1 EOPNOTSUPP newfstatat(4, "", ..., AT_EMPTY_PATH) = 0 They should be just: openat(AT_FDCWD, "A", O_RDONLY) = 3 newfstatat(3, "", ..., AT_EMPTY_PATH) = 0 openat(AT_FDCWD, "B", O_WRONLY|O_CREAT|O_EXCL, 0775) = 4 ioctl(4, BTRFS_IOC_CLONE or FICLONE, 3) = -1 EOPNOTSUPP newfstatat(4, "", ..., AT_EMPTY_PATH) = 0 as there should be no need to stat the source twice, or to try to open the destination twice. But this is a performance improvement for another day.