瀏覽代碼

fuse: getxattr fail must use errno.ENOATTR, fixes #1126

The problem was that OS X Finder queried some OS X specific xattrs
and if they were not present, the wrong errno (ENODATA) was included
in the raised FUSEError exception. According to the llfuse docs, the
errno must be ENOATTR for this case.

Obviously, Finder didn't handle this well and denied access to the
file. Also, file size was displayed as "zero bytes" although we
return the correct value.
Thomas Waldmann 9 年之前
父節點
當前提交
4d7b0f357a
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      borg/fuse.py

+ 1 - 1
borg/fuse.py

@@ -194,7 +194,7 @@ class FuseOperations(llfuse.Operations):
         try:
             return item.get(b'xattrs', {})[name]
         except KeyError:
-            raise llfuse.FUSEError(errno.ENODATA) from None
+            raise llfuse.FUSEError(errno.ENOATTR) from None
 
     def _load_pending_archive(self, inode):
         # Check if this is an archive we need to load