Subject: Solaris 10 "cp -p" returns unknown error on NFSv4 share,permissions preserve not work

From: "Ryba, Lukas" <[email-masked]>
Date: Wed, 26 Sep 2012 14:16:39 +0200

Hello,

i want to report bug in coreutils 8.19 observed on Solaris 10 update 9 and 10 on i386 and sparc platforms(i386-Generic_147441-07/sparc-Generic_147440-07). 
Copy preserve does not work on NFSv4 share and omit permissions. "Unknown system error" returned. Files have no acls set.

Way to reproduce:
-rwxr--r--   1 myuser  mygroup           0 Sep 26 12:47 test1

myuser@testbox:~$ /opt/gsb/bin/cp -p test1 test2
/opt/gsb/bin/cp: 'test1': Unknown system error

myuser@testbos:~$ ls -l test2

Expected result:
-rwxr--r--   1 myuser  mygroup           0 Sep 26 12:47 test2

Actual result:
-rwx------   1 myuser  mygroup           0 Sep 26 12:47 test2

Some truss output show me problem with acl calls:

truss cp -p test1 test2

- snip -
brk(0x1001349D0)                                = 0
brk(0x1001389D0)                                = 0
stat("test2", 0xFFFFFFFF7FFFF498)               Err#2 ENOENT
stat("test1", 0xFFFFFFFF7FFFF250)               = 0
stat("test2", 0xFFFFFFFF7FFFF1D0)               Err#2 ENOENT
open("test1", O_RDONLY)                         = 3
fstat(3, 0xFFFFFFFF7FFFEE28)                    = 0
open("test2", O_WRONLY|O_CREAT|O_EXCL, 0700)    = 4
fstat(4, 0xFFFFFFFF7FFFED28)                    = 0
sysconfig(_CONFIG_PAGESIZE)                     = 8192
brk(0x1001389D0)                                = 0
brk(0x1001489D0)                                = 0
read(3, 0x100136000, 65536)                     = 0
futimens(4, 0xFFFFFFFF7FFFEAB8)                 = 0
fchown(4, 31219, 20)                            = 0
facl(3, ACE_GETACLCNT, 0, 0x00000000)           = 6
facl(3, ACE_GETACL, 6, 0x1001472A0)             Err#-1
brk(0x1001489D0)                                = 0
brk(0x10014C9D0)                                = 0
open("/opt/gsb/lib/sparcv9/charset.alias", O_RDONLY|O_NOFOLLOW) = 5
fcntl(5, F_GETFD, 0x00000001)                   = 0
fstat(5, 0xFFFFFFFF7FFFE240)                    = 0
fstat(5, 0xFFFFFFFF7FFFE110)                    = 0
ioctl(5, TCGETA, 0xFFFFFFFF7FFFE17C)            Err#25 ENOTTY
read(5, " #   T h i s   f i l e  ".., 1024)     = 635
brk(0x10014C9D0)                                = 0
brk(0x1001509D0)                                = 0
read(5, 0x1001492B4, 1024)                      = 0
lseek(5, 0, SEEK_CUR)                           = 635
close(5)                                        = 0
fcntl(1, F_GETFL)                               = 8194
fstat(2, 0xFFFFFFFF7FFFD750)                    = 0
/opt/gsb/bin/cpwrite(2, " / o p t / g s b / b i n".., 15)       = 15
: write(2, " :  ", 2)                           = 2
'test1'write(2, " ' t e s t 1 '", 7)                    = 7
: write(2, " :  ", 2)                           = 2
Unknown system errorwrite(2, " U n k n o w n   s y s t".., 20)  = 20

write(2, "\n", 1)                               = 1
close(4)                                        = 0

- snip -

Coreutils compiled with "--without-gmp". Compiled with Oracle Studio 12.3 and tested with gcc 3.4.3 too.

Described problem above does not occur when coreutils are compiled with "--disable-acl" configure option.

Regards

Lukas Ryba