Commit Graph

294 Commits

Author SHA1 Message Date
wiz 67ff3d242e Punctuation markup nit. 2008-05-25 19:38:21 +00:00
wiz 682d8063bf Remove trailing whitespace. 2008-05-25 19:38:14 +00:00
pooka 73bad8cbdb Reserve enough memory for ops which return more than they receive. 2008-03-20 15:28:03 +00:00
pooka 04973f7441 When reading a request from the kernel, only allocate as much memory
as needed to read a request instead of the maximum message size.
Insanely enough, this makes "cheap backend I/O" file systems such
dtfs and sysctlfs perform 10-30% better (depending on the average
size of incoming requests).
2008-01-29 14:54:08 +00:00
pooka 98d94502be whoops, bump date - pretty significant change 2008-01-29 10:15:50 +00:00
pooka be5ed87c1e Fix a weirdosity in the framebuf gotfb interface: hand buffer
ownership to the called routine instead of keeping it.  This means
that callees must now destroy the buffer once they are done with it.
2008-01-29 10:07:29 +00:00
pooka 704ded372f Don't add asserts between testing and commit - especially not
if you're going to write "assert(foo = 0)"
2008-01-28 18:51:03 +00:00
pooka 7c2ddc1d53 Bump version for lazy contexts (probably not necessary, but it's
been a long time since I bumbed the version ;)
2008-01-28 18:42:09 +00:00
pooka d1d05d65b9 Implement lazy contexts for file systems using puffs_mainloop().
Previously each request was executed on its own callcontext and
switched to every time the request was being processed.  Now requests
borrow the mainloop context and switch only if/when they yield.
This takes two context switches away from a file system request
bringing down the typical amounts 2->0 (e.g. dtfs) and 4->2 (e.g.
psshfs).

The interfaces for manually executing requests changed a bit:
puffs_dispatch_create() and puffs_dispatch_exec() must now be used.
They are not tested, as nothing in-tree wants them and I doubt
anyone else is really interested in them either.

Also do some misc code cleanup related to execution contexts.  The
"work-in-progress checkpoint" committed over a year ago was starting
to look slightly weed-infested.
2008-01-28 18:35:49 +00:00
pooka e9ff674b00 For operations with a target (remove, rmdir, link), print the
target cookie.
2008-01-27 00:29:24 +00:00
pooka c142350bc6 Fix fakecc case.
Noticed by Pavel Jirout on current-users
2008-01-17 17:43:14 +00:00
pooka 9f5abca72f Comment out the puffs_executor hacks for now, they have races.
The issue should be solved in another fashion anyway.
2008-01-16 23:17:43 +00:00
pooka 614c59fcb2 Cache a number of execution contexts instead of re-initializing
them every time.  Speeds up pure in-memory file systems such as
sysctlfs or dtfs quite a bit.  For actual I/O-workhorses the result
is of course less tasty.
2008-01-16 21:29:59 +00:00
pooka 3a433fe13b Use PROT_NONE page to protect bottom of stack from overrun 2008-01-16 00:29:42 +00:00
pooka d7412d56b1 Introduce PUFFS_STACKSIZE_MIN to avoid overloading 0 and getting
a warning from the library when really wanting to say "just the
minimum, please".
2008-01-14 13:57:26 +00:00
pooka 1309a27c5e liberate gas-huffin crack-puffin' assert 2008-01-08 00:22:31 +00:00
pooka cf16702d95 fix pasto 2008-01-02 18:11:01 +00:00
pooka b181a1a237 Also pass fromname in the "distributed" case. 2008-01-02 17:57:51 +00:00
pooka 636e495315 Provide some transparent "support" for "distributed" file systems.
If the env variable PUFFS_COMFD is set, the descriptor value
contained in it is used for communication instead of opening
/dev/puffs and doing mount(2).

This feature is obviously very undocumented and should not be used
without adult supervision.
2008-01-02 14:27:42 +00:00
pooka 38a05cc07d Flesh this out a bit more. Unfortunately it's still unfinished,
and I don't know when I'll get a chance to finish it.
2007-12-27 18:50:42 +00:00
pooka c3b193c57f Add a public interface for setting a cookie mapper. 2007-12-25 20:38:01 +00:00
pooka 80ecfb9fc9 * dump r/w return resid
* fix RV dump order to be more logical
2007-12-25 20:36:53 +00:00
pooka a8e13cb420 Add generic getattr routine. 2007-12-19 14:01:16 +00:00
pooka 08c7b6138e * nuke puffs_cc_get{specific,usermount} for good
* move prototypes for puffs_docc and puffs_dopufbuf into the
  public header, as they are should be exposed
2007-12-16 20:02:57 +00:00
pooka 369391b0a0 Clarify that link_target in node_symlink is null-terminated. 2007-12-16 19:10:58 +00:00
pooka 049d39b202 document puffs_dopufbuf 2007-12-15 20:11:38 +00:00
pooka 96294df307 update to match reality 2007-12-15 20:08:06 +00:00
pooka d24dc71203 nuke #define whose purpose has ceased to be 2007-12-11 20:17:26 +00:00
pooka 6617b3099a print newnode cookie value for operations which create nodes 2007-12-09 16:54:17 +00:00
pooka 319ddafdc5 Now that "l" is gone both as an argument to operations and from
componentname, remove all vestiges of puffs_cid.
2007-12-08 19:57:02 +00:00
wiz 397b6da020 Fix typo, remove superfluous minus and describe "fd" as file descriptor
in two places.
2007-12-08 10:56:06 +00:00
pooka dc3259d60e puffs_cc_getusermount(), puffs_cc_getspecific() and puffs_docc() are dead. 2007-12-07 14:55:12 +00:00
pooka 9bc20dea14 free flushbuffer after use 2007-12-05 18:55:19 +00:00
pooka 7d5d7f4ff9 Send a response message for flush operations from the kernel instead
of abusing the return value of write(2).
2007-12-05 12:11:56 +00:00
pooka ca8fca7bb9 inverse inverse logic 2007-12-05 11:06:05 +00:00
pooka 8dad772fa4 apply previous in a more readable way 2007-12-05 10:13:37 +00:00
dogcow 96302ffc73 "fix" complaints about type-punned pointers with some icky casts. 2007-12-05 04:29:10 +00:00
pooka 61113f40fd Part 3/n of extensive changes to message handling:
Get rid of the original puffs_req(3) framework and use puffs_framebuf(3)
instead for file system requests.  It has the advantage of being
suitable for transporting a distributed message passing protocol
and therefore us being able to run the file system server on any
host.

Ok, puffs is not quite here yet: libpuffs needs to grow request
routing support and the message contents need to be munged into a
host independent format.  Saying which format would be telling,
but it might begin with an X, end in an L and have the 13th character
in the middle.  Keep an eye out for the sequels: Parts 3+m/n.
2007-12-04 21:24:10 +00:00
pooka cf878f1627 add flushops 2007-12-04 20:03:40 +00:00
pooka 661a5edd0a tyop: reserver -> reserve 2007-12-04 19:40:45 +00:00
pooka 2049bce7a5 realloc() len+incr, not offset+incr. Makes space reservation
actually work properly.
2007-12-04 17:21:24 +00:00
wiz 1746ee1de1 Add comma in enumeration. Punctuation nits. Fix a typo. 2007-12-02 22:05:51 +00:00
wiz 6db764bae5 Add comma in enumeration. 2007-12-02 19:43:10 +00:00
wiz 9429ef03ff Fix another persistent spello. 2007-12-01 19:54:01 +00:00
wiz 0b6ffdfedb Fix a typo that has migrated across files. 2007-12-01 19:18:49 +00:00
pooka c8c3c477bb fix gotframe signature to match code 2007-12-01 18:59:36 +00:00
wiz 8498f992c4 Typo fixes. 2007-12-01 18:53:28 +00:00
pooka 21913eabe5 Rototill.
Ok, ok, a few more words about it: stop holding puffs_cc as a holy
value and passing it around to almost every possible place (popquiz:
which kernel variable does this remind you of?).  Instead, pass
the natural choice, puffs_usermount, and fetch puffs_cc via
puffs_cc_getcc() only in routines which actually need it.  This
not only simplifies code, but (thanks to the introduction of
puffs_cc_getcc()) enables constructs which weren't previously sanely
possible, say layering as a curious example.

There's still a little to do on this front, but this was the major
fs interface blast.
2007-11-30 19:02:28 +00:00
pooka aadcb17f11 * allocate pcc as a slice from the stack instead of allocating it
separately
* provide puffs_cc_getcc()

This is in preparation for the removal of you-should-guess-what as
an argument to routines here and there and everywhere.
2007-11-29 17:47:54 +00:00
pooka 73a538eac2 print mode in open 2007-11-29 17:22:04 +00:00