Date: Sun, 6 Mar 2016 23:16:06 -0800 From: Julian Elischer <julian@freebsd.org> To: Rick Macklem <rmacklem@uoguelph.ca>, Ken Merry <ken@freebsd.org> Cc: Robert Watson <rwatson@freebsd.org>, fs@freebsd.org, scsi@freebsd.org Subject: Re: FUSE extended attribute patches available Message-ID: <56DD2AB6.1030407@freebsd.org> In-Reply-To: <800018199.6694281.1457233600357.JavaMail.zimbra@uoguelph.ca> References: <CD5FCB90-1952-4014-BBE0-1BFF1EF85E17@freebsd.org> <800018199.6694281.1457233600357.JavaMail.zimbra@uoguelph.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
On 5/03/2016 7:06 PM, Rick Macklem wrote: > Ken Merry wrote: >> I have patches for FreeBSD’s FUSE filesystem kernel module to support >> extended attributes: oh showing off your masochistic side eh? >> https://people.freebsd.org/~ken/fuse_extattr.20160229.1.txt >> I spent an hour beating my head against fuse yesterday. then realised that it's an old version on our product. We really have to get off 8.0 (hopefully a matter of weeks now to a 10.x switch) Now all I need is to find a FreeBSD filesystem expert (ZFS/NFS/CIFS/GFS) to hire. > The only bit of code I have that might be useful for this patch is: > case FUSE_GETXATTR: > case FUSE_LISTXATTR: > ! /* > ! * These can have varying response lengths, and 0 length > ! * isn't necessarily invalid. > ! */ > ! err = 0; > *** I came up with this: > fgin = (struct fuse_getxattr_in *) > ((char *)ftick->tk_ms_fiov.base + > sizeof(struct fuse_in_header)); > if (fgin->size == 0) > err = (blen == sizeof(struct fuse_getxattr_out)) ? 0 : > EINVAL; > else > err = (blen <= fgin->size) ? 0 : EINVAL; > break; > I think I got the size check right? > > The big question is... > What to do with the NAMESPACE? > - My code fails for SYSTEM and does USER without prepending "user.". > (That seemed to be what rwatson@ felt was reasonable. I thought our > discussion was on a mailing list, but I can't find it.) > I've cc'd him. Maybe he can comment again. Is there a standard for extended attributes I should knwo about? It seems to me that it's a bit like the wild west. Extended attributes seem to be "every OS for himself". > > - If you stick with prepending "user." or "system." there needs to be > some way to bypass this so that attributes that don't start in "user." > or "system." can be accessed. I've seen "trusted." and "glusterfs." > on GlusterFS. > --> Maybe a new namespace called something like "nil" that just bypasses > any USER or SYSTEM checks? > > rick > >> The patch implements the get/set/delete/list extended attribute methods. The >> listing code also converts extended attribute lists from the Linux/FUSE >> format to the FreeBSD format. For example: >> >> # touch foo >> # ls -la foo >> -rwxrwxrwx 1 root wheel 0 Feb 29 21:40 foo >> # lsextattr user foo >> foo >> # setextattr user testattr1 "12345678" foo >> # lsextattr user foo >> foo testattr1 >> # getextattr user testattr1 foo >> foo 12345678 >> # setextattr user testattr2 "87654321" foo >> # lsextattr user foo >> foo testattr2 testattr1 >> # rmextattr user testattr1 foo >> # lsextattr user foo >> foo testattr2 >> # getextattr user testattr1 foo >> getextattr: foo: failed: Attribute not found >> # getextattr user testattr2 foo >> foo 87654321 >> >> >> Just to be clear on what this does, it only provides extended attribute >> support to FreeBSD applications if the underlying FUSE filesystem implements >> FUSE extended attribute support. Many FUSE filesystems don’t support the >> extended attribute VFS operations. >> >> I have tested this out on IBM’s LTFS implementation, but I have not yet found >> another FUSE filesystem that supports extended attributes. If anyone knows >> of one, please let me know so I can try it out. (I looked through a number >> of the filesystems in sysutils/fusefs* in the ports tree.) >> >> Any feedback is welcome. I’m planning to check this into FreeBSD/head in the >> next week or so. >> >> Obviously, I’ve also ported IBM’s LTFS implementation to FreeBSD. It works >> in the standard FUSE mode, and you can also link it into an application as a >> library if you don’t want to incur the overhead of running through FUSE. I >> haven’t gotten around to packaging it up to go out for testing / review. >> >> If anyone has IBM LTO-5 or newer tape drives, or IBM TS1140 or newer tape >> drives, and wants to try it out, let me know. I’ll send you the code when >> I’ve got it at least somewhat ready. This is IBM-specific, and won’t work >> on HP tape drives. >> >> Ken >> — >> Ken Merry >> ken@FreeBSD.ORG >> >> >> >> _______________________________________________ >> freebsd-fs@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-fs >> To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org" > _______________________________________________ > freebsd-fs@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-fs > To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org" > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56DD2AB6.1030407>