Daniel W. S. Almeida | 0f3456b | 2020-01-10 20:24:27 -0300 | [diff] [blame] | 1 | ================================== |
J. Bruce Fields | 8a4c6e1 | 2012-08-15 17:43:30 -0400 | [diff] [blame] | 2 | Administrative interfaces for nfsd |
Daniel W. S. Almeida | 0f3456b | 2020-01-10 20:24:27 -0300 | [diff] [blame] | 3 | ================================== |
J. Bruce Fields | 8a4c6e1 | 2012-08-15 17:43:30 -0400 | [diff] [blame] | 4 | |
| 5 | Note that normally these interfaces are used only by the utilities in |
| 6 | nfs-utils. |
| 7 | |
| 8 | nfsd is controlled mainly by pseudofiles under the "nfsd" filesystem, |
| 9 | which is normally mounted at /proc/fs/nfsd/. |
| 10 | |
| 11 | The server is always started by the first write of a nonzero value to |
| 12 | nfsd/threads. |
| 13 | |
| 14 | Before doing that, NFSD can be told which sockets to listen on by |
| 15 | writing to nfsd/portlist; that write may be: |
| 16 | |
Daniel W. S. Almeida | 0f3456b | 2020-01-10 20:24:27 -0300 | [diff] [blame] | 17 | - an ascii-encoded file descriptor, which should refer to a |
| 18 | bound (and listening, for tcp) socket, or |
| 19 | - "transportname port", where transportname is currently either |
| 20 | "udp", "tcp", or "rdma". |
J. Bruce Fields | 8a4c6e1 | 2012-08-15 17:43:30 -0400 | [diff] [blame] | 21 | |
| 22 | If nfsd is started without doing any of these, then it will create one |
| 23 | udp and one tcp listener at port 2049 (see nfsd_init_socks). |
| 24 | |
Daniel W. S. Almeida | 0f3456b | 2020-01-10 20:24:27 -0300 | [diff] [blame] | 25 | On startup, nfsd and lockd grace periods start. nfsd is shut down by a write of |
| 26 | 0 to nfsd/threads. All locks and state are thrown away at that point. |
J. Bruce Fields | 8a4c6e1 | 2012-08-15 17:43:30 -0400 | [diff] [blame] | 27 | |
| 28 | Between startup and shutdown, the number of threads may be adjusted up |
| 29 | or down by additional writes to nfsd/threads or by writes to |
| 30 | nfsd/pool_threads. |
| 31 | |
| 32 | For more detail about files under nfsd/ and what they control, see |
| 33 | fs/nfsd/nfsctl.c; most of them have detailed comments. |
| 34 | |
| 35 | Implementation notes |
Daniel W. S. Almeida | 0f3456b | 2020-01-10 20:24:27 -0300 | [diff] [blame] | 36 | ==================== |
J. Bruce Fields | 8a4c6e1 | 2012-08-15 17:43:30 -0400 | [diff] [blame] | 37 | |
| 38 | Note that the rpc server requires the caller to serialize addition and |
| 39 | removal of listening sockets, and startup and shutdown of the server. |
| 40 | For nfsd this is done using nfsd_mutex. |