#
0eec5c87 |
| 13-Nov-2008 |
Doug Rabson <dfr@FreeBSD.org> |
Temporarily switch NFS back to the old RPC code while I try to diagnose and fix the problems a few people have noticed with the new code. People who want to continue testing the new code or who need
Temporarily switch NFS back to the old RPC code while I try to diagnose and 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.
show more ...
|
#
a9148abd |
| 03-Nov-2008 |
Doug Rabson <dfr@FreeBSD.org> |
Implement support for RPCSEC_GSS authentication to both the NFS client and server. This replaces the RPC implementation of the NFS client and server with the newer RPC implementation originally devel
Implement support for RPCSEC_GSS authentication to both the NFS client 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
show more ...
|
#
c675522f |
| 26-Jun-2008 |
Doug Rabson <dfr@FreeBSD.org> |
Re-implement the client side of rpc.lockd in the kernel. This implementation provides the correct semantics for flock(2) style locks which are used by the lockf(1) command line tool and the pidfile(3
Re-implement the client side of rpc.lockd in the kernel. This implementation provides the correct semantics for flock(2) style locks which are used by the lockf(1) command line tool and the pidfile(3) library. It also implements recovery from server restarts and ensures that dirty cache blocks are written to the server before obtaining locks (allowing multiple clients to use file locking to safely share data).
Sponsored by: Isilon Systems PR: 94256 MFC after: 2 weeks
show more ...
|
Revision tags: release/7.0.0_cvs, release/7.0.0, release/6.3.0_cvs, release/6.3.0 |
|
#
faf529dc |
| 12-Oct-2007 |
Mohan Srinivasan <mohans@FreeBSD.org> |
NFS MP scaling changes. - Eliminate the hideous nfs_sndlock that serialized NFS/TCP request senders thru the sndlock. - Institute a new nfs_connectlock that serializes NFS/TCP reconnects. Add log
NFS MP scaling changes. - Eliminate the hideous nfs_sndlock that serialized NFS/TCP request senders thru the sndlock. - Institute a new nfs_connectlock that serializes NFS/TCP reconnects. Add logic to wait for pending request senders to finish sending before reconnecting. Dial down the sb_timeo for NFS/TCP sockets to 1 sec. - Break out the nfs xid manipulation under a new nfs xid lock, rather than over loading the nfs request lock for this purpose. - Fix some of the locking in nfs_request. Many thanks to Kris Kennaway for his help with this and for initiating the MP scaling analysis and work. Kris also tested this patch thorougly. Approved by: re@ (Ken Smith)
show more ...
|
#
e43982a8 |
| 25-Jan-2007 |
Bruce Evans <bde@FreeBSD.org> |
Unstaticize nfs_iosize() in nfsclient and use it in nfs4client instead of duplicating it except for larger style bugs in the copy.
Fix some nearby style bugs (including a harmless type mismatch) in
Unstaticize nfs_iosize() in nfsclient and use it in nfs4client instead of duplicating it except for larger style bugs in the copy.
Fix some nearby style bugs (including a harmless type mismatch) in and near the remaining copy.
This is part of fixing collisions of the 2 nfs*client's names. Even static names should have a unique prefixes so that they can be debugged easily.
show more ...
|
Revision tags: release/6.2.0_cvs, release/6.2.0 |
|
#
a18c4dc3 |
| 20-Nov-2006 |
Mohan Srinivasan <mohans@FreeBSD.org> |
1) Fix up locking in nfs_up() and nfs_down. 2) Reduce the acquisitions of the Giant lock in the nfs_socket.c paths significantly. - We don't need to acquire Giant before tsleeping on lbolt anymore,
1) Fix up locking in nfs_up() and nfs_down. 2) Reduce the acquisitions of the Giant lock in the nfs_socket.c paths significantly. - We don't need to acquire Giant before tsleeping on lbolt anymore, since jhb specialcased lbolt handling in msleep. - nfs_up() needs to acquire Giant only if printing the "server up" message. - nfs_timer() held Giant for the duration of the NFS timer processing, just because the printing of the message in nfs_down() needed it (and we acquire other locks in nfs_timer()). The acquisition of Giant is moved down into nfs_down() now, reducing the time Giant is held in that path.
Reported by: Kris Kennaway
show more ...
|
#
35259c2c |
| 18-Oct-2006 |
Bruce Evans <bde@FreeBSD.org> |
Fixed some style bugs (especially ones involving long lines and use of __P(())). There are many more.
|
#
5bbfbd14 |
| 25-May-2006 |
Mohan Srinivasan <mohans@FreeBSD.org> |
Since NFSv4 is not SMP safe, nfsiod needs to acquire Giant for NFSv4 mounts before doing the read/write.
Reported by: Chuck Lever.
|
#
6d0699a5 |
| 23-May-2006 |
Chuck Lever <cel@FreeBSD.org> |
NFS over TCP retransmit behavior should default to a 60 second time out, mimicing the NFS reference implementation.
NFS over TCP does not need fast retransmit timeouts, since network loss and conges
NFS over TCP retransmit behavior should default to a 60 second time out, mimicing the NFS reference implementation.
NFS over TCP does not need fast retransmit timeouts, since network loss and congestion are managed by the transport (TCP), unlike with NFS over UDP. A long timeout prevents the unnecessary retransmission of non- idempotent NFS requests.
Reviewed by: mohans, silby, rees? Sponsored by: Network Appliance, Incorporated
show more ...
|
#
94163ea2 |
| 23-May-2006 |
Chuck Lever <cel@FreeBSD.org> |
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
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.
Reviewed by: mohan, kris, silby Sponsored by: Network Appliance, Incorporated
show more ...
|
Revision tags: release/5.5.0_cvs, release/5.5.0 |
|
#
f1cdf899 |
| 19-May-2006 |
Mohan Srinivasan <mohans@FreeBSD.org> |
Changes to make the NFS client MP safe.
Thanks to Kris Kennaway for testing and sending lots of bugs my way.
|
Revision tags: release/6.1.0_cvs, release/6.1.0, release/6.0.0_cvs, release/6.0.0 |
|
#
4321eae6 |
| 19-Jul-2005 |
Paul Saab <ps@FreeBSD.org> |
Make nfs_timer() MPSAFE. With this change, the bottom half of the NFS client (the interface with the protocol stack and callouts) is Giant-free.
Submitted by: Mohan Srinivasan.
|
Revision tags: release/5.4.0_cvs, release/5.4.0 |
|
#
56dd36b1 |
| 24-Jan-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove unused cred arg from nfs_vinvalbuf() and many bogus arguments passed for it.
|
Revision tags: release/4.11.0_cvs, release/4.11.0 |
|
#
c398230b |
| 07-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
/* -> /*- for license, minor formatting changes
|
#
a7500bce |
| 15-Dec-2004 |
Paul Saab <ps@FreeBSD.org> |
First cut of NFS direct IO support. - NFS direct IO completely bypasses the buffer and page caches. If a file is open for direct IO all caching is disabled. - Direct IO for Directories will be addr
First cut of NFS direct IO support. - NFS direct IO completely bypasses the buffer and page caches. If a file is open for direct IO all caching is disabled. - Direct IO for Directories will be addressed later. - 2 new NFS directio related sysctls are added. One is a knob to disable NFS direct IO completely (direct IO is enabled by default). The other is to disallow mmaped IO on a file that has at least one O_DIRECT open (see the comment in nfs_vnops.c for more details). The default is to allow mmaps on a file that has O_DIRECT opens.
Submitted by: Mohan Srinivasan mohans at yahoo-inc dot com Obtained from: Yahoo!
show more ...
|
#
35ec46b7 |
| 06-Dec-2004 |
Paul Saab <ps@FreeBSD.org> |
Rewrite of the NFS client's reply handling. We now have NFS socket upcalls which do RPC header parsing and match up the reply with the request. NFS calls now sleep on the nfsreq structure. This enabl
Rewrite of the NFS client's reply handling. We now have NFS socket upcalls which do RPC header parsing and match up the reply with the request. NFS calls now sleep on the nfsreq structure. This enables us to eliminate the NFS recvlock.
Submitted by: Mohan Srinivasan mohans at yahoo-inc dot com
show more ...
|
#
0fe6462a |
| 06-Dec-2004 |
Robert Watson <rwatson@FreeBSD.org> |
Correct a typo in a comment.
|
#
8b431c95 |
| 06-Dec-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
For reasons unknown, the nfs locking code used a fifo to send requests to userland and a dedicated system call to get replies.
The vnode-bypass of fifos broke this into a panic.
Ditch all the magic
For reasons unknown, the nfs locking code used a fifo to send requests to userland and a dedicated system call to get replies.
The vnode-bypass of fifos broke this into a panic.
Ditch all the magic and create a device /dev/nfslock instead, and use that for both directions apart from the shorter path, this is also faster because the device driver runs Giant free using the vnode bypass.
Noticed by: marcel
show more ...
|
Revision tags: release/5.3.0_cvs, release/5.3.0 |
|
#
9f2b7bc4 |
| 27-Sep-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
style consistency.
|
#
35f13408 |
| 07-Sep-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Explicitly pass vnode to nfs_doio() and mountpoint to nfs_asyncio().
|
#
c713aaae |
| 06-Jul-2004 |
Alfred Perlstein <alfred@FreeBSD.org> |
NFS mobility PHASE I, II & III (phase VI, and V pending):
Rebind the client socket when we experience a timeout. This fixes the case where our IP changes for some reason.
Signal a VFS event when N
NFS mobility PHASE I, II & III (phase VI, and V pending):
Rebind the client socket when we experience a timeout. This fixes the case where our IP changes for some reason.
Signal a VFS event when NFS transitions from up to down and vice versa.
Add a placeholder vfs_sysctl where we will put status reporting shortly.
Also: Make down NFS mounts return EIO instead of EINTR when there is a soft timeout or force unmount in progress.
show more ...
|
Revision tags: release/4.10.0_cvs, release/4.10.0 |
|
#
1630ff08 |
| 11-Apr-2004 |
Peter Edwards <peadar@FreeBSD.org> |
Clean up properly when unloading NFS client module.
This includes a modified form of some code from Thomas Moestl (tmm@) to properly clean up the UMA zone and the "nfsnodehashtbl" hash table.
Revie
Clean up properly when unloading NFS client module.
This includes a modified form of some code from Thomas Moestl (tmm@) to properly clean up the UMA zone and the "nfsnodehashtbl" hash table.
Reviewed By: iedowse PR: 16299
show more ...
|
#
2fcbca0d |
| 07-Apr-2004 |
Warner Losh <imp@FreeBSD.org> |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999 and email from Peter Wemm, Alan Cox and Robert Watson.
Approved by: core, peter, alc, rwatson
|
#
f9955a5f |
| 25-Mar-2004 |
Jim Rees <rees@FreeBSD.org> |
only do nfs rpc callouts if there is work to do.
Submitted by: kan Approved by: alfred
|
#
6df06172 |
| 14-Mar-2004 |
Peter Wemm <peter@FreeBSD.org> |
Calculate NFS timeouts in units of 10ms, not 5ms. This matches the default clock precision on i386. This is a NOP change on i386. But this stops the mount_nfs units from suddenly changing to units
Calculate NFS timeouts in units of 10ms, not 5ms. This matches the default clock precision on i386. This is a NOP change on i386. But this stops the mount_nfs units from suddenly changing to units of 1/20 of a second (vs the normal 1/10 of a second) if HZ is increased.
show more ...
|