1. 10 Aug, 2018 1 commit
    • Chris Marget's avatar
      Removed UID test and syscall-based unmount. · 95c63709
      Chris Marget authored
      On a Linux system with go-fuse program running as root, the mount is
      performed by calling /bin/fusermount, and the unmount is performed with
      syscall.Unmount()
      
      This creates a problem on systems (CentOS 6) with a static-but-edited-by-mount
      /etc/mtab file.
      
       - fusermount adds a line to mtab when the go-fuse program starts
       - syscall.Unmount() doesn't edit the file on program exit
       - subsequent invocations of the program fail to mount with:
      
          "Mount fail: fusermount exited with code 256"
      
      Deleting the now-inaccurate mtab entry clears things up.
      
      There's probably a workaround by adding "-n" option so that mount doesn't
      edit mtab in the first place, but it's not obvious where to insert that when
      starting with the hello.go example.
      95c63709
  2. 27 Jul, 2018 1 commit
  3. 25 Jul, 2018 1 commit
  4. 24 Jul, 2018 2 commits
  5. 22 May, 2018 2 commits
  6. 08 May, 2018 5 commits
  7. 02 May, 2018 1 commit
    • Jakob Unterwurzacher's avatar
      fuse: improve SETXATTR debug logging · 41df6ec8
      Jakob Unterwurzacher authored
      Set the operationHandlers[op].DecodeIn function and
      add xattr name parsing.
      
      SETXATTR is special because it is the only opcode that
      takes a file name (the xattr name) and a binary blob
      (the xattr value). This was not supported by the
      file name parsing code:
      * setting FileNames = 1 would lump the xattr name
        and value together and truncates the last byte
      * setting FileNames = 2 truncated the last xattr
        value byte.
      
      This was solved by adding a special-case to parse(),
      which seemed less ugly than adding a special-case
      InputDebug(), or leaving the truncation as-is.
      
      Before:
        2018/05/01 16:47:39 Dispatch 6: SETXATTR, NodeId: 3.  12 bytes
      After:
        2018/05/01 16:48:36 Dispatch 6: SETXATTR, NodeId: 3. data: {sz 3 f0} names: [user.foo] 12 bytes
      
      The change only affects debug output as doSetXAttr() does its
      own bytes.SplitN(). The parsed filename *could* also be used in
      doSetXAttr(), but the code seems clearer as-is.
      41df6ec8
  8. 23 Apr, 2018 1 commit
  9. 18 Mar, 2018 1 commit
  10. 16 Mar, 2018 1 commit
  11. 01 Mar, 2018 1 commit
  12. 02 Feb, 2018 1 commit
  13. 18 Jan, 2018 1 commit
  14. 12 Jan, 2018 1 commit
  15. 05 Dec, 2017 1 commit
  16. 13 Nov, 2017 1 commit
    • Jakob Unterwurzacher's avatar
      pathfs: simplify pathInode.GetAttr · 66de2f17
      Jakob Unterwurzacher authored
      The function was written with only a single return at
      the end, which was elegant, but harder to follow.
      
      Add early returns to handle common cases and add a few
      comments.
      
      A functional change is that we now catch when we get
      OK with fi == nil and return EINVAL and log a message.
      This should not happen and is a bug in the filesystem
      implementation.
      
      Passes ./all.bash and the gocryptfs test suite.
      66de2f17
  17. 07 Nov, 2017 2 commits
  18. 20 Oct, 2017 1 commit
  19. 19 Oct, 2017 3 commits
  20. 09 Oct, 2017 1 commit
    • Jakob Unterwurzacher's avatar
      debug output: fix blank line after READDIRPLUS · cfefa3d5
      Jakob Unterwurzacher authored
      Trivial patch that fixes a blank line in the debug output.
      
      Before:
      
        2017/10/03 20:25:56 Dispatch 602: READDIRPLUS, NodeId: 1. data: {Fh 2 off 0 sz 4096  L 0 DIRECTORY,NONBLOCK,0x8000}
        2017/10/03 20:25:56 Serialize 602: READDIRPLUS code: OK value:  832 bytes data
      
        2017/10/03 20:25:56 Dispatch 603: GETXATTR, NodeId: 7. data: {sz 0} names: [system.posix_acl_access] 24 bytes
        2017/10/03 20:25:56 Serialize 603: GETXATTR code: 61=no data available value:
      
      After:
      
        2017/10/03 21:02:46 Dispatch 22: READDIRPLUS, NodeId: 1. data: {Fh 2 off 0 sz 4096  L 0 RDONLY,0x8000}
        2017/10/03 21:02:46 Serialize 22: READDIRPLUS code: OK value:  648 bytes data
        2017/10/03 21:02:46 Dispatch 23: READDIRPLUS, NodeId: 1. data: {Fh 2 off 4 sz 4096  L 0 RDONLY,0x8000}
        2017/10/03 21:02:46 Serialize 23: READDIRPLUS code: OK value:
      cfefa3d5
  21. 11 Sep, 2017 1 commit
  22. 03 Sep, 2017 1 commit
  23. 08 Aug, 2017 1 commit
    • Jakob Unterwurzacher's avatar
      fuse, loopback: return actual inode numbers from READDIR · 204b45db
      Jakob Unterwurzacher authored
      When an app in a FUSE mount calls getdents(2), go-fuse receives
      READDIR[PLUS] and calls the filesystem's OpenDir function that
      returns []DirEntry.
      
      The data returned from getdents(2) contains an inode number for
      each directory entry, "d_ino". Until now, struct DirEntry had no
      corresponding field and the value passed to the kernel was always
      FUSE_UNKNOWN_INO = 0xffffffff
      
      This broke apps that actually look at the d_ino field, like
      "find -inum".
      
      This commit adds the "Ino" filed to struct DirEntry. If the field
      is not set by the filesystem, it is set to FUSE_UNKNOWN_INO,
      as before. Otherwise it is left alone and passed to the kernel.
      
      loopbackFileSystem's OpenDir function is extended to set the inode
      number. A test verifies that the returned inode number is sane.
      
      Fixes https://github.com/hanwen/go-fuse/issues/175
      204b45db
  24. 28 Jul, 2017 1 commit
  25. 18 Jul, 2017 3 commits
  26. 17 Jul, 2017 1 commit
  27. 15 Jul, 2017 3 commits