Переглянути джерело

fuse: added xattr support

Jonas Borgström 12 роки тому
батько
коміт
4f88eac300
1 змінених файлів з 13 додано та 3 видалено
  1. 13 3
      attic/fuse.py

+ 13 - 3
attic/fuse.py

@@ -7,7 +7,6 @@ import time
 # TODO
 # - multi archive
 # hard links
-# xattr
 
 class AtticOperations(llfuse.Operations):
     """
@@ -101,8 +100,20 @@ class AtticOperations(llfuse.Operations):
     def getattr(self, 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):
-        print('lookup', parent_inode, name)
         if name == b'.':
             inode = parent_inode
         elif name == b'..':
@@ -121,7 +132,6 @@ class AtticOperations(llfuse.Operations):
         return inode
 
     def read(self, fh, offset, size):
-        print('read', fh, offset, size)
         parts = []
         item = self.items[fh]
         for id, s, csize in item[b'chunks']: