Commit Graph

100 Commits

Author SHA1 Message Date
rmacklem
949a19d402 Document the fact that an NFSv4 mount against a volume on the same host
can result in a hung NFS server and is not recommended.
This is a content change.

MFC after:	2 weeks
2013-05-01 22:50:45 +00:00
delphij
f061b4d302 Simplify r243637 and make sure that nfsdargs.{min,max}threads are always set
to meaningful value:

 - When nfsdcnt is set, it dictates all values;
 - Otherwise, nfsdargs.minthreads is set to user specified value, or the
   automatically detected value if there is no one specified;
   nfsdargs.maxthreads is set to the user specified value, or the value
   of nfsdargs.minthreads if there is no one specified; when it is smaller
   than nfsdargs.minthreads, the latter's value is always used.

MFC after:	2 weeks
2013-02-14 02:00:41 +00:00
delphij
236389d4e1 Abstract out setting of nfsdcnt and consistently use MAXNFSDCNT when the
proposed value is too high and DEFNFSDCNT when proposed value is too low.

MFC after:	2 weeks
2013-02-14 01:25:14 +00:00
delphij
7c3bad2349 Use static for all functions that do not need to be exported.
MFC after:	2 weeks
2013-02-14 01:01:53 +00:00
rmacklem
9b46c215ce Attempt to clarify that for ZFS, all file systems under
the NFSv4 root must be exported. This is because ZFS
checks exports itself.
This is a content change.

MFC after:	2 weeks
2012-12-25 22:47:49 +00:00
rmacklem
532583ce14 Post r243965 the nfsd daemon will not start up for kernels
built without "options INET6". This patch fixes the problem.

Reported by:	avg
Tested by:	avg
MFC after:	2 weeks
2012-12-19 21:00:22 +00:00
alfred
5d17b1fe2d Document maxthreads and minthreads arguments 2012-12-02 05:57:53 +00:00
alfred
66e23cadce Don't allow minthreads > maxthreads.
Suggested by: rmacklem
2012-11-28 02:47:31 +00:00
alfred
597f907fd9 Fix typo.
Pointed out by: marck
2012-11-28 02:23:59 +00:00
alfred
b971ca3151 Autoconfigure nfsd threads based on ncpu.
Rick Macklem and I discussed the default number of nfsd threads and
concluded that it is too low to perform adiquitely on today's hardware.

We decided to auto tune the number of nfsds based on the number of cpus
in the system.

While I'm here I've also added:

1) ability to set the minthreads/maxthreads from userland.
2) ability to run nfsd in debug mode via the cli.

