glusterfs/doc/legacy/solaris-related-xattrs.txt
Vijay Bellur 076830c068 doc: Move outdated documentation to legacy
Change-Id: I0ceba9a993e8b1cdef4ff6a784bfd69c08107d88
BUG: 811311
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Reviewed-on: http://review.gluster.com/3116
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
2012-04-11 10:25:56 -07:00

45 lines
1.8 KiB
Plaintext

Solaris Extended Attributes
In solaris extended attributes are logically supported as files
within the filesystem. The file system is therefore augmented
with an orthogonal namespace of file attributes. Attribute values
are accessed by file descriptors obtained through a special attribute
interface. This type of logical view of "attributes as files" allows
the leveraging of existing file system interface functionality to
support the construction, deletion and manipulation of attributes.
But as we have tested through this functionality provided by Solaris
we have come accross two major issues as written below.
1. Symlink XATTR_NOFOLLOW not present for creating extended attributes
directly on the symlinks like other platforms Linux,MAC-OSX,BSD etc.
An implementation is present for O_NOFOLLOW for "openat()" call sets
up errno ELOOP whenever encountered with a symlink and also another
implementation AT_SYMLINK_NOFOLLOW which is not present for calls like
"attropen(), openat()"
a snippet of test code which helped us understand this behaviour
--------------------------------------
attrfd = attropen (path, key,
flags|AT_SYMLINK_NOFOLLOW|O_CREAT|O_WRONLY|O_NOFOLLOW, 0777);
if (attrfd >= 0) {
ftruncate (attrfd, 0);
ret = write (attrfd, value, size);
close (attrfd);
} else {
fprintf (stderr, "Couldn't set extended attribute for %s (%d)\n",
path, errno);
}
--------------------------------------
2. Extended attribute support for special files like device files, fifo files
is not supported under solaris.
Apart from these glitches almost everything regarding porting functionality
for extended attribute calls has been properly implemented in compat.c
with writing wrapper around functions over
"attropen()", "openat()", "unlinkat()"