42 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								Administrative interfaces for nfsd
							 | 
						||
| 
								 | 
							
								^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that normally these interfaces are used only by the utilities in
							 | 
						||
| 
								 | 
							
								nfs-utils.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								nfsd is controlled mainly by pseudofiles under the "nfsd" filesystem,
							 | 
						||
| 
								 | 
							
								which is normally mounted at /proc/fs/nfsd/.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The server is always started by the first write of a nonzero value to
							 | 
						||
| 
								 | 
							
								nfsd/threads.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Before doing that, NFSD can be told which sockets to listen on by
							 | 
						||
| 
								 | 
							
								writing to nfsd/portlist; that write may be:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									- an ascii-encoded file descriptor, which should refer to a
							 | 
						||
| 
								 | 
							
									  bound (and listening, for tcp) socket, or
							 | 
						||
| 
								 | 
							
									- "transportname port", where transportname is currently either
							 | 
						||
| 
								 | 
							
									  "udp", "tcp", or "rdma".
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If nfsd is started without doing any of these, then it will create one
							 | 
						||
| 
								 | 
							
								udp and one tcp listener at port 2049 (see nfsd_init_socks).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								On startup, nfsd and lockd grace periods start.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								nfsd is shut down by a write of 0 to nfsd/threads.  All locks and state
							 | 
						||
| 
								 | 
							
								are thrown away at that point.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Between startup and shutdown, the number of threads may be adjusted up
							 | 
						||
| 
								 | 
							
								or down by additional writes to nfsd/threads or by writes to
							 | 
						||
| 
								 | 
							
								nfsd/pool_threads.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For more detail about files under nfsd/ and what they control, see
							 | 
						||
| 
								 | 
							
								fs/nfsd/nfsctl.c; most of them have detailed comments.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Implementation notes
							 | 
						||
| 
								 | 
							
								^^^^^^^^^^^^^^^^^^^^
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that the rpc server requires the caller to serialize addition and
							 | 
						||
| 
								 | 
							
								removal of listening sockets, and startup and shutdown of the server.
							 | 
						||
| 
								 | 
							
								For nfsd this is done using nfsd_mutex.
							 |