FUSE extended attribute patches available

Rick Macklem rmacklem at uoguelph.ca
Tue Mar 1 00:02:39 UTC 2016


Ken Merry wrote:
> I have patches for FreeBSD’s FUSE filesystem kernel module to support
> extended attributes:
> 
> https://people.freebsd.org/~ken/fuse_extattr.20160229.1.txt
> 
> 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.
I also have patches, although my list didn't work. (I didn't know that there was
a difference between what Linux/FUSE returns vs what FreeBSD wanted. So now I know
why my "list" didn't work.)
Btw, when I discussed what to do w.r.t. extended attribute namespace, he seemed to
think just considering all the fuse ones as User was ok.

I also have patched FreeBSD's Fuse for the other stuff needed to export the fuse
mount via an NFS server. (VFS_FHTOVP() etc) These aren't quite ready for "prime time"
but if anyone wants to try them, just email me and I'll send you a copy.

Btw, I have a couple of patches related to direct I/O and buffered I/O. You can
find 2 of these at PR#206238. I also patched fuse_vnop_inactive() to flush/write
dirty pages. (I think this is needed when an application mmaps a file and the
modifies it after closing the file descriptor. I haven't actually tested to see
if this fix is needed, so I haven't put it anywhere yet.)

>  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.)
> 
The FreeBSD GlusterFS port includes a fuse interface that supports extended
attributes. That is how I tested what I have. (I think the port is now in
svn, but if not you can find the GlusterFS port at PR#194409.)
It glusterfs.org doc doesn't mention that you can create/test a volume of
only one brick, but that works for trivial testing. If you decide to use it
for testing and have trouble getting it going, just email. I know diddly about
GlusterFS, but I have fired it up a few times.

> Any feedback is welcome.  I’m planning to check this into FreeBSD/head in the
> next week or so.
> 
I'll try to get around and taking a look to see if there is anything different
than what I did (other than the above "list" case I didn't get right;-).

rick

> 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"


More information about the freebsd-fs mailing list