removexattr seems to behave differently on aufs on kernel 4.9. Guessing that
this was missed in the xattr changes in the port.
doing a cp -rp on 4.4 kernel I got:
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tt"..., 1024) = 462
read(3, "", 1024) Â Â Â Â Â Â Â Â Â Â Â = 0
close(3) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â = 0
geteuid() Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â = 0
stat("/bar", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/foo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/bar/foo", 0x7ffdad662030) Â Â Â = -1 ENOENT (No such file or
directory)
mkdir("/bar/foo", 0700) Â Â Â Â Â Â Â Â = 0
lstat("/bar/foo", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
open("/foo", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getdents(3, /* 2 entries */, 32768) Â Â = 48
getdents(3, /* 0 entries */, 32768) Â Â = 0
close(3) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â = 0
utimensat(AT_FDCWD, "/bar/foo", [{1484927717, 203576439}, {1484927716, 0}],
0) = 0
lchown("/bar/foo", 0, 0) Â Â Â Â Â Â Â Â = 0
getxattr("/foo", "system.posix_acl_access", 0x7ffdad661c30, 132) = -1
ENODATA (No data available)
stat("/foo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getxattr("/foo", "system.posix_acl_default", 0x7ffdad661c30, 132) = -1
ENODATA (No data available)
stat("/foo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
setxattr("/bar/foo", "system.posix_acl_access",
"\2\0\0\0\1\0\7\0\377\377\377\377\4\0\5\0\377\377\377\377
\0\5\0\377\377\377\377", 28, 0) = 0
removexattr("/bar/foo", "system.posix_acl_default") = 0
but on 4.9 I get:
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tt"..., 1024) = 476
read(3, "", 1024) Â Â Â Â Â Â Â Â Â Â Â = 0
close(3) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â = 0
geteuid() Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â = 0
stat("/bar", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/foo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/bar/foo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/foo", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getdents(3, /* 2 entries */, 32768) Â Â = 48
getdents(3, /* 0 entries */, 32768) Â Â = 0
close(3) Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â = 0
utimensat(AT_FDCWD, "/bar/foo", [{1484927717, 203576439}, {1484927716, 0}],
0) = 0
getxattr("/foo", "system.posix_acl_access", 0x7fff6a3446e0, 132) = -1
ENODATA (No data available)
stat("/foo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getxattr("/foo", "system.posix_acl_default", 0x7fff6a3446e0, 132) = -1
ENODATA (No data available)
stat("/foo", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
setxattr("/bar/foo", "system.posix_acl_access",
"\2\0\0\0\1\0\7\0\377\377\377\377\4\0\5\0\377\377\377\377
\0\5\0\377\377\377\377", 28, 0) = 0
removexattr("/bar/foo", "system.posix_acl_default") = -1 EINVAL (Invalid
argument)
open("/usr/lib/x86_64-linux-gnu/charset.alias", O_RDONLY|O_NOFOLLOW) = -1
ENOENT (No such file or directory)
write(2, "cp: ", 4cp: ) Â Â Â Â Â Â Â Â Â Â = 4
write(2, "preserving permissions for '/bar"..., 37preserving permissions for
'/bar/foo') = 37
write(2, ": Invalid argument", 18: Invalid argument) Â Â Â = 18
write(2, "\n", 1
This makes the call fail, as removexattr is now returning EINVAL in 4.9
Both systems are running 20161219 aufs standalone
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot