Age | Commit message (Collapse) | Author |
|
have been resolved.
|
|
OK oga@, beck@, matthew@
|
|
vector setup that has questionable features (that have, as far as I can
tell never been used in practice, atleast not in OpenBSD), remove all
the gunk and favor a simple struct full of function pointers that get
set directly by each of the filesystems.
Removes gobs of ugly code and makes things simpler by a magnitude.
The only downside of this is that we loose the vnoperate feature so
the spec/fifo operations of the filesystems need to be kept in sync
with specfs and fifofs, this is no big deal as the API it self is pretty
static.
Many thanks to armani@ who pulled an earlier version of this diff to
current after c2k10 and Gabriel Kihlman on tech@ for testing.
Liked by many. "come on, find your balls" deraadt@.
|
|
sync a few comments to reality (or remove them), remove the cn_hash member
from struct componentname, spacing.
ok beck@
|
|
no binary change apart from nfsm_reqhead() which is clearly correct.
ok thib@
|
|
problem noticed by deraadt@
ok beck@
|
|
also make the rexmit timeout per nfsmount, and make sure to start/stop the
timer appropriately.
now the nfs_timer() only fires if there is work todo, not always at nfs_ticks
(it did, even if there where no nfsmounts in the system!).
OK blambert@
|
|
each mount, and when work is "found", peg an aiod to that mount todo the
I/O. Make nfs_asyncio() a bit smarter when deciding when to do asyncio
and when to force it sync, this is done by keeping the aiod's one two lists,
an "idle" and an "all" list, so asyncio is only done when there are aiods
hanging around todo it for us or are already pegged to the mount.
Idea liked by at least beck@ (and I think art@).
Extensive testing done by myself and jasper and a few others on various
arch's.
Ideas/Code from Net/Free.
OK blambert@.
|
|
ok thib@
|
|
use mbufs directly, but the shiny new nfsm_info struct
ok thib@
|
|
Idea from NetBSD.
OK blambert@
|
|
but extensive performance benchmarking done by myself and jasper@
has shown that it doesn't help, at all - even on vaxens and in some
cases it makes things significantly slower.
"this excites me sexually" jetpack@
Tested by jasper@.
OK blambert@
|
|
to keep the data munging "state" into an nfsm_info structure. Each
function now has this structure on its stack, and it and its members
are now passed around so that the macros/functions can work there magic.
this will make removing the nfsm_* macros way easier.
Idea/code picked up from DragonflyBSD.
Tested by krw@, jacekm@ and myself.
OK blambert@.
|
|
OK blambert@
|
|
which is exactly what the macro does.
Macro's that are nothing more then:
#define FUNCTION(arg) function(arg)
are almost always pointless and should go away.
OK blambert@
Agreed by many.
|
|
OK blambert@ sometime ago
|
|
usefull, and has been disabled for a long long time.
Cleans house a bit.
OK blambert@
|
|
In snaps for a while (way too long, according to deraadt@)
|
|
In snaps for a while.
|
|
mtime, gives us better granularity, helps with cache consistency.
Idea lifted from NetBSD.
OK blambert@
|
|
requires well-formed mbuf chains to work. Existing function name is now
a wrapper to this interface. Much, much more work to follow which will
build on this.
Truly change we can believe in.
ok thib@, who would have preferred this in two commits, but I'm impatient :)
testing on multiple arches (i386, arm, amd64, and sparc64 at least) by many,
thanks to all who did so
|
|
ok millert@ tedu@
|
|
another comment.
|
|
hurt readability and it was just plain annoying seeing them defined
in every other .c file.
OK blambert@
|
|
|
|
changes, okay beck@, tedu@ and thib@.
|
|
nfs_iodwant array became unused. Garbage collect and free up
a few bytes.
ok thib@
|
|
ok blambert@
|
|
ok blambert@
|
|
Rescue nfsm_reqhead macro name and rename nfsm_reqh.
End of one-liners from nfsm_subs.h.
ok thib@
|
|
|
|
the function it was named after took 4 arguments instead of 2.
"get it in; get it in; get it in" thib@
|
|
NFS mbufs, mbufs now contain all their internal buffer state internally,
the way god intended.
ok thib@
testing johan@ (and possibly merdely@; this diff's been around for a bit...)
|
|
variable;
ok & feedback deraadt@
|
|
add a function to handle cache_enter()'s for us since
we need to update the appropriate timestamps so we don't
miss on lookup;
o Do not purge the dvp in nfs_rmdir(), since there's no need;
o cache the new entry created in nfs_mkdir();
o Do caching of the access modes, this drastically reduces the
amount of over the wire access RPCs we do in the NFSv3 case.
This diff was written by Pedro Martelletto, sometime in 2004.
A lot of people have been running with it at one time or another,
this includes at least markus and matthieu.
OK deraadt@, blambert@
|
|
nfsm_* functions are for mbufs
|
|
near maximal (2^32) cycle times. These are useful for network
IDs in cases where there are negative consequences to ID prediction
and/or reuse.
Use the idgen32() functions to generate IPv6 IDs and NFS client/server
XIDs.
Pseudorandom permutation code in crypto/idgen.c based on public
domain skip32.c from Greg Rose.
feedback & ok thib@ deraadt@
|
|
(the latter only had it to pass it to nfsrv_fhtovp()).
appropriate cleanup also;
ok blambert@
|
|
len exceeds MLEN, not MINCLSIZE; inspired by a similar
commit from damien.
ok damien@, blambert@
|
|
power of two.
use arc4random_bytes() when requesting more than a word of PRNG
output.
ok deraadt@
|
|
allocate a mbuf cluster only if length is greater than MLEN
instead of MINCLSIZE.
ok blambert@, thib@
|
|
nfsm_uiotombuf():
- no meaningful return, function becomes void
- replace frankensteined uiomove/MGET with actual call to uiomove
nfsm_strtmbuf():
- no meaningful return, becomes void
- rename and reorder parameters to be consistent with other functions
- becomes wrapper to nfsm_uiotombuf
nfsm_buftombuf():
- new function; unused but slated for future use
- wrapper to nfsm_uiotombuf
As a bonus, making these functions void removes much unneeded code and
garbage collects `magic' variable t2 which was only used (invisibly)
by the macros from nfsm_subs.h
Preps the way for removing much more NFS goo...
testing by myself, thib@ and merdely@
ok thib@
|
|
When you use a macro ~200 times, it tends to bloat your code, so make a
function out of it.
Shaves ~8.5 kB from my kernel.
ok thib@, "looks good" krw@
In snaps for 1+ week with no negative reports.
|
|
shaves an insane (~8K) amount from an i386 kernel
ok thib@
|
|
make stat(2) return st_blocksize thats a bit closer
to reality.
From NetBSD;
OK art@, beck@, tedu@
|
|
#ifdef goo.
ok krw@, blambert@
|
|
Cleanup and partly redo the way we create the RPC header, by having
nfsm_rpchead() do a bit more work. Right now this is pretty RPCAUTH_UNIX
centric, but since it is the only auth method we support right now thats
fine.
Make sure we can never generate a zero xid, thats forbidden by the RFC.
Misc cleanup.
tested by a few.
|
|
dependency on ELAST; ok miod thib
|
|
|
|
Uneeded includes and casts...
ok krw@
|