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

Reply via email to