Commit Graph

1215 Commits (d45752960ac89fab4df4c6b18d250bdf050eadcd)

Author SHA1 Message Date
Aaron Jacobs d45752960a Use a custom logging for interruptOp, to aid in debugging. 2015-07-29 14:53:09 +10:00
Aaron Jacobs 96b8ce71f0 Fixed a bug: the flags parameter is in and out. 2015-07-29 14:53:09 +10:00
Aaron Jacobs 3f954b3056 Enable async reads.
As best I can tell, this instructs the kernel not to synchronize on the
completion of a read request before sending further requests. This
definitely means further read requests, but I believe it means any sort
of request as well. It appears to make a big difference to gcsfuse read
support.
2015-07-29 14:53:09 +10:00
Aaron Jacobs 0114453672 Expanded interruptfs to also cover testing interrupts during flush. 2015-07-29 14:52:49 +10:00
Aaron Jacobs be5974e914 InterruptFSTest.InterruptedDuringFlush 2015-07-29 14:52:03 +10:00
Aaron Jacobs 85439be549 InterruptFSTest.InterruptedDuringRead 2015-07-29 14:51:33 +10:00
Aaron Jacobs 0796c46a9c Updated the interruptfs API. 2015-07-29 14:51:10 +10:00
Aaron Jacobs 94e31a27b6 Use the fuse ID in debug logs.
It's too confusing with a distinct set of IDs for logging.
2015-07-29 14:29:31 +10:00
Aaron Jacobs c80811a735 Don't spam the everloving shit out of the console for debug logging. 2015-07-29 12:02:58 +10:00
Aaron Jacobs e157c6bc8d Eliminated an allocation and a copy for each ReadFileOp.
This adds up to a significant performance gain for gcsfuse, in its sequential
read benchmark.

Also ReadDirOp.
2015-07-29 11:19:03 +10:00
Aaron Jacobs ab0580a452 Fixed a very dumb bug. 2015-07-29 11:14:17 +10:00
Aaron Jacobs ea97708e20 Read directly into out messages for directories. 2015-07-29 11:03:27 +10:00
Aaron Jacobs bbb262ee48 Read directly into out messages for files. 2015-07-29 11:02:29 +10:00
Aaron Jacobs 2e422a1305 Move where out messages are created. 2015-07-29 10:51:24 +10:00
Aaron Jacobs d903c709d3 Refactored allocation out OutMessage structs.
In preparation for allocating them up-front for ReadFile and ReadDir.
2015-07-29 10:47:41 +10:00
Aaron Jacobs 4fd46371a2 Rejiggered the ReadFile and ReadDir API.
The new API lends itself toward reading directly into the output buffer, saving
a memmove and allowing for easy reuse of output buffers.
2015-07-29 10:24:11 +10:00
Aaron Jacobs c12f80b1e2 Fixed flushfs. 2015-07-29 10:23:51 +10:00
Aaron Jacobs 85b3f9ed42 Fixed hellofs. 2015-07-29 10:22:26 +10:00
Aaron Jacobs b0d206254f Fixed another dumb bug. 2015-07-29 10:20:53 +10:00
Aaron Jacobs 5296835c1f Fixed a dumb bug. 2015-07-29 10:12:59 +10:00
Aaron Jacobs 339bc03e5e Attempted to fix memfs. 2015-07-29 10:12:11 +10:00
Aaron Jacobs 6d01ffa44f Replaced AppendDirent with WriteDirent. 2015-07-29 10:08:16 +10:00
Aaron Jacobs c08043788a Fixed conversions.go. 2015-07-29 09:49:28 +10:00
Aaron Jacobs f5d80cf9ab Defined the new API for ReadFileOp and ReadDirOp. 2015-07-29 09:48:18 +10:00
Aaron Jacobs 314b93c7c0 Use a freelist for outgoing messages.
This eliminates about half of the allocations by bytes for gcsfuse's sequential
read benchmark.
2015-07-28 16:36:05 +10:00
Aaron Jacobs 240465913f Fixed the build on Linux. 2015-07-28 16:31:59 +10:00
Aaron Jacobs a1fc133e32 Finished OutMessage. 2015-07-28 16:29:30 +10:00
Aaron Jacobs a25c297e41 OutMessage.AppendString 2015-07-28 16:29:09 +10:00
Aaron Jacobs bb88db68e0 OutMessage.Append 2015-07-28 16:28:21 +10:00
Aaron Jacobs 75e2706a4b Renamed two files. 2015-07-28 16:26:42 +10:00
Aaron Jacobs e2aa0ec1be OutMessage.GrowNoZero 2015-07-28 16:24:45 +10:00
Aaron Jacobs 9a55ffcd7d OutMessage.Grow 2015-07-28 16:23:59 +10:00
Aaron Jacobs 2e3cba1928 OutMessage.OutHeader 2015-07-28 16:23:34 +10:00
Aaron Jacobs 114432703b Check alignment. 2015-07-28 16:23:10 +10:00
Aaron Jacobs c210aa8a95 OutMessage.Reset 2015-07-28 16:20:50 +10:00
Aaron Jacobs 8b845a25ee Implemented memclr. 2015-07-28 16:19:37 +10:00
Aaron Jacobs f419bd4578 Declared memclr. 2015-07-28 16:19:03 +10:00
Aaron Jacobs 5b3f5df8cc Specify that append methods panic. 2015-07-28 16:17:56 +10:00
Aaron Jacobs 384f32c2a3 Connection.kernelResponseForOp 2015-07-28 16:17:06 +10:00
Aaron Jacobs 5238806cff Connection.Reply 2015-07-28 16:14:58 +10:00
Aaron Jacobs 0becfa3df2 Began fixing Connection. 2015-07-28 16:13:18 +10:00
Aaron Jacobs c0e60edb32 Defined the new OutMessage API. 2015-07-28 16:09:27 +10:00
Aaron Jacobs 3371ab70ac Redefined the contents of OutMessage. 2015-07-28 16:06:23 +10:00
Aaron Jacobs 2d3078f8b9 Refactored the way freelists work. 2015-07-28 15:53:53 +10:00
Aaron Jacobs 3845b0f124 Use freelist.Freelist for buffer.InMessage. 2015-07-28 12:59:44 +10:00
Aaron Jacobs 5b5d8ff8be Added a freelist package. 2015-07-28 12:56:16 +10:00
Aaron Jacobs 9232b8275f Don't convert uint64 to interface{} for the context key every time.
This accounts for ~80% of gcsfuse allocations.
2015-07-28 12:52:38 +10:00
Aaron Jacobs c968295acd Don't spam the error logger so much. 2015-07-27 16:03:58 +10:00
Aaron Jacobs 83630d4268 Refactored the way the user obtains contexts and replies to ops.
The new interface gives much much cleaner documentation for package
fuseops, which is what we mostly look at. In particular, there isn't a
ton of stuttering in the method listings.

The change also simplifies the implementation of package fuseops, which
was becoming super unwieldy.
2015-07-27 15:56:27 +10:00
Aaron Jacobs 5c332f767b Moved the kernel response functions to a more appropriate place. 2015-07-27 15:55:14 +10:00