Reviewed by: rmacklem
MFC after: 2 weeks
2012-11-27 22:34:46 +00:00
eadler
a06e204e95 Fix typo in error when unable to create TCP socket
PR:		bin/172490
Submitted by:	bdrewery
Approved by:	cperciva
MFC after:	3 days
2012-10-22 03:16:32 +00:00
ed
af31e8843c More -Wmissing-variable-declarations fixes.
In addition to adding `static' where possible:

- bin/date: Move `retval' into extern.h to make it visible to date.c.
- bin/ed: Move globally used variables into ed.h.
- sbin/camcontrol: Move `verbose' into camcontrol.h and fix shadow warnings.
- usr.bin/calendar: Remove unneeded variables.
- usr.bin/chat: Make `line' local instead of global.
- usr.bin/elfdump: Comment out unneeded function.
- usr.bin/rlogin: Use _Noreturn instead of __dead2.
- usr.bin/tset: Pull `Ospeed' into extern.h.
- usr.sbin/mfiutil: Put global variables in mfiutil.h.
- usr.sbin/pkg: Remove unused `os_corres'.
- usr.sbin/quotaon, usr.sbin/repquota: Remove unused `qfname'.
2012-10-19 14:49:42 +00:00
gjb
ed459e330b General mdoc(7) and typo fixes.
PR:		167776
Submitted by:	Nobuyuki Koganemaru (kogane!jp.freebsd.org)
MFC after:	3 days
2012-05-12 03:25:46 +00:00
joel
e3d7180447 Remove superfluous paragraph macro. 2012-03-25 09:18:34 +00:00
kevlo
80dd636e8f Remove duplicated header files 2011-06-24 07:05:20 +00:00
rmacklem
8f911dc953 Fix the nfsv4 man page to reflect the changes related to
making the new NFS client and server the default.
This is a content change.
2011-05-15 22:46:45 +00:00
rmacklem
57afc00cc3 Patch the mountd and nfsd man pages to reflect the recent changes
done by r220980 to deprecate the -e option and add the -o option.
This is a content change for both man pages.
2011-04-24 01:11:28 +00:00
rmacklem
9ed5d7279c This patch changes the default NFS server to the new one, which was
referred to as the experimental server. It also adds a new command
line option "-o" to both mountd and nfsd that forces them to use the
old/regular NFS server. The "-e" option for these commands is now
a no-op, since the new server is the default. I will be committing rc
script and man changes soon. Discussed on freebsd-fs@.
2011-04-24 00:06:56 +00:00
rmacklem
664be6d28d Add stablerestart(5) to the See Also list for nfsd.8.
This is a content change.

Suggested by:	Jeremy Chadwick
MFC after:	2 weeks
2011-04-19 23:33:51 +00:00
rmacklem
d93813d1b8 Revert r220809 since it put the entry in the wrong place
in the list and didn't change the date.
2011-04-19 13:19:13 +00:00
rmacklem
5d453d189d Add stablerestart(5) to the See Also list for nfsd(8).
This is a content change.

Suggested by:	Jeremy Chadwick
MFC after:	2 weeks
2011-04-19 00:47:26 +00:00
rmacklem
d2181eff24 Modify the man pages to reflect the addition of a backup
stable restart file, as done by r220510.
This is a content change.

MFC after:	2 weeks
2011-04-10 13:45:46 +00:00
rmacklem
92d14f2b74 Add support for a backup stable restart file to the nfsd,
used for NFSv4 restart. This permits the nfsd to create
the stable restart file as required and minimizes the risk
of trouble if the file is lost.

Suggested by:	Tim Kientzle
Reviewed by:	jhb
MFC after:	2 weeks
2011-04-10 01:54:42 +00:00
jhb
6c8422154a Save a copy of errno before invoking syslog() if accept() or select() fail.
syslog() can trash the errno value causing nfsd to exit for non-fatal
errors like ECONNABORTED from accept().

MFC after:	1 week
2011-02-17 17:03:56 +00:00
joel
dd1fff9bcb Fix typos, spelling, formatting and mdoc mistakes found by Nobuyuki while
translating these manual pages.  Minor corrections by me.

Submitted by:	Nobuyuki Koganemaru <n-kogane@syd.odn.ne.jp>
2010-08-16 15:18:30 +00:00
joel
f4e8725880 Fix typos and spelling mistakes. 2010-08-06 14:33:42 +00:00
uqs
bf0dc93ef1 mdoc: Garbage collect unused/unneeded macros 2010-05-27 13:56:27 +00:00
ed
073cafdd42 The last big commit: let usr.sbin/ use WARNS=6 by default. 2010-01-02 11:07:44 +00:00
ed
b9ca89bfc4 ANSIfy almost all applications that use WARNS=6.
I was considering committing all these patches one by one, but as
discussed with brooks@, there is no need to do this. If we ever
need/want to merge these changes back, it is still possible to do this
per application.
2009-12-29 22:53:27 +00:00
trasz
f110e7ec27 Yet another cosmetic fix. 2009-12-03 20:06:03 +00:00
trasz
493ad5f691 Cosmetical fixes. 2009-12-03 20:02:26 +00:00
trasz
7e0546fa7c Cosmetical fixes. 2009-12-03 19:59:27 +00:00
brueffer
8169c493e6 Use our canonical .Dd format.
Submitted by:	Ulrich Spoerlein
2009-11-02 12:35:38 +00:00
dfr
ec9ddec04c Don't use sys/nfs/rpcv2.h - it is part of the old kernel RPC implementation
and will be removed.
2009-06-24 18:42:21 +00:00
rmacklem
71e7a369c3 Update the content of the nfsv4.4 man page to reflect the final
choice of variable names for rc.conf and option name for the
experimental server.
Also replace the inaccurate description of the nfsv4 root lines
in /etc/exports, mostly with a reference to exports(5).

Approved by:	kib (mentor)
2009-06-12 14:18:13 +00:00
rmacklem
6b340c06d1 Re-format the nfsv4.4 man page so that all sentences start on a
new line.

Approved by:	kib (mentor)
2009-06-03 21:50:26 +00:00
rmacklem
8bb7f959a6 Change the "-4" argument for nfsd and mountd to "-e" to avoid
confusion, since it does not refer to IPv4 nor NFSv4, but to
running the experimental server instead of the regular one.

Approved by:	kib (mentor)
2009-05-28 20:28:13 +00:00
rmacklem
7b70260976 Modify nfsd.c to add support for the experimental nfs server.
This includes the addition of a new flag "-4" that will force
use of the experimental server with nfsv4 support in it. This
commit also adds two new man pages to the repository that are
NFSv4 specific. One describes the file used by the server to
restart nfsv4 services safely. The other is a brief overview
of nfsv4 and its setup.

Reviewed by:	dfr
Approved by:	kib (mentor)
2009-05-24 01:18:56 +00:00
dfr
2fb03513fc 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
2008-11-03 10:38:00 +00:00
delphij
645ac334a8 Previous revision was broken on SPARC, fix it by using more appropriate type.
Reported by:	tindebox
Pointy hat to:	delphij
2005-12-21 10:12:05 +00:00
delphij
82a40976fd Use size_t for length. 2005-12-21 02:25:59 +00:00
rwatson
dc38a284ac Bump the default maximum on nfsd processes from 20 to 256. Real-world
measurements suggest that higher degrees of parallelism for large
numbers of clients help performance substantially.

Submitted by:	Eric Anderson <anderson at centtech dot com>
2005-01-23 21:34:00 +00:00
ru
6cc4b6c220 Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
delphij
d6d53b5cee ANSI'fy nfsd(8) and some minor changes to make it WARNS=6 clean.
This commit does not affect the code generated, as proven by md5'ing
resulting binaries.

Bump WARNS accordingly.

Compiled on:	sparc64, ia64, i386
Reviewed by:	alfred (but blame me if anything goes wrong :-)
2004-11-06 18:15:44 +00:00
imp
9fbed704d5 Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software
(with permission of addtional copyright holders where appropriate)
2004-08-07 04:28:56 +00:00
ru
6294018a20 Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
simon
235edc76a6 Add a cross reference to exports(5). While exports is not directly
tied to nfsd(8), exports is the configuration file users will most
likely need to configure when dealing with a NFS server.

Submitted by:	Florian Hars <hars@bik-gmbh.de>
PR:		docs/64714
MFC after:	3 days
2004-03-30 20:43:07 +00:00
rwatson
6f9fb3945a Problem:
When an NFS server is port-scanned nfsd sometimes exits. This has
  happened 3 times the last few weeks.

  Nfsd has been written to exit when accept(2) fails. Unfortunately
  accept can sometimes make a "normal" return with errno ECONNABORTED
  and in this case nfsd exits prematurely.

Solution:

  Check for ECONNABORTED (and also EINTR, since nfsd uses signals)
  and continue.

Submitted by:	Bjoern Groenvall <bg@sics.se>
PR:		61084
2004-01-11 01:29:03 +00:00
obrien
a920d12f89 style.Makefile(5) 2003-04-04 17:49:21 +00:00
mux
90e875280c Update manpage to match the code, vfsload() is not used
here since some time, kldload() is used instead.
2002-08-11 15:19:49 +00:00