FUSE extended attribute patches available
Julian Elischer
julian at freebsd.org
Mon Mar 7 07:16:15 UTC 2016
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 at FreeBSD.ORG
>>
>>
>>
>> _______________________________________________
>> freebsd-fs at freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-fs
>> To unsubscribe, send any mail to "freebsd-fs-unsubscribe at freebsd.org"
> _______________________________________________
> freebsd-fs at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-fs
> To unsubscribe, send any mail to "freebsd-fs-unsubscribe at freebsd.org"
>
>
More information about the freebsd-scsi
mailing list