Yes, accessing the files through runat works.
I think /proc (and /dev/fd, which has the same trouble but only works
if the same process accesses the fds, for obvious reasons since
/dev/fd is per process and can not be shared between processes unlike
/proc/$pid/fd/) gets confused because the directories have no name.
pfiles gets confused in a similar way and some times crashes, but
without a predictable pattern or test case.
As interestingly side note, doing a cd to the /proc/$$/fd/$fd first works:
-------- cut here --------
touch x4 ; cd -@ x4 ; redirect {n}<"." ; cd .. ;
(cd "/proc/$$/fd/$n" ; print "hello1" >"myxattr") ;
(cd -@ x4 ; cat "myxattr" ) ;
rm x4
-------- stop cutting here --------
Accessing the file with the full path directly does not work:
-------- cut here --------
touch x1 ; cd -@ x1 ; redirect {n}<"." ; cd .. ;
print "hello1" >"/proc/$$/fd/$n/myxattr1" ;
(cd -@ x1 ; cat "myxattr1" ) ;
rm x1
-------- stop cutting here --------
Olga
On Fri, Jul 13, 2012 at 9:17 PM, Gordon Ross <[email protected]> wrote:
> On Fri, Jul 13, 2012 at 2:16 AM, ольга крыжановская
> <[email protected]> wrote:
>> Can some one here explain why accessing a NFSv4/ZFS xattr directory
>> through proc is forbidden?
>>
> [...]
>> truss says the syscall fails with
>> open("/proc/3988/fd/10/myxattr", O_WRONLY|O_CREAT|O_TRUNC, 0666) Err#13
>> EACCES
>>
>> Accessing files or directories through /proc/$$/fd/ from a shell
>> otherwise works, only the xattr directories cause trouble. Native C
>> code has the same problem.
>>
>> Olga
>
> Does "runat" let you see those xattr files?
>
> --
> Gordon Ross <[email protected]>
> Nexenta Systems, Inc. www.nexenta.com
> Enterprise class storage for everyone
--
, _ _ ,
{ \/`o;====- Olga Kryzhanovska -====;o`\/ }
.----'-/`-/ [email protected] \-`\-'----.
`'-..-| / http://twitter.com/fleyta \ |-..-'`
/\/\ Solaris/BSD//C/C++ programmer /\/\
`--` `--`
_______________________________________________
zfs-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss