1. 14 Jan, 2016 6 commits
  2. 10 Jan, 2016 2 commits
  3. 09 Jan, 2016 1 commit
    • Jakob Unterwurzacher's avatar
      Fix several Utimens-related build problems on OSX · 07d43e8a
      Jakob Unterwurzacher authored
      Properly implementing Utimens caused the OSX build to break because
      the utimensat system call is not available there.
      
      This patch reverts the OSX implementation of Utimens to using
      syscall.Utimes(). This is not actually correct but the best we can do.
      
      Thanks to @spaghetti2514 who reported the issue and tested the patches.
      07d43e8a
  4. 17 Dec, 2015 2 commits
  5. 15 Dec, 2015 2 commits
    • Eliot Courtney's avatar
      148d3830
    • Jakob Unterwurzacher's avatar
      loopback: fix Utimens on symlinks · d36ee9dd
      Jakob Unterwurzacher authored
      The problem was that os.Chtimes() operates on the target of the
      symlink and not on the symlink itself.
      When tar extracts an archive containing a symlink, it actually wants
      to set the times on the symlink. This can also be tested using
      "touch -h".
      
      This patch adds a wrapper for the Linux utimensat(2) syscall
      that allows passing flags along with a unit test.
      
      It uses the flag AT_SYMLINK_NOFOLLOW to implement
      loopbackFileSystem.Utimens() properly.
      
      It also add handling for UTIME_NOW and UTIME_OMIT that was already
      present in loopbackFile.Utimens() but missing in loopbackFileSystem.
      
      Fixes issue 81 ( https://github.com/hanwen/go-fuse/issues/81 ).
      d36ee9dd
  6. 07 Dec, 2015 2 commits
  7. 01 Dec, 2015 1 commit
  8. 28 Oct, 2015 1 commit
  9. 22 Oct, 2015 1 commit
    • Jakob Unterwurzacher's avatar
      nodefs: do not overwrite the "out.Ino" inode number · 1b3f7953
      Jakob Unterwurzacher authored
      ...if it has already been set by the filesystem.
      
      "out.Ino" is the user-facing inode number that is displayed by "ls -li".
      
      This change allows loopback filesystems to expose the inode number of
      the underlying filesystem.
      As a "real" inode number, this one is stable for the lifetime of the file,
      even across remounts.
      
      libfuse has the `use_ino` option that allows the inode numbers to be set
      arbitrarily as well. This has been used by EncFS for years.
      
      The Linux kernel stores the inode number in `orig_ino`. Grepping in
      `fs/fuse` shows that it is only read once in `fuse_update_attributes`,
      and only if the `stat` argument is not NULL. There is only one caller
      that passes that argument: `fuse_getattr`.
      
      In short, the kernel does not use the inode number for anything but
      reporting it via `stat()`, hence setting the inode number is safe.
      
      This functionality will be used for improving log output in gocryptfs,
      where file names cannot be used because they are encrypted.
      1b3f7953
  10. 11 Oct, 2015 4 commits
  11. 30 Sep, 2015 1 commit
  12. 29 Sep, 2015 5 commits
  13. 24 Sep, 2015 4 commits
  14. 27 Jun, 2015 1 commit
  15. 22 Apr, 2015 7 commits