Jim Meyering <[email protected]> wrote:
> Can you rerun that via strace and send the log at least
> to the bug-coreutils list (Cc'd)?
>
> strace -o log cp --reflink testfile testfile2
It opens both files and then performs the ioctl() call:
ioctl(4, 0x40049409, 0x3) = -1 EINVAL (Invalid argument)
>
> Even better, can you do that using stock upstream coreutils-8.2,
> assuming it still fails?
This may not be necessary. If I run strace on bcp, it turns out that its
ioctl() call encounters the same error:
ioctl(3, 0x40049409, 0x4) = -1 EINVAL (Invalid argument)
and thus the suggestion that bcp (by behaving like --reflink=auto) is masking
the issue appears to be exactly on point.
execve("/bin/cp", ["cp", "--reflink", "testfile", "testfile2"], [/* 17 vars
*/]) = 0
brk(0) = 0x23ca000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fbb485b4000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fbb485b2000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=25245, ...}) = 0
mmap(NULL, 25245, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fbb485ab000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libselinux.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 ]\0\0\0\0\0\0"..., 832)
= 832
fstat(3, {st_mode=S_IFREG|0644, st_size=113736, ...}) = 0
mmap(NULL, 2213640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fbb4817c000
mprotect(0x7fbb48197000, 2093056, PROT_NONE) = 0
mmap(0x7fbb48396000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7fbb48396000
mmap(0x7fbb48398000, 1800, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbb48398000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libacl.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\36\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=30472, ...}) = 0
mmap(NULL, 2125648, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fbb47f75000
mprotect(0x7fbb47f7c000, 2093056, PROT_NONE) = 0
mmap(0x7fbb4817b000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fbb4817b000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libattr.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\24\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=17808, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fbb485aa000
mmap(NULL, 2112952, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fbb47d71000
mprotect(0x7fbb47d75000, 2093056, PROT_NONE) = 0
mmap(0x7fbb47f74000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fbb47f74000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\353\1\0\0\0\0\0"..., 832) =
832
fstat(3, {st_mode=S_IFREG|0755, st_size=1379752, ...}) = 0
mmap(NULL, 3487784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fbb47a1d000
mprotect(0x7fbb47b67000, 2097152, PROT_NONE) = 0
mmap(0x7fbb47d67000, 20480, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14a000) = 0x7fbb47d67000
mmap(0x7fbb47d6c000, 18472, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fbb47d6c000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\r\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14696, ...}) = 0
mmap(NULL, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7fbb47819000
mprotect(0x7fbb4781b000, 2097152, PROT_NONE) = 0
mmap(0x7fbb47a1b000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fbb47a1b000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fbb485a9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fbb485a8000
arch_prctl(ARCH_SET_FS, 0x7fbb485a8790) = 0
mprotect(0x7fbb47a1b000, 4096, PROT_READ) = 0
mprotect(0x7fbb47d67000, 16384, PROT_READ) = 0
mprotect(0x7fbb48396000, 4096, PROT_READ) = 0
mprotect(0x7fbb485b5000, 4096, PROT_READ) = 0
munmap(0x7fbb485ab000, 25245) = 0
statfs("/selinux", {f_type=0x9123683e, f_bsize=4096, f_blocks=2498107,
f_bfree=2060896, f_bavail=2060896, f_files=0, f_ffree=0, f_fsid={-458043433,
-212768726}, f_namelen=255, f_frsize=4096}) = 0
brk(0) = 0x23ca000
brk(0x23eb000) = 0x23eb000
open("/proc/filesystems", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fbb485b1000
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 1024) = 272
read(3, "", 1024) = 0
close(3) = 0
munmap(0x7fbb485b1000, 4096) = 0
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1334848, ...}) = 0
mmap(NULL, 1334848, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fbb48462000
close(3) = 0
open("/proc/filesystems", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fbb485b1000
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 1024) = 272
read(3, "", 1024) = 0
close(3) = 0
munmap(0x7fbb485b1000, 4096) = 0
geteuid() = 1000
stat("testfile2", 0x7fffcb8d9e80) = -1 ENOENT (No such file or directory)
stat("testfile", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
stat("testfile2", 0x7fffcb8d9c20) = -1 ENOENT (No such file or directory)
open("testfile", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
open("testfile2", O_WRONLY|O_CREAT|O_EXCL, 0644) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
ioctl(4, 0x40049409, 0x3) = -1 EINVAL (Invalid argument)
open("/usr/share/locale/locale.alias", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=2570, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fbb485b1000
read(5, "# Locale name alias data base.\n#"..., 4096) = 2570
read(5, "", 4096) = 0
close(5) = 0
munmap(0x7fbb485b1000, 4096) = 0
open("/usr/share/locale/en_AU.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en_AU.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en_AU/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1
ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=435, ...}) = 0
mmap(NULL, 435, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7fbb485b1000
close(5) = 0
write(2, "cp: ", 4) = 4
write(2, "failed to clone `testfile2'", 27) = 27
open("/usr/share/locale/en_AU.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en_AU.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en_AU/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT
(No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such
file or directory)
write(2, ": Invalid argument", 18) = 18
write(2, "\n", 1) = 1
close(4) = 0
close(3) = 0
close(0) = 0
close(1) = 0
close(2) = 0
exit_group(1) = ?