summaryrefslogtreecommitdiff
path: root/sys/nfs/nfs_vnops.c
AgeCommit message (Collapse)Author
2008-12-24Replace the TRUE/FALSE defines with 1/0 respectively. This doesn'tThordur I. Bjornsson
hurt readability and it was just plain annoying seeing them defined in every other .c file. OK blambert@
2008-10-16Don't hide the fact that NFS uses vop_generic_* functions behindBret Lambert
#define's in nfs_var.h ok thib@
2008-09-12provide a NOTE_TRUNCATED kq hint in nfs_setattr() if the fileThordur I. Bjornsson
shrinks, same thing as UFS does. ok/pointers pedro@ ok blambert@
2008-08-21Fix 'if ();' construction introduced in last commit, okay deraadt@Pedro Martelletto
2008-08-09o nfs_vinvalbuf() is always called with the intrflag as 1, and thenThordur I. Bjornsson
checks if the mount is actually interrutable, and if not sets it 0. remove this argument from nfs_vinvalbuf and just do the checking inside the function. o give nfs_vinvalbuf() a makeover so it looks nice. (spacing, casts, &c); o Actually pass PCATCH too tsleep() if the mount it interrutable. ok art@, blambert@
2008-08-08After beck@ changed the way nfsiod's are notified of work, theBret Lambert
nfs_iodwant array became unused. Garbage collect and free up a few bytes. ok thib@
2008-08-08Remove code for variable-sized allocations of NFS filehandles by malloc(),Bret Lambert
as it was never used because there were 64-bit buffers already allocated for filehandles in nfsnode structs. ok thib@
2008-07-25much more correct way of dealing with nfs pending reads/writesBob Beck
ok thib@
2008-07-23make this real CTheo de Raadt
2008-07-23Correct cases of mishandling of pending reads and writes to preventBob Beck
them going negative - this consists of identifying a number of cases of IO not going through the buffer cache and marking those buffers with B_RAW - as well as fixing nfs_bio to show pending writes and reads through the buffer cache via NFS still has a problem with mishandling the counters I believe in the async/sync fallback case where counters stay positive which will be addressed seperately. ok tedu@ deraadt@
2008-07-23 - in nfs_mknodrpc - initialize the node we pass to nfs_lookitup. It'sArtur Grabowski
not just a return value, nfs_lookitup treats it specially when *npp is not NULL. - nfs_lookitup - When we match the file handle to the directory filehandle (lookup on '.'), initialize np so that we don't return stack garbage to the caller. The function shouldn't ever be called with '.' at this moment, but that's no reason to not do the right thing in case future callers use it that way. blambert@ thib@ ok
2008-07-06remove #ifndef nolint gooThordur I. Bjornsson
ok blambert@
2008-06-14Replace nfsm_build/bcopy with nfsm_{buf,str}tombuf functions inBret Lambert
filehandle -> mbuf write macros. Removes `magic' variable cp which was used only in these macros, and should lead to marginally better mbuf packing as well. `slap it in' thib@
2008-06-13Kill one-liner macro which obfuscated mbuf pointer assignment.Bret Lambert
Rescue nfsm_reqhead macro name and rename nfsm_reqh. End of one-liners from nfsm_subs.h. ok thib@
2008-06-13nuke a bunch of bogus ARGSUSED;Thordur I. Bjornsson
ok blambert@
2008-06-12Remove now-vestigial bpos pointer from NFS. For building outgoingBret Lambert
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...)
2008-06-12Bring biomem diff back into the tree after the nfs_bio.c fix went in.Theo de Raadt
ok thib beck art
2008-06-11back out biomem diff since it is not right yet. Doing very largeTheo de Raadt
file copies to nfsv2 causes the system to eventually peg the console. On the console ^T indicates that the load is increasing rapidly, ddb indicates many calls to getbuf, there is some very slow nfs traffic making none (or extremely slow) progress. Eventually some machines seize up entirely.
2008-06-11Canonical for() -> queue.h FOREACH macro conversions.Bret Lambert
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
2008-06-10o Avoid putting duplicate entries into the name cache,Thordur I. Bjornsson
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@
2008-06-10Buffer cache revampBob Beck
1) remove multiple size queues, introduced as a stopgap. 2) decouple pages containing data from their mappings 3) only keep buffers mapped when they actually have to be mapped (right now, this is when buffers are B_BUSY) 4) New functions to make a buffer busy, and release the busy flag (buf_acquire and buf_release) 5) Move high/low water marks and statistics counters into a structure 6) Add a sysctl to retrieve buffer cache statistics Tested in several variants and beat upon by bob and art for a year. run accidentally on henning's nfs server for a few months... ok deraadt@, krw@, art@ - who promises to be around to deal with any fallout
2008-06-09Update access(2) to have modern semantics with respect to X_OK andTodd C. Miller
the superuser. access(2) will now only indicate success for X_OK on non-directories if there is at least one execute bit set on the file. OK deraadt@ thib@ otto@
2008-05-08retire vn_default_error() and replace all instancesThordur I. Bjornsson
with eopnotsupp() instead; ok blambert@
2008-04-22Remove kludges that map EEXIST errors too a 0 return (success) for certainThordur I. Bjornsson
operations (non-idempotent ones) under the assumption that the reply from the server is for a duplicate of the original request. However, most (all) NFS server today have a duplicate reply cache that address this problem and these kludges have been shown to cause problems with some applications (most notably dovecot as pointed out by brad@). For more information: http://lists.freebsd.org/pipermail/freebsd-current/2007-November/079961.html And revision 1.277 of sys/nfsclient/nfs_vnops.c in FreeBSD. Diff from rwatson@freebsd.org OK blambert@, "no objections" krw@ tested by many;
2008-04-14Rework NFS mbuf write routines:Bret Lambert
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@
2008-01-06More NFS-related kernel shrinkage...Bret Lambert
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.
2007-12-13convert massive (expanded to 150+ lines) nfsm_v3attr macro to a functionBret Lambert
shaves an insane (~8K) amount from an i386 kernel ok thib@
2007-09-26nfsm_uiotom macro does nothing but hide error-handling code; replaceBret Lambert
inline in the one place that it's called ok thib@, weingart@ "I don't see why not" fgsch@
2007-09-20MALLOC/FREE -> malloc/free + M_ZERO.Thordur I. Bjornsson
Uneeded includes and casts... ok krw@
2007-09-11Replace nfsm_reqdone and nfsm_srvdone macros inline. No binary change.Bret Lambert
ok thib@
2007-06-01pedro ok'd this ~3500 line diff which removes the vop argumentTheo de Raadt
"ap = v" comments in under 8 seconds, so it must be ok. and it compiles too.
2007-06-01daddr_t -> daddr64_t;Thordur I. Bjornsson
Basically the usage of daddr_t was to math out arguments to nfs_getcacheblk, wich calls getblk(); ok deraadt@
2007-03-18get rid of noop vop_reallocblks; pedro@ miod@ okMichael Shalayeff
2007-02-23backout previous revision -- on nfs2 mounts (perhaps only automounted?) itTheo de Raadt
tends to .nfs silly files lying around during high filesystem activity. whatever bug it was trying to fix, it made things worse.
2007-01-21don't assume our directory vnode will be flushed out after us, fixesPedro Martelletto
crash when unmounting nfs volumes, okay thib@, krw@ and mickey@
2007-01-16Retire VOP_LEASE(); It was a bit for NQNFS and hasThordur I. Bjornsson
effectively been a no-op for quite some time now, without promise for future usage. ok pedro@ Testing by krw@ (earlier diff) and Johan Mson Lindman (tybollt@solace.miun.se)
2006-12-29Avoid void * arithmetic, okay deraadt@, suggestions from millert@Pedro Martelletto
2006-12-06nfs_readdirplusrpc():Thordur I. Bjornsson
Replace the pointer aerobics used to construct the namecache hash with a more saner approach since the former could lead to a null deref (PR5305). Also make sure that the current buf is bigenough before caching the current entry. comments&ok pedro@
2006-04-26In nfs_readdir(), if the buffer provided by the user is not big enoughPedro Martelletto
to hold all the entries a directory has, we can't signal EOF. Okay deraadt@ and miod@.
2006-04-20Remove unused debug code that sneaked in by accident long agoPedro Martelletto
2005-09-29toast cast of lvalue; pr 4289Theo de Raadt
2005-04-21careful strlcpy and snprintf return handling; ok pedro beckTheo de Raadt
2004-08-03NFS commit coalescion: instead of sending a commit for each block, coalescemarius eriksen
these into larger ranges wherever possible. this should speed up NFS writes quite a bit. ok art@ millert@ pedro@ tedu@
2004-07-21kqueue support for NFS, adapted from netbsd.marius eriksen
ok art@ pedro@, "get it in" deraadt@
2004-06-24This moves access to wall and uptime variables in MI code,Thorsten Lockert
encapsulating all such access into wall-defined functions that makes sure locking is done as needed. It also cleans up some uses of wall time vs. uptime some places, but there is sure to be more of these needed as well, particularily in MD code. Also, many current calls to microtime() should probably be changed to getmicrotime(), or to the {,get}microuptime() versions. ok art@ deraadt@ aaron@ matthieu@ beck@ sturm@ millert@ others "Oh, that is not your problem!" from miod@
2004-05-14use pool for namei pathbuf. testing ok millert@ tdeval@Ted Unangst
2004-04-26nfs_poll cannot simply be defined to seltrue so use a stub nfs_pollTodd C. Miller
duplicated from UFS. Closes PR 3757; OK deraadt@
2004-03-02silly fifos aren't a real fs, so we have to be sure to call reclaimTed Unangst
in the host fs.
2004-02-27Defer use of NFS_ISV3 macro in nfs_link until sanity checks have been done.Todd C. Miller
Fixes a panic that can occur when trying to link from a local filesystem to an nfs-mounted one. Problem pointed out by Jim Rees, fix exists in Net and Free. OK tedu@ csapuntz@
2003-09-23Replace select backends with poll backends. selscan() and pollscan()Todd C. Miller
now call the poll backend. With this change we implement greater poll(2) functionality instead of emulating it via the select backend. Adapted from NetBSD and including some changes from FreeBSD. Tested by many, deraadt@ OK