Commit Graph

124 Commits

Author SHA1 Message Date
christos
a17e2f9d4b use a switch. 2018-06-30 16:05:44 +00:00
dholland
32cded6cc9 Typos. 2018-02-08 09:05:16 +00:00
christos
2b98159f0b fix error messages (use __func__, quotes)
also differentiate between canonical and non-relative.
2017-11-05 15:33:15 +00:00
christos
79e2355ab8 Adjust to prototype. 2017-05-31 17:56:00 +00:00
christos
5521b51a7a fix error messages 2015-06-17 00:15:26 +00:00
manu
8ee430e576 Do not warn about relative path because of trailing slash
libpuffs calls realpath() to obtain an absolute path to use for mounting.
If the obtained path is different from the one given by the caller, a
warning is issued. This included the situation where the path passed by
the caller just have trailing slashes, a situation where we just want them
to be striped without a warning.
2014-12-22 08:16:21 +00:00
manu
cf73d5332b libpuffs support for fallocate and fdiscard operations 2014-10-31 13:56:04 +00:00
chs
81742ac3ab fix crashes caused by using the results of getcontext()
after the caller returns.
2011-11-14 01:27:42 +00:00
manu
7f87f63c56 Call advlock method if supplied 2011-05-03 13:16:47 +00:00
pooka
248168affc Remove PUFFS_WITH_THREADS ifdef garbage, just use libc weak symbols. 2010-12-06 14:50:34 +00:00
pooka
54aeac7f90 unwhine lint 2010-07-06 21:58:18 +00:00
pooka
d8a0b8cdce stat mount target path only if we're actually goint to use it.
This avoids errors from the comfd case when the mount target does
not exist in our local namespace.
2010-07-06 18:22:20 +00:00
pooka
a6b3b71bb8 set time_t compat where necessary 2010-07-06 18:01:14 +00:00
pooka
afdc25dbdf When using the top secret PUFFS_COMFD model, write out size of the
puffs kernel args before the contents.  This allows parties which
have no clue about the contents to proxy the protocol easily.
2010-07-06 13:27:16 +00:00
pooka
0e05405bd1 Reenable pathconf now that the retval argument is register_t. 2010-06-07 11:22:36 +00:00
pooka
a7bb34b4fd Actually, disable pathconf for a while longer: the retval needs a
little finetuning (not that everyone is jumping right to using it,
but fixing will have to wait until tomorrow, and who knows what
i'll forget during the night and how long it will eventually take).
2010-06-06 23:11:05 +00:00
pooka
aef13c83d0 signal pathconf in the vector of supported ops 2010-06-06 22:44:54 +00:00
pooka
c3be8a8cd5 * support extended attributes
* bump major due to structure growth
* add some spare space
* remove ABI sillyness
2010-05-21 10:50:52 +00:00
pooka
f6e5cf7c15 remove three years out-of-date comment 2010-05-19 12:16:45 +00:00
pooka
b95be6c682 Add convenience routine puffs_unmountonsignal(), which does exactly that. 2010-01-12 18:42:38 +00:00
pooka
ffe194d485 Use typecast instead of ULL for a less whiny lint on LP64. 2010-01-07 23:03:26 +00:00
pooka
cf755ff393 Rewrite puffs_exit() in terms of the PUFFSOP_UNMOUNT kernel request.
Now server exit is a lot quite cleaner than previously.
2010-01-07 22:49:19 +00:00
pooka
b3cd880417 Set high bit on server->kernel requests to better differentiate
between the direction of the request.
2010-01-07 22:40:11 +00:00
pooka
7431f4f63d Add an error handler which syslogs but does not abort() and make it
the default.  Most servers just shovel bits from their backend to
the kernel without checking the contents and dumping core in case
the backend gives garbage is a bit harsh.
2009-12-05 20:54:10 +00:00
pooka
0f699dcf1d Make it possible to supply parameters to puffs_init() later (but
before puffs_mount()).
2009-10-18 19:09:20 +00:00
pooka
75008bfc31 Dispatch puffs_node_abortop().
Note: We use the storage of puffs_cache_write from puffs_ops for
this purpose.  It's not issued by the kernel and hence currently
unused, and this saves us from the trouble of bumping the lib major
version.
2009-10-17 23:19:52 +00:00
lukem
bbdbf3e294 fix some sign comparison warnings 2009-01-08 02:28:08 +00:00
dsl
e8915d2e05 Actually we need 'long int' to avoif a stupid 'truncating long to int'
warning.
2008-12-13 11:53:25 +00:00
dsl
abd4a7f6d0 Change type of 'n' to 'int' so that it can be printed with %d.
The domain of the value is [-1..sizeof (int)] so a type of 'int' is fine.
2008-12-13 11:48:46 +00:00
pooka
a75f7c7343 Close write-end of daemonpipe in reader to get EOF if the writer
goes awol.
2008-12-12 19:56:12 +00:00
pooka
33a0d776c1 Add puffs_cancel(), which allows to back down after puffs_init()
and before puffs_mount().
(this should actually be integrated with puffs_exit(), but that
routine is currently so non-sensible that I didn't bother now)
2008-12-12 19:45:16 +00:00
pooka
41f31dac6d add:
puffs_setspecific(pu, private)
	Can be used to set the specific data after the call to
	puffs_init().
2008-12-12 18:59:53 +00:00
pooka
ff42332733 Replace void * by puffs_cookie_t where appropriate. No functional change. 2008-08-12 19:44:39 +00:00
pooka
71043aa4cb clear cached puffs_cc's in puffs_exit() 2008-08-11 16:23:37 +00:00
pooka
7602ecfa8f * make sure we come out of mainloop in the main context. otherwise in
certain cases the server would jump to hyperspace when unmounted
* sprinkle some debug prints
2008-08-11 15:59:01 +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
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
c3b193c57f Add a public interface for setting a cookie mapper. 2007-12-25 20:38:01 +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
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
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
7568ff51e1 print more info when receiving an abort 2007-11-26 12:20:21 +00:00
pooka
4b2334142b puffs_mount():
* initialize values better
* always go through "fail" to see if puffs_daemon() needs to be
  woken up
* open device r/w instead of r/o
2007-11-17 16:06:18 +00:00
pooka
3537e99eb1 Introduce puffs_daemon(), which works like daemon(3) except that it
also synchronizes with puffs_mount() and does not return (exit) in the
parent process until the file system has been mounted.  This makes
it possible to reliably run e.g. mount_foo jippi /kai ; cd /kai/ee
2007-11-16 18:35:10 +00:00