1. 28 Feb, 2019 1 commit
  2. 24 Feb, 2019 2 commits
    • Han-Wen Nienhuys's avatar
      nodefs: use {Gen, Ino} as file ID · 48be1a10
      Han-Wen Nienhuys authored
      This lets filesystems control Generation produced. It also unifies
      OpaqueID (used for implementors) NodeID (used for kernel comms) and
      the Ino field (reported in Stat/Lstat calls).
      
      For loopback, there is a minor inconvenience, which is that the file
      is determined by (Dev, Ino). Get around this by xoring Dev and Ino.
      48be1a10
    • Han-Wen Nienhuys's avatar
      nodefs: issue GetAttr on file if we have open files · e90f5d22
      Han-Wen Nienhuys authored
      Fix and test Nlink==0 test (issue #137)
      
      Do not overwrite Attr.Ino, otherwise recycled inodes risk giving tools
      like RSync the impression there are more hardlinks than there are.
      e90f5d22
  3. 23 Feb, 2019 16 commits
  4. 17 Feb, 2019 5 commits
  5. 14 Feb, 2019 1 commit
    • Kirill Smelkov's avatar
      fuse: Fix InodeRetrieveCache to retrieve data in chunks · 58dcd77a
      Kirill Smelkov authored
      It turned out that:
      
      1. Linux kernel cannot send data in chunks bigger than what was
         configured as MaxWrite on init, and
      
      2. if we ask for more, and that more, after capping to kernel write
         maxium, is more than configured MaxWrite, the kernel will simply drop
         NOTIFY_REPLY message. This, hopefully, will be fixed
      
      	https://marc.info/?l=linux-fsdevel&m=155000277921155&w=2
      
         but we cannot count on this fix to be present on older kernels, and
         even if it is there, we still won't get more than MaxWrite data.
      
      -> Rework InodeRetrieveCache to retrieve the data in chunks.
      
      NOTE1: we do not load users with this FUSE exchange details and instead
      of returning less content than requested, try to retrieve it all.
      
      NOTE2: without changes to fuse/server.go, added test will get stuck (see
      details in above link to linux-fsdevel patch).
      58dcd77a
  6. 13 Feb, 2019 7 commits
  7. 07 Feb, 2019 1 commit
    • Ed Schouten's avatar
      Don't crash when calling truncate(1) on a handle without a File. · 33711add
      Ed Schouten authored
      For all operations that can be applied on file descriptors, we have
      special treatment to permit the File to be nil. In that case, operations
      are called against the Node object instead.
      
      This check currently seems missing from SetAttr(), causing invocations
      of the truncate(1) command line tool to cause a crash:
      
              panic: runtime error: invalid memory address or nil pointer dereference
              [signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0xa30d0d]
      
              goroutine 12 [running]:
              github.com/hanwen/go-fuse/fuse/nodefs.(*rawBridge).SetAttr(0xc00013ecc0, 0xc0003a8000, 0xc0003ba0f0, 0xa27b98)
                      external/com_github_hanwen_go_fuse/fuse/nodefs/fsops.go:203 +0x58d
              github.com/hanwen/go-fuse/fuse.doSetattr(0xc0003a4000, 0xc0003ba000)
                      external/com_github_hanwen_go_fuse/fuse/opcode.go:171 +0x64
              github.com/hanwen/go-fuse/fuse.(*Server).handleRequest(0xc0003a4000, 0xc0003ba000, 0xc0003ba000)
                      external/com_github_hanwen_go_fuse/fuse/server.go:431 +0x26b
              github.com/hanwen/go-fuse/fuse.(*Server).loop(0xc0003a4000, 0xc00000b101)
                      external/com_github_hanwen_go_fuse/fuse/server.go:403 +0x18f
              created by github.com/hanwen/go-fuse/fuse.(*Server).readRequest
                      external/com_github_hanwen_go_fuse/fuse/server.go:291 +0x2d8
      33711add
  8. 05 Feb, 2019 1 commit
  9. 04 Feb, 2019 3 commits
  10. 01 Feb, 2019 2 commits
  11. 30 Jan, 2019 1 commit