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>