2
0
Эх сурвалжийг харах

fuse: added xattr support

Jonas Borgström 12 жил өмнө
parent
commit
4f88eac300
1 өөрчлөгдсөн 13 нэмэгдсэн , 3 устгасан
  1. 13 3
      attic/fuse.py

+ 13 - 3
attic/fuse.py

@@ -7,7 +7,6 @@ import time
 # TODO
 # TODO
 # - multi archive
 # - multi archive
 # hard links
 # hard links
-# xattr
 
 
 class AtticOperations(llfuse.Operations):
 class AtticOperations(llfuse.Operations):
     """
     """
@@ -101,8 +100,20 @@ class AtticOperations(llfuse.Operations):
     def getattr(self, inode):
     def getattr(self, inode):
         return self.inodes[inode]
         return self.inodes[inode]
 
 
+    def listxattr(self, inode):
+        item = self.items[inode]
+        return [b'user.' + name for name in item.get(b'xattrs', {}).keys()]
+
+    def getxattr(self, inode, name):
+        item = self.items[inode]
+        if name.startswith(b'user.'):
+            name = name[5:]
+        try:
+            return item.get(b'xattrs', {})[name]
+        except KeyError:
+            raise llfuse.FUSEError(errno.ENODATA)
+
     def lookup(self, parent_inode, name):
     def lookup(self, parent_inode, name):
-        print('lookup', parent_inode, name)
         if name == b'.':
         if name == b'.':
             inode = parent_inode
             inode = parent_inode
         elif name == b'..':
         elif name == b'..':
@@ -121,7 +132,6 @@ class AtticOperations(llfuse.Operations):
         return inode
         return inode
 
 
     def read(self, fh, offset, size):
     def read(self, fh, offset, size):
-        print('read', fh, offset, size)
         parts = []
         parts = []
         item = self.items[fh]
         item = self.items[fh]
         for id, s, csize in item[b'chunks']:
         for id, s, csize in item[b'chunks']: