Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Nov 2013 02:28:36 +0100
From:      =?utf-8?Q?Edward_Tomasz_Napiera=C5=82a?= <trasz@FreeBSD.org>
To:        Rick Macklem <rmacklem@uoguelph.ca>
Cc:        Freebsd hackers list <freebsd-hackers@freebsd.org>, Richard Yao <ryao@gentoo.org>, Pedro Giffuni <pfg@FreeBSD.org>, Robert Watson <rwatson@FreeBSD.org>, Cedric Blancher <cedric.blancher@gmail.com>
Subject:   Re: O_XATTR support in FreeBSD?
Message-ID:  <987A1DDC-0C8F-4EEF-9504-D28CA7027F56@FreeBSD.org>
In-Reply-To: <820263347.19772534.1385247218007.JavaMail.root@uoguelph.ca>
References:  <820263347.19772534.1385247218007.JavaMail.root@uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
Wiadomo=C5=9B=C4=87 napisana przez Rick Macklem <rmacklem@uoguelph.ca> w =
dniu 23 lis 2013, o godz. 23:53:
> Pedro Giffuni wrote:
>> On 23.11.2013 02:13, Cedric Blancher wrote:
>>> On 22 November 2013 20:55, Pedro Giffuni <pfg@freebsd.org> wrote:
>>>> Well ...
>>>>=20
>>>> According to:
>>>>=20
>>>> https://wiki.freebsd.org/ZFS
>>>>=20
>>>> We do support Extended Attributes on ZFS but they differ from the
>>>> ones in
>>>> Solaris (and Linux).
>>> Well, we need the one specified in the NFSv4 standard. The Linux
>>> extended attributes are pretty much useless because they are size
>>> restricted (typical attribute size here is in the GB range, and for
>>> example NIH and CERN have even much bigger sizes), can't be
>>> accessed
>>> like normal files and are incompatible to Window's Alternate
>>> Streams.
>>>=20
>>> Ced
>>=20
>> I was unaware of a standard for EA beyond the old posix draft.
>> The reason for Extended Attributes is supporting ACL and we support
>> both
>> the draft posix and the NFS/win style ACLs.
>>=20
> Interestingly, FreeBSD has a VOP_OPENEXTATTR() but no syscall
> that uses it nor support for it in ZFS. (I'm just guessing it
> was intended for an openat(2) syscall at some time?)

Hm, interesting.  It looks kind of unused (MAC uses it to implement
mac_vnode_create_extattr() and mac_vnode_setlabel_extattr()).  Robert =
(Cc-ed),
perhaps you know what=E2=80=99s the story here?

% grep -R openextattr *   =20
fs/unionfs/union.h:#define UNIONFS_OPENEXTL     0x01    /* openextattr =
(lower) */
fs/unionfs/union.h:#define UNIONFS_OPENEXTU     0x02    /* openextattr =
(upper) */
fs/unionfs/union_vnops.c:unionfs_openextattr(struct vop_openextattr_args =
*ap)
fs/unionfs/union_vnops.c:       .vop_openextattr =3D      =
unionfs_openextattr,
kern/vnode_if.src:%% openextattr        vp      L L L
kern/vnode_if.src:vop_openextattr {
ufs/ffs/ffs_vnops.c:static vop_openextattr_t    ffs_openextattr;
ufs/ffs/ffs_vnops.c:    .vop_openextattr =3D      ffs_openextattr,
ufs/ffs/ffs_vnops.c:    .vop_openextattr =3D      ffs_openextattr,
ufs/ffs/ffs_vnops.c:ffs_openextattr(struct vop_openextattr_args *ap)
ufs/ffs/ffs_vnops.c:struct vop_openextattr_args {

% grep -R VOP_OPENEXTATTR *
fs/unionfs/union_vnops.c:       error =3D VOP_OPENEXTATTR(tvp, =
ap->a_cred, ap->a_td);
fs/unionfs/union_vnops.c:                           VOP_OPENEXTATTR(lvp, =
cred, td)) {
fs/unionfs/union_vnops.c:                               panic("unionfs: =
VOP_OPENEXTATTR failed");
fs/unionfs/union_vnops.c:               if ((error =3D =
VOP_OPENEXTATTR(uvp, cred, td)) !=3D 0)
fs/unionfs/union_vnops.c:                           VOP_OPENEXTATTR(lvp, =
cred, td)) {
fs/unionfs/union_vnops.c:                               panic("unionfs: =
VOP_OPENEXTATTR failed");
fs/unionfs/union_vnops.c:               if ((error =3D =
VOP_OPENEXTATTR(uvp, cred, td)) !=3D 0)
security/mac/mac_vfs.c: error =3D VOP_OPENEXTATTR(vp, cred, curthread);
security/mac/mac_vfs.c: error =3D VOP_OPENEXTATTR(vp, cred, curthread);

Anyway - extended attributes _are_ supported on ZFS; see extattr(2) for =
API.





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?987A1DDC-0C8F-4EEF-9504-D28CA7027F56>