aboutsummaryrefslogtreecommitdiff
path: root/sys/nfsclient
Commit message (Collapse)AuthorAgeFilesLines
* Place hostnames and similar information fully under the prison system.Jamie Gritton2009-05-292-14/+10
| | | | | | | | | | | | | | | | | | | | The system hostname is now stored in prison0, and the global variable "hostname" has been removed, as has the hostname_mtx mutex. Jails may have their own host information, or they may inherit it from the parent/system. The proper way to read the hostname is via getcredhostname(), which will copy either the hostname associated with the passed cred, or the system hostname if you pass NULL. The system hostname can still be accessed directly (and without locking) at prison0.pr_host, but that should be avoided where possible. The "similar information" referred to is domainname, hostid, and hostuuid, which have also become prison parameters and had their associated global variables removed. Approved by: bz (mentor) Notes: svn path=/head/; revision=193066
* Make *getpages()s' assertion on the state of each page's dirty bitsAlan Cox2009-05-281-1/+1
| | | | | | | stricter. Notes: svn path=/head/; revision=192986
* Make sure we feed 32bit align memory to nfsm_dissect otherwise we will faultDoug Rabson2009-05-241-1/+73
| | | | | | | | | | | | | on platforms with strict alignment requirements. In particular, this fixes the problems with the new RPC transport on the arm platform. Note: this adds yet another copy of nfs_realign(). I will attempt to refactor after NFS_LEGACYRPC is removed. Submitted by: sam Notes: svn path=/head/; revision=192686
* While r192615 fixed the former problems, make this file VIMAGEBjoern A. Zeeb2009-05-231-0/+3
| | | | | | | compliant now as well initializing local context variables. Notes: svn path=/head/; revision=192645
* It seems this file was ignored by MRT, rnh locking changes and new-arpv2.Bjoern A. Zeeb2009-05-231-17/+3
| | | | | | | | | | | So let the V_irtualization people finally make the disabled debugging code compile again. MFC after: 2 weeks X-MFC: MRT and adapt rnh locking Notes: svn path=/head/; revision=192615
* Remove the unmaintained University of Michigan NFSv4 client from 8.xRobert Watson2009-05-2216-84/+10
| | | | | | | | | | prior to 8.0-RELEASE. Rick Macklem's new and more feature-rich NFSv234 client and server are replacing it. Discussed with: rmacklem Notes: svn path=/head/; revision=192578
* Eliminate unnecessary clearing of the page's dirty mask from variousAlan Cox2009-05-151-1/+3
| | | | | | | | | getpages functions. Eliminate a stale comment. Notes: svn path=/head/; revision=192134
* Eliminate gratuitous clearing of the page's dirty mask.Alan Cox2009-05-121-1/+2
| | | | Notes: svn path=/head/; revision=192010
* Remove the thread argument from the FSD (File-System Dependent) parts ofAttilio Rao2009-05-112-11/+18
| | | | | | | | | | | | | | | | | | | | the VFS. Now all the VFS_* functions and relating parts don't want the context as long as it always refers to curthread. In some points, in particular when dealing with VOPs and functions living in the same namespace (eg. vflush) which still need to be converted, pass curthread explicitly in order to retain the old behaviour. Such loose ends will be fixed ASAP. While here fix a bug: now, UFS_EXTATTR can be compiled alone without the UFS_EXTATTR_AUTOSTART option. VFS KPI is heavilly changed by this commit so thirdy parts modules needs to be recompiled. Bump __FreeBSD_version in order to signal such situation. Notes: svn path=/head/; revision=191990
* Eliminate stale comments.Alan Cox2009-05-101-6/+1
| | | | | | | Eliminate a case of unnecessary page queues locking. Notes: svn path=/head/; revision=191964
* Change the curvnet variable from a global const struct vnet *,Marko Zec2009-05-051-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | previously always pointing to the default vnet context, to a dynamically changing thread-local one. The currvnet context should be set on entry to networking code via CURVNET_SET() macros, and reverted to previous state via CURVNET_RESTORE(). Recursions on curvnet are permitted, though strongly discuouraged. This change should have no functional impact on nooptions VIMAGE kernel builds, where CURVNET_* macros expand to whitespace. The curthread->td_vnet (aka curvnet) variable's purpose is to be an indicator of the vnet context in which the current network-related operation takes place, in case we cannot deduce the current vnet context from any other source, such as by looking at mbuf's m->m_pkthdr.rcvif->if_vnet, sockets's so->so_vnet etc. Moreover, so far curvnet has turned out to be an invaluable consistency checking aid: it helps to catch cases when sockets, ifnets or any other vnet-aware structures may have leaked from one vnet to another. The exact placement of the CURVNET_SET() / CURVNET_RESTORE() macros was a result of an empirical iterative process, whith an aim to reduce recursions on CURVNET_SET() to a minimum, while still reducing the scope of CURVNET_SET() to networking only operations - the alternative would be calling CURVNET_SET() on each system call entry. In general, curvnet has to be set in three typicall cases: when processing socket-related requests from userspace or from within the kernel; when processing inbound traffic flowing from device drivers to upper layers of the networking stack, and when executing timer-driven networking functions. This change also introduces a DDB subcommand to show the list of all vnet instances. Approved by: julian (mentor) Notes: svn path=/head/; revision=191816
* Remove redundant NFSMNT_NFSV3 check in DTrace hooks for NFS RPC.Robert Watson2009-05-041-2/+1
| | | | | | | MFC after: 1 month Notes: svn path=/head/; revision=191777
* Fix typo in comment.Robert Watson2009-05-041-1/+1
| | | | | | | MFC after: 1 month Notes: svn path=/head/; revision=191776
* Remove trailing spacesKonstantin Belousov2009-04-131-2/+2
| | | | Notes: svn path=/head/; revision=191013
* Remove VOP_LEASE and supporting functions. This hasn't been used sinceRobert Watson2009-04-101-1/+0
| | | | | | | | | | | | | | | | | the removal of NQNFS, but was left in in case it was required for NFSv4. Since our new NFSv4 client and server can't use it for their requirements, GC the old mechanism, as well as other unused lease- related code and interfaces. Due to its impact on kernel programming and binary interfaces, this change should not be MFC'd. Proposed by: jeff Reviewed by: jeff Discussed with: rmacklem, zach loafman @ isilon Notes: svn path=/head/; revision=190888
* Cache_lookup() for DOTDOT drops dvp vnode lock, allowing dvp to be reclaimed.Konstantin Belousov2009-04-101-0/+2
| | | | | | | | | | | | Check the condition and return ENOENT then. In nfs_lookup(), respect ENOENT return from cache_lookup() when it is caused by dvp reclaim. Reported and tested by: pho Notes: svn path=/head/; revision=190887
* When a stale file handle is encountered, purge all cached information aboutJohn Baldwin2009-04-064-2/+26
| | | | | | | | | | | | | | an NFS node including the access and attribute caches. Previously the NFS client only purged any name cache entries associated with the file. PR: kern/123755 Submitted by: Jaakko Heinonen jh of saunalahti fi Reported by: Timo Sirainen tss of iki fi Reviewed by: rwatson, rmacklem MFC after: 1 month Notes: svn path=/head/; revision=190785
* Change the default timeout for caching attributes of a directory in the NFSJohn Baldwin2009-04-061-1/+1
| | | | | | | | | | | | | | client from 30 seconds to 3 seconds. After the recent changes to add caching of negative name cache lookups, a negative name cache hit will persist until the client notices the parent directory has changed. The higher the attribute cache timeout on directories, the longer that can take, so lower the default timeout for directories to match that of regular files. Suggested by: bde, mohans MFC after: 1 month Notes: svn path=/head/; revision=190783
* Move dtnfsclient.c in the cddl tree to nfs_kdtrace.c in the nfsclientRobert Watson2009-03-251-0/+545
| | | | | | | | | | | directory, since it's under a BSD license, and this keeps NFS internals- aware tracing parts close to NFS. MFC after: 1 month Suggested by: jhb Notes: svn path=/head/; revision=190419
* Fix two bugs in DTrace tracing of accesscache and attrcache load events:Robert Watson2009-03-243-7/+15
| | | | | | | | | | | | | | - Trace non-error loads into the access cache once, not zero times or twice. - Sometimes attr cache loads fail due to a race, in which case they are aborted leading to an invalidation; in this case, trace only the flush, not a load. MFC after: 1 month Sponsored by: Google, Inc. Notes: svn path=/head/; revision=190396
* Add DTrace probes to the NFS access and attribute caches. Access cacheRobert Watson2009-03-244-16/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | events are: nfsclient:accesscache:flush:done nfsclient:accesscache:get:hit nfsclient:accesscache:get:miss nfsclient:accesscache:load:done They pass the vnode, uid, and requested or loaded access mode (if any); the load event may also report a load error if the RPC fails. The attribute cache events are: nfsclient:attrcache:flush:done nfsclient:attrcache:get:hit nfsclient:attrcache:get:miss nfsclient:attrcache:load:done They pass the vnode, optionally the vattr if one is present (hit or load), and in the case of a load event, also a possible RPC error. MFC after: 1 month Sponsored by: Google, Inc. Notes: svn path=/head/; revision=190380
* Add dtnfsclient, a first cut at an NFSv2/v3 client reuest DTraceRobert Watson2009-03-221-0/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | provider. The NFS client exposes 'start' and 'done' probes for NFSv2 and NFSv3 RPCs when using the new RPC implementation, passing in the vnode, mbuf chain, credential, and NFSv2 or NFSv3 procedure number. For 'done' probes, the error number is also available. Probes are named in the following way: ... nfsclient:nfs2:write:start nfsclient:nfs2:write:done ... nfsclient:nfs3:access:start nfsclient:nfs3:access:done ... Access to the unmarshalled arguments is not easily available at this point in the stack, but the passed probe arguments are sufficient to to a lot of interesting things in practice. Technically, these probes may cover multiple RPC retransmits, and even transactions if the transaction ID change as a result of authentication failure or a jukebox error from the server, but usefully capture the intent of a single NFS request, such as access, getattr, write, etc. Typical use might involve profiling RPC latency by system call, number of RPCs, how often a getattr leads to a call to access, when failed access control checks occur, etc. More detailed RPC information might best be provided by adding a krpc provider. It would also be useful to add NFS client probes for events such as the access cache or attribute cache satisfying requests without an RPC. Sponsored by: Google, Inc. MFC after: 1 month Notes: svn path=/head/; revision=190293
* In nfs_request(), always exit using the nfsmout label once we'reRobert Watson2009-03-211-8/+3
| | | | | | | | | | | definitely doing an NFSv2 or NFSv3 RPC, rather than sometimes doing so and sometimes not. This makes it easier to add a DTrace return probe at a single point in the function. MFC after: 1 week Notes: svn path=/head/; revision=190220
* Expand the per-node access cache to cache permissions for multiple users.John Baldwin2009-03-203-24/+55
| | | | | | | | | | | | | | | The number of entries in the cache defaults to 8 but is easily changed in nfsclient/nfs.h. When the cache is filled, the oldest cache entry is evicted when space is needed. I mirrored the changes to the NFSv[23] client in the NFSv4 client to fix compile breakage. However, the NFSv4 client doesn't actually use the access cache currently. Submitted by: rmacklem Notes: svn path=/head/; revision=190176
* - Remove code to set SAVENAME for CREATE or RENAME requests that get a -veJohn Baldwin2009-03-101-4/+4
| | | | | | | | | | | | | | | hit in the name cache. cache_lookup() doesn't actually return ENOENT for such requests to force the filesystem to do an explicit lookup, so this was effectively dead code. - Grab the nfsnode mutex while writing to n_dmtime. We don't grab the lock when comparing the time against the cached directory mod time (just as we don't when comparing ctime's for +ve name cache hits) since the attribute caching is already racy for NFS clients as it is. Discussed with: bde Notes: svn path=/head/; revision=189639
* For all files including net/vnet.h directly include opt_route.h andBjoern A. Zeeb2009-02-272-0/+3
| | | | | | | | | | | | | | | | | net/route.h. Remove the hidden include of opt_route.h and net/route.h from net/vnet.h. We need to make sure that both opt_route.h and net/route.h are included before net/vnet.h because of the way MRT figures out the number of FIBs from the kernel option. If we do not, we end up with the default number of 1 when including net/vnet.h and array sizes are wrong. This does not change the list of files which depend on opt_route.h but we can identify them now more easily. Notes: svn path=/head/; revision=189106
* Bring back the code to prime the ACCESS cache when fetching attributes forJohn Baldwin2009-02-241-0/+11
| | | | | | | | | | | an NFS file. Now the priming is conditional on a new vfs.nfs.prime_access_cache sysctl. For now I've left the default setting to disabling the priming. Requested by: scottl Notes: svn path=/head/; revision=188994
* Enable caching of negative pathname lookups in the NFS client. To avoidJohn Baldwin2009-02-192-8/+54
| | | | | | | | | | | | | | | | | stale entries, we save a copy of the directory's modification time when the first negative cache entry was added in the directory's NFS node. When a negative cache entry is hit during a pathname lookup, the parent directory's modification time is checked. If it has changed, all of the negative cache entries for that parent are purged and the lookup falls back to using the RPC. This required adding a new cache_purge_negative() method to the name cache to purge only negative cache entries for a given directory. Submitted by: mohans, Rick Macklem, Ricardo Labiaga @ NetApp Reviewed by: mohans Notes: svn path=/head/; revision=188833
* When fetching attributes for a file for NFSv3 mounts, do not perform anJohn Baldwin2009-02-191-6/+0
| | | | | | | | | | | | opportunistic ACCESS RPC to populate both the access and attribute caches of the file and instead always use a GETATTR RPC. On many modern NFS servers, an ACCESS RPC is much more expensive to service than a GETATTR RPC. Submitted by: mohans Notes: svn path=/head/; revision=188832
* Don't clear the attribute cache of a file when it is closed. A subsequentJohn Baldwin2009-02-191-7/+0
| | | | | | | | | | | | | | open() of the same file will load fresh attributes, so they do not need to be explicitly flushed in close() to guarantee close to open consistency. However, other file desciptors may still reference this file and clearing the attributes in close() forces those other file descriptors to fetch fresh attributes the next time they need them. Reviewed by: mohans MFC after: 1 week Notes: svn path=/head/; revision=188831
* Reindent a small bit of code that was not 8-space indented like the restJohn Baldwin2009-02-181-6/+6
| | | | | | | of the nfs_lookup() function. Notes: svn path=/head/; revision=188751
* Last step of splitting up minor and unit numbers: remove minor().Ed Schouten2009-01-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Inside the kernel, the minor() function was responsible for obtaining the device minor number of a character device. Because we made device numbers dynamically allocated and independent of the unit number passed to make_dev() a long time ago, it was actually a misnomer. If you really want to obtain the device number, you should use dev2udev(). We already converted all the drivers to use dev2unit() to obtain the device unit number, which is still used by a lot of drivers. I've noticed not a single driver passes NULL to dev2unit(). Even if they would, its behaviour would make little sense. This is why I've removed the NULL check. Ths commit removes minor(), minor2unit() and unit2minor() from the kernel. Because there was a naming collision with uminor(), we can rename umajor() and uminor() back to major() and minor(). This means that the makedev(3) manual page also applies to kernel space code now. I suspect umajor() and uminor() isn't used that often in external code, but to make it easier for other parties to port their code, I've increased __FreeBSD_version to 800062. Notes: svn path=/head/; revision=187830
* Fix parsing of acregmin, acregmax, acdirmin and acdirmax NFS mount optionsCraig Rodrigues2009-01-281-4/+8
| | | | | | | | | when passed as strings via nmount(). Submitted by: Jaakko Heinonen <jh saunalahti fi> Notes: svn path=/head/; revision=187812
* Move the VA_MARKATIME flag for VOP_SETATTR() out into its own VOP:John Baldwin2009-01-211-2/+2
| | | | | | | | | | | | | | | VOP_MARKATIME() since unlike the rest of VOP_SETATTR(), VA_MARKATIME can be performed while holding a shared vnode lock (the same functionality is done internally by VOP_READ which can run with a shared vnode lock). Add missing locking of the vnode interlock to the ufs implementation and remove a special note and test from the NFS client about not supporting the feature. Inspired by: ups Tested by: pho Notes: svn path=/head/; revision=187526
* Rather than using hidden includes (with cicular dependencies),Bjoern A. Zeeb2008-12-023-0/+4
| | | | | | | | | | | | | | directly include only the header files needed. This reduces the unneeded spamming of various headers into lots of files. For now, this leaves us with very few modules including vnet.h and thus needing to depend on opt_route.h. Reviewed by: brooks, gnn, des, zec, imp Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=185571
* Switch the default rpc implementation for NFS back to the new code. I believeDoug Rabson2008-11-141-4/+0
| | | | | | | | | I have fixed the reported problems - if you still have trouble with it, please contact me with as much detail as possible so that I can track down any other issues as quickly as possible. Notes: svn path=/head/; revision=184969
* Temporarily switch NFS back to the old RPC code while I try to diagnose andDoug Rabson2008-11-131-0/+4
| | | | | | | | | fix the problems a few people have noticed with the new code. People who want to continue testing the new code or who need RPCSEC_GSS support should use the new option NFS_NEWRPC to select it. Notes: svn path=/head/; revision=184920
* Implement support for RPCSEC_GSS authentication to both the NFS clientDoug Rabson2008-11-036-8/+893
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and server. This replaces the RPC implementation of the NFS client and server with the newer RPC implementation originally developed (actually ported from the userland sunrpc code) to support the NFS Lock Manager. I have tested this code extensively and I believe it is stable and that performance is at least equal to the legacy RPC implementation. The NFS code currently contains support for both the new RPC implementation and the older legacy implementation inherited from the original NFS codebase. The default is to use the new implementation - add the NFS_LEGACYRPC option to fall back to the old code. When I merge this support back to RELENG_7, I will probably change this so that users have to 'opt in' to get the new code. To use RPCSEC_GSS on either client or server, you must build a kernel which includes the KGSSAPI option and the crypto device. On the userland side, you must build at least a new libc, mountd, mount_nfs and gssd. You must install new versions of /etc/rc.d/gssd and /etc/rc.d/nfsd and add 'gssd_enable=YES' to /etc/rc.conf. As long as gssd is running, you should be able to mount an NFS filesystem from a server that requires RPCSEC_GSS authentication. The mount itself can happen without any kerberos credentials but all access to the filesystem will be denied unless the accessing user has a valid ticket file in the standard place (/tmp/krb5cc_<uid>). There is currently no support for situations where the ticket file is in a different place, such as when the user logged in via SSH and has delegated credentials from that login. This restriction is also present in Solaris and Linux. In theory, we could improve this in future, possibly using Brooks Davis' implementation of variant symlinks. Supporting RPCSEC_GSS on a server is nearly as simple. You must create service creds for the server in the form 'nfs/<fqdn>@<REALM>' and install them in /etc/krb5.keytab. The standard heimdal utility ktutil makes this fairly easy. After the service creds have been created, you can add a '-sec=krb5' option to /etc/exports and restart both mountd and nfsd. The only other difference an administrator should notice is that nfsd doesn't fork to create service threads any more. In normal operation, there will be two nfsd processes, one in userland waiting for TCP connections and one in the kernel handling requests. The latter process will create as many kthreads as required - these should be visible via 'top -H'. The code has some support for varying the number of service threads according to load but initially at least, nfsd uses a fixed number of threads according to the value supplied to its '-n' option. Sponsored by: Isilon Systems MFC after: 1 month Notes: svn path=/head/; revision=184588
* Document a few sysctls in the NFS client and server code.Tom Rhodes2008-11-024-19/+33
| | | | | | | | | Minor style(9) where applicable. Approved by: alfred (slightly older version) Notes: svn path=/head/; revision=184561
* Improve VFS locking:Attilio Rao2008-11-022-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Implement real draining for vfs consumers by not relying on the mnt_lock and using instead a refcount in order to keep track of lock requesters. - Due to the change above, remove the mnt_lock lockmgr because it is now useless. - Due to the change above, vfs_busy() is no more linked to a lockmgr. Change so its KPI by removing the interlock argument and defining 2 new flags for it: MBF_NOWAIT which basically replaces the LK_NOWAIT of the old version (which was unlinked from the lockmgr alredy) and MBF_MNTLSTLOCK which provides the ability to drop the mountlist_mtx once the mnt interlock is held (ability still desired by most consumers). - The stub used into vfs_mount_destroy(), that allows to override the mnt_ref if running for more than 3 seconds, make it totally useless. Remove it as it was thought to work into older versions. If a problem of "refcount held never going away" should appear, we will need to fix properly instead than trust on such hackish solution. - Fix a bug where returning (with an error) from dounmount() was still leaving the MNTK_MWAIT flag on even if it the waiters were actually woken up. Just a place in vfs_mount_destroy() is left because it is going to recycle the structure in any case, so it doesn't matter. - Remove the markercnt refcount as it is useless. This patch modifies VFS ABI and breaks KPI for vfs_busy() so manpages and __FreeBSD_version will be modified accordingly. Discussed with: kib Tested by: pho Notes: svn path=/head/; revision=184554
* Introduce accmode_t. This is required for NFSv4 ACLs - it will be neccessaryEdward Tomasz Napierala2008-10-281-10/+10
| | | | | | | | | | to add more V* constants, and the variables changed by this patch were often being assigned to mode_t variables, which is 16 bit. Approved by: rwatson (mentor) Notes: svn path=/head/; revision=184413
* Fix a number of style issues in the MALLOC / FREE commit. I've tried toDag-Erling Smørgrav2008-10-231-1/+2
| | | | | | | | be careful not to fix anything that was already broken; the NFSv4 code is particularly bad in this respect. Notes: svn path=/head/; revision=184214
* Retire the MALLOC and FREE macros. They are an abomination unto style(9).Dag-Erling Smørgrav2008-10-237-17/+16
| | | | | | | MFC after: 3 months Notes: svn path=/head/; revision=184205
* Remove the struct thread unuseful argument from bufobj interface.Attilio Rao2008-10-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | In particular following functions KPI results modified: - bufobj_invalbuf() - bufsync() and BO_SYNC() "virtual method" of the buffer objects set. Main consumers of bufobj functions are affected by this change too and, in particular, functions which changed their KPI are: - vinvalbuf() - g_vfs_close() Due to the KPI breakage, __FreeBSD_version will be bumped in a later commit. As a side note, please consider just temporary the 'curthread' argument passing to VOP_SYNC() (in bufsync()) as it will be axed out ASAP Reviewed by: kib Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com> Notes: svn path=/head/; revision=183754
* Step 1.5 of importing the network stack virtualization infrastructureMarko Zec2008-10-023-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from the vimage project, as per plan established at devsummit 08/08: http://wiki.freebsd.org/Image/Notes200808DevSummit Introduce INIT_VNET_*() initializer macros, VNET_FOREACH() iterator macros, and CURVNET_SET() context setting macros, all currently resolving to NOPs. Prepare for virtualization of selected SYSCTL objects by introducing a family of SYSCTL_V_*() macros, currently resolving to their global counterparts, i.e. SYSCTL_V_INT() == SYSCTL_INT(). Move selected #defines from sys/sys/vimage.h to newly introduced header files specific to virtualized subsystems (sys/net/vnet.h, sys/netinet/vinet.h etc.). All the changes are verified to have zero functional impact at this point in time by doing MD5 comparision between pre- and post-change object files(*). (*) netipsec/keysock.c did not validate depending on compile time options. Implemented by: julian, bz, brooks, zec Reviewed by: julian, bz, brooks, kris, rwatson, ... Approved by: julian (mentor) Obtained from: //depot/projects/vimage-commit2/... X-MFC after: never Sponsored by: NLnet Foundation, The FreeBSD Foundation Notes: svn path=/head/; revision=183550
* Part 1 of making shared lookups more resilient with respect to forcedJohn Baldwin2008-09-241-1/+4
| | | | | | | | | | | | | | unmounts. When we upgrade a vnode lock from shared to exclusive during a name cache lookup, fail the lookup with EBADF if the vnode is invalidated while we are waiting for the exclusive lock. Also, for correctness (though I'm not sure it can occur in practice), downgrade an exclusively locked vnode if it should be share locked. Tested by: pho Notes: svn path=/head/; revision=183330
* fdescfs, devfs, mqueuefs, nfs, portalfs, pseudofs, tmpfs and xfsKonstantin Belousov2008-09-201-3/+23
| | | | | | | | | | | | | | initialize the vattr structure in VOP_GETATTR() with VATTR_NULL(), vattr_null() or by zeroing it. Remove these to allow preinitialization of fields work in vn_stat(). This is needed to get birthtime initialized correctly. Submitted by: Jaakko Heinonen <jh saunalahti fi> Discussed on: freebsd-fs MFC after: 1 month Notes: svn path=/head/; revision=183215
* Add code to parse NFS mount options passed as individualCraig Rodrigues2008-09-131-23/+254
| | | | | | | | | | | | | | | items of the nmount() iovec. This will allow us to move away from gathering up all the NFS mount options as a single "struct nfs_args" to be passed down through nmount(). This will make adding new NFS mount options much easier. Many, many thanks to Doug Rabson, who took my initial patches and cleaned them up. Reviewed by: dfr MFC after: 3 months Notes: svn path=/head/; revision=183005
* Decontextualize vfs_busy(), vfs_unbusy() and vfs_mount_alloc() functions.Attilio Rao2008-08-311-3/+3
| | | | | | | | | Manpages are updated accordingly. Tested by: Diego Sardina <siarodx at gmail dot com> Notes: svn path=/head/; revision=182542
* Decontextualize the couplet VOP_GETATTR / VOP_SETATTR as the passed threadAttilio Rao2008-08-283-38/+34
| | | | | | | | | was always curthread and totally unuseful. Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com> Notes: svn path=/head/; revision=182371