- 27 Mar, 2019 40 commits
-
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
Use a []uint32 in Inode to keep track of open files. This reduces the memory consumption of this feature. Add a test that tries to (unsuccessfully) trigger file closing on the while file.GetAttr is under way
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
This is necessary to provide a file handle to GetAttr.
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
The protocol is: request: read (with buffer 1024) response: data (if buffer is big enough), or (data size, ERANGE) Before, the raw API provided * GetXAttrSize: called if the kernel sends a 0 sized buffer (which never happens * GetXAttrData: called in other cases. The return value is []byte forcing allocation of potentially large buffers * ListXAttr: return value []byte, so also problematic for allocation. Now, the raw API mirrors the kernel API more closely, and use recycled buffers for more efficiency.
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
This should be tagged with a version bump because it changes the RawFileSystem API. Changes to nodefs and paths will be transparent: a Cancel channel was added to the fuse.Context struct. In addition fuse.Context now implements the Go context package. This also increases the minimum Go version to 1.7.
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
compile on darwin too
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
When using automatic NodeIds, we can still have a race.
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
Suggestion by Kirill Smelkov.
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
This causes an INTERRUPT to happen, which is useful to see in practice. When adding a sleep to the READ operation, this yields the following trace: rx 28: OPEN i2 {O_RDONLY,0x8000} tx 28: OK, {Fh 1 } rx 30: READ i2 {Fh 1 [0 +4096) L 0 RDONLY,0x8000} killing subprocess rx 32: FLUSH i2 {Fh 1} tx 32: OK rx 33: INTERRUPT i0 {ix 32} tx 33: OK tx 30: OK, 1024b data "********"... rx 34: RELEASE i2 {Fh 1 0x8000 L0} tx 34: OK ie. rather than canceling the READ, a FLUSH is issued which is then INTERRUPTed.
-
Han-Wen Nienhuys authored
-
Jakob Unterwurzacher authored
Add stub implementations for the rest of the methods from the Operations interface, and add a compile-time check that we don't have missed any.
-
Han-Wen Nienhuys authored
This should decrease confusion between Inode and Node
-
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.
-
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.
-
Han-Wen Nienhuys authored
-
Han-Wen Nienhuys authored
-