Age | Commit message (Collapse) | Author |
|
no binary change apart from nfsm_reqhead() which is clearly correct.
ok thib@
|
|
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@
|
|
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@.
|
|
or wcc data if we have a proper reply.
found the hard way by ariane@, tested by ariane@.
OK blambert@
|
|
lbolt and waking up every second and checking to see if the correct
number of seconds has passed, just calculate the timeout once and
pass that to tsleep().
ok thib@
|
|
OK blambert@
|
|
sense than malloc.
ok thib@, who says the puffin still gets it either way
|
|
|
|
- Make sure to set the mbuf pointers and the dpos pointer correctly
in nfs_request() before returning an error.
- Fix potential mbufs leaks in nfs_{read,write}rpc for v2. The reply
mbuf was not being freed before the jump to nfsmout.
- Reorder error handling to prevent an error case being treated as a
non-error case.
Fixes issues noticed by sthen@ and ajacoutot@. Tested by both of them.
Reviewd by oga@
OK blambert@
|
|
if the reply is an error and retire the NFS_RETERR hack. For NFSv3 mounts
the flag was set and reply mbuf not freed to allow the callers to handle
the post-op attributes, or just free the mbuf for NFSv2.
Tested by myself and jasper@ on various arch's.
OK blambert@.
|
|
ok thib@
|
|
|
|
OK blambert@
FreeBSD commit message:
Refactor the NFS over UDP retransmit timeout estimation logic to allow
the estimator to be more easily tuned and maintained.
There should be no functional change except there is now a lower limit
on the retransmit timeout to prevent the client from retransmitting
faster than the server's disks can fill requests, and an upper limit
to prevent the estimator from taking to long to retransmit during a
server outage.
|
|
just store the maximun amount of rexmits in one place and
cleanup. Also make sure this only effects soft mounts.
OK blambert@
|
|
OK blambert@ sometime ago
|
|
usefull, and has been disabled for a long long time.
Cleans house a bit.
OK blambert@
|
|
|
|
the receiving side when passing fd's. ok deraadt@ kettenis@
|
|
timeouts. Rrids us of the ugly cur_sec variable, and some shadows.
Also helps with granularity.
Diff from blambert@ who asked me to commit this since he's away for
some days and we wanted to put this in with the timespec changes in
the nfsnode.
|
|
prompted by David <dunnoseriously _att_ gmail.com>
|
|
the udp receive space got completely filled up. Even if the next
packet from the server was a small reply, it got dropped by
udp_input(). After a second the client resent the NFS request.
Doubling rcvreserve reduces the chance of retransmits by having
enough recv space for multiple NFS replies even if there comes a
big one.
found with pedro@, ok blambert@, thib@, pedro@
|
|
of 5 cases. In the functions nfs_reconnect() and nfs_reply() put
the TAILQ_FOREACH over nfs_reqq also inside splsoftnet() protection.
found with pedro@, ok blambert@, pedro@, thib@
|
|
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
|
|
argument since all of the info we need is there, makes it and
the use it a tad bit nicer.
ok blambert@
|
|
hurt readability and it was just plain annoying seeing them defined
in every other .c file.
OK blambert@
|
|
blambert@--
Real solution is to fix NFS mbuf handling.
|
|
ok thib@
|
|
ok blambert@
|
|
|
|
a) we're attempting to wake a specific process which
b) sleeps on a unique address
which means that there's no need to continue traversing the sleep
queue once the process has been found and awakened.
"looks good too me" thib@
|
|
(its never set).
"please kill it" blambert@
|
|
ok blambert@
|
|
rest of NFS code, canonical for() -> LIST_FOREACH() change, minor
readability changes.
ANSIfy function while here.
ok thib@
|
|
to support authentication other than AUTH_UNIX will replace this
with a (hopefully) much better system.
ok 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...)
|
|
Also, it is historical practice to #include <sys/queue.h>
when using queue.h macros.
ok thib@ krw@
special thanks to krw@ for reminders vice violence
|
|
get hung in nfs_reconnect() because they do not have the proper
privilages to bind to a socket, by adding a struct proc * argument
to sobind() (and the *_usrreq() routines, and finally in{6}_pcbbind)
and do the sobind() with proc0 in nfs_connect.
OK markus@, blambert@.
"go ahead" deraadt@.
Fixes an issue reported by bernd@ (Tested by bernd@).
Fixes PR5135 too.
|
|
already been received while we slept. prevents processes from
monopolising the lock.
From FreeBSD;
ok blambert@
tested by johan@ and a few others
|
|
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.
|
|
as NULL, so make sure its non-NULL before attempting
to reference it.
Fixes PR5694; Confirmed by submitter.
OK art@, krw@
|
|
variables, that are declared all over, since they are passed via macros
to nfs_rephead(); which doesn't do anything with it.
OK krw@
|
|
ok art@, blambert@
|
|
NQNFS leftover.
ok miod@,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.
|
|
ok thib@ henning@ art@
|
|
Uneeded includes and casts...
ok krw@
|
|
(2 -> SHUT_RDWR in calls to soshutdown()).
From Iruata Souza.
ok deraadt@
|
|
nfsv2 client case, this matches v3 behaviour to that extent.
This is to work around the fact that when the namecache is large, we
dont purge vnodes correctly out of it.
ok beck@,pedro@
|
|
and recover for the client case (or terminate with EINTR if to many retries),
and in the server case, if we cant send due to f.x network troubles its up to
the client to retry not the server.
(server not responding messages are logged in another place though).
discussed with deraadt@
|