The following config blocks exist:

NFS_CORE_PARAM {}
NFS_IP_NAME {}
NFS_KRB5 {}
NFSV4 {}
EXPORT_DEFAULTS {}
EXPORT_DEFAULTS { CLIENT  {} }
EXPORT {}
EXPORT { CLIENT  {} }
EXPORT { FSAL {} }
EXPORT { FSAL { FSAL {} } }
EXPORT { FSAL { PNFS {} } }
PSEUDOFS {}
PSEUDOFS { CLIENT  {} }
LOG {}
LOG { COMPONENTS {} }
LOG { FACILITY {} }
LOG { FORMAT {} }
LOG { CONDITIONAL {} }
_9P {}
MDCACHE {}
FSAL_LIST {}
CEPH {}
GPFS {}
MEM {}
RGW {}
VFS {}
XFS {}
PROXY_V3 {}
PROXY_V4 {}
RADOS_KV {}
RADOS_URLS {}
QOS_DEFAULT_CONFIG {}

Notably the following FSALs do not have a global config block:

PSEUDO, NULL, GLUSTER

NFS_CORE_PARAM {}
-----------------

	HAProxy_Hosts (host list, empty)

	* Host list entries can take on one of the following forms. This
	  parameter can be repeated to extend the list.

	*		Match any host
	@name		Netgroup name
	x.x.x.x/y	IPv4 network address, IPv6 addresses are also allowed
			but the format is too complex to show here
	wildcarded	If the string contains at least one ? or *
			character (and is not simply "*"), the string is
			used to pattern match host names. Note that [] may
			also be used, but the pattern MUST have at least one
			? or *
	hostname	Match a single host (match is by IP address, all
			addresses returned by getaddrinfo will match, the
			getaddrinfo call is made at config parsing time)
	IP address	Match a single host

	NFS_Port (uint16, range 0 to UINT16_MAX, default 2049)

	MNT_Port (uint16, range 0 to UINT16_MAX, default 0)

	NLM_Port (uint16, range 0 to UINT16_MAX, default 0)

	Rquota_Port (uint16, range 0 to UINT16_MAX, default 875)

	NFS_RDMA_Port (uint16, range 0 to UINT16_MAX, default 20049)

	NFS_RDMA_Protocol_Versions(enum list,
				   values [NONE, 3, v3, NFS3, NFSv3, 4.0,
				   v4.0, NFS4.0, NFSv4.0, 4.1, v4.1,
				   NFS4.1, NFSv4.1, 4.2, v4.2, NFS4.2,
				   NFSv4.2, ALL],
				   default 4.0, 4.1, 4.2)

	Monitoring_Addr(IPv4 or IPv6 addr, default 0.0.0.0)

	Monitoring_Port (uint16, range 0 to UINT16_MAX, default 9587)

	Enable_Dynamic_Metrics (bool, default true)

	Enable_Metrics (bool, default false)

	Bind_Addr(IPv4 or IPv6 addr, default 0.0.0.0)

	Interface_Name(string, default NULL)

	NFS_Program(uint32, range 1 to INT32_MAX, default  100003)

	MNT_Program(uint32, range 1 to INT32_MAX, default  100005)

	NLM_Program(uint32, range 1 to INT32_MAX, default  100021)

	Rquota_Program(uint32, range 1 to INT32_MAX, default  100011)

	Drop_IO_Errors(bool, default false)

	Drop_Inval_Errors(bool, default false)

	Drop_Delay_Errors(bool, default false)

	DRC_Disabled(boo, default false)

	DRC_Recycle_Hiwat(uint32, range 1 to 1000000, default 1024)

	DRC_TCP_Npart(uint32, range 1 to 20, default 1)

	DRC_TCP_Size(uint32, range 1 to 32767, default 1024)

	DRC_TCP_Cachesz(uint32, range 1 to 255, default 127)

	DRC_TCP_Hiwat(uint32, range 1 to 256, default 64)

	DRC_TCP_Recycle_Npart(uint32, range 1 to 20, default 7)

	DRC_TCP_Recycle_Expire_S(uint32, range 0 to 60*60, default 600)

	DRC_TCP_Checksum(bool, default true)

	DRC_UDP_Npart(uint32, range 1 to 100, default 7)

	DRC_UDP_Size(uint32, range 512, to 32768, default 32768)

	DRC_UDP_Cachesz(uint32, range 1 to 2047, default 599)

	DRC_UDP_Hiwat(uint32, range 1 to 32768, default 16384)

	DRC_UDP_Checksum(bool, default true)

	RPC_Max_Connections(uint32, range 1 to 1000000, default 1024)

	RPC_Idle_Timeout_S(uint32, range 0 to 60*60, default 300)

	MaxRPCSendBufferSize(uint32, range 1 to 1048576*9, default 1048576)

	MaxRPCRecvBufferSize(uint32, range 1 to 1048576*9, default 1048576)

	RPC_Max_RDMA_Connections(uint32, range 1 to 1024, default 64)

	MaxRPCRdmaCredits(uint32, range 1 to 4096, default 64)

	RPC_Ioq_ThrdMax(uint32, range 2 to 1024*128 default 200)

	rpc_ioq_thrdmin(uint32, range 2 to 1024*128 default 2)

	RPC_GSS_Npart(uint32, range 1 to 1021, default 13)

	RPC_GSS_Max_Ctx(uint32, range 1 to 1048576, default 16384)

	RPC_GSS_Max_Gc(uint32, range 1 to 1048576, default 200)

	Blocked_Lock_Poller_Interval(int64, range 0 to 180, default 10)

	NFS_Protocols(list, valid values [3, 4], default 3,4)

	NSM_Use_Caller_Name(bool, default false)

	Clustered(bool, default true)

	Enable_NLM(bool, default true)

	Disable_NLM_SHARE(bool, default false)

	Enable_RQUOTA(bool, default true)

	Enable_NFSACL(bool, default false)

	Enable_TCP_keepalive(bool, default true)

	TCP_KEEPCNT(UINT32, range 0 to 255, default 0 -> use system defaults)

	TCP_KEEPIDLE(UINT32, range 0 to 65535, default 0 -> use system defaults)

	TCP_KEEPINTVL(INT32, range 0 to 65535, default 0 -> use system defaults)

	Enable_NFS_Stats(bool, default true)

	Enable_Fast_Stats(bool, default false)

	Enable_FSAL_Stats(bool, default false)

	Enable_FULLV3_Stats(bool, default false)

	Enable_FULLV4_Stats(bool, default false)

	Enable_CLNT_AllOps_Stats(bool, default false)

	Short_File_Handle(bool, default false)

	Manage_Gids_Expiration(int64, range 0 to 7*24*60*60, default 30*60)

	Plugins_Dir(path, default "/usr/lib64/ganesha")

	heartbeat_freq(uint32, range 0 to 5000 default 1000)

	fsid_device(bool, default false)

	resolve_fs_retries(uint32_t, range 1 to 1000, default 10)

	resolve_fs_delay(uint32_t, range 1 to 1000, default 100)

	mount_path_pseudo(bool, default false)

	Enable_UDP(list, valid values [False, True, Mount, NLM, default True)

	Dbus_Name_Prefix(string, default NULL)

	Max_Uid_To_Group_Reqs(uint32, range 0 to INT32_MAX, default 0)

	Enable_V3fh_Validation_For_V4(bool, default false)

	Readdir_Res_Size(uint32, range 4096 to 64*1024*1024, default 32*1024)

	Readdir_Max_Count(uint32, range 32 to 1024*1024, default 1024*1024)

	Getattrs_In_Complete_Read(bool, default true)

	Enable_malloc_trim(bool, default false)

	Malloc_trim_MinThreshold(uint32, range 1 to INT32_MAX, default 15*1024)

	enable_rpc_cred_fallback(bool, default false)

	Unique_Server_Id(uint32, range 0 to UINT32_MAX, default 0)

	Enable_Connection_Manager(bool, default false)

	Connection_Manager_Timeout_sec(uint32, range 0 to UINT32_MAX, default 2*60)

	Allow_Set_Io_Flusher_Fail(bool, default false)

NFS_IP_NAME {}
--------------

	Index_Size(uint32, range 1 to 51, default 17)

	Expiration_Time(uint32, range 1 to 60*60*24, default 3600)

NFS_KRB5 {}
-----------

	PrincipalName(string, default "nfs")

	KeytabPath(path, default "")

	CCacheDir(path, default "/var/run/ganesha")

	Active_krb5(bool, default true)


NFSV4 {}
--------

	Sticky_Grace(bool, default false)

	Graceless(bool, default false)

	Lease_Lifetime(uint32, range 1 to 120, default 60)

	Grace_Period(uint32, range 0 to 180, default 90)

	IdmapConf(path, default "/etc/idmapd.conf")

	UseGetpwnam(bool, default false if using idmap, true otherwise)

	Allow_Numeric_Owners(bool, default true)

	Only_Numeric_Owners(bool, default false)

	Delegations(bool, default false)

	RecoveryBackend(enum, values [fs, fs_ng, rados_kv, rados_ng],
			default fs)

	RecoveryBackendIPBased(bool, default false)

	RecoveryRoot(path, default "/var/lib/nfs/ganesha")

	RecoveryDir(path, default "v4recov")

	RecoveryOldDir(path, "v4old")

	Minor_Versions(enum list, values [0, 1, 2], default [0, 1, 2])

	Slot_Table_Size(uint32, range 1 to 1024, default 64)

	Enforce_UTF8_Validation(bool, default false)

	* Updates dynamically when a new configuration is loaded via SIGHUP.

	Max_Client_Ids(uint32, range 0 to UINT32_MAX, default 0)

	Server_Scope(string, default "")

	Server_Owner(string, default "")

	Virtual_Server(bool, default false)

	Ip_Based_Client_Separation(bool, default false)

	Max_Open_States_Per_Client(uint32, range 0 to UINT32_MAX, default 0)

	Expired_Client_Threshold(uint32, range 0 to 256, default 16)

	Max_Open_Files_For_Expired_Client(uint32, range 0 to UINT32_MAX,
					  default 4000)

	Max_Alive_Time_For_Expired_Client(uint64, range 0 to UINT64_MAX,
					  default 86400)

	Blocking_Locks(bool, default true)

DIRECTORY_SERVICES {}
---------------------

	DomainName(string, default "localdomain")

	Idmapping_Active(bool, default true)

	Idmapped_User_Time_Validity(int64, range -1 to INT64_MAX, default -1)

	Idmapped_Group_Time_Validity(int64, range -1 to INT64_MAX, default -1)

	Root_Kerberos_Principal(enum list, values [none,nfs,root,host,all], default [all])

	Cache_Users_Max_Count(uint32, range 0 to INT32_MAX, default INT32_MAX)

	Cache_Groups_Max_Count(uint32, range 0 to INT32_MAX, default INT32_MAX)

	Cache_User_Groups_Max_Count(uint32, range 0 to INT32_MAX, default INT32_MAX)

	Negative_Cache_Time_Validity(int64, range 0 to INT64_MAX, default 300)

	Negative_Cache_Users_Max_Count(uint32, range 0 to INT32_MAX, default 50000)

	Negative_Cache_Groups_Max_Count(uint32, range 0 to INT32_MAX, default 50000)

	Cache_Reaping_Interval(int64, range 0 to 3650*86400, default 0)

	Max_Groups_Membership (uint32, range 0 to INT32_MAX, default 2000)

	Pwutils_Use_Fully_Qualified_Names(bool, default false)

	Pwnam_Implementation (enum, values [nsswitch, sssd], default "nsswitch")

EXPORT_DEFAULTS {}
------------------

	These options are all "export permissions" options, and will be
	repeated in the EXPORT {} and EXPORT { CLIENT {} } blocks.

	These options will all be dynamically updateable.

	Access_Type(enum, values [None, RW, RO, MDONLY, MDONLY_RO],
		    default None)

	Protocols(enum list,
		  values [3, 4, NFS3, NFS4, V3, V4, NFSv3, NFSv4, 9P],
		  default none)

	Transports(enum list, values [UDP, TCP, RDMA], default [UDP, TCP])

	Anonymous_uid(anonid, range INT32MIN to UINT32MAX, default -2)

	Anonymous_gid(anonid, range INT32MIN to UINT32MAX, default -2)

	SecType(enum list, values [none, sys, krb5, krb5i, krb5p],
	        default [none, sys])

	PrivilegedPort(bool, default false)

	Manage_Gids(bool, default false)

	Squash(enum, values [root, root_squash, rootsquash,
			     rootid, root_id_squash, rootidsquash,
			     all, all_squash, allsquash,
				all_anomnymous, allanonymous,
			     no_root_squash, none, noidsquash],
	       default root_squash)

	* Each line of defaults above are synonyms

	NFS_Commit(bool, default false)

	Delegations(enum, values [None, read, write, readwrite, r, w, rw],
		    default None)

	--------------------------
	The following options are not permission options but may be set in
	EXPORT_DEFAULTS

	Attr_Expiration_Time(int32, range -1 to INT32_MAX, default 60)


EXPORT_DEFAULTS { CLIENT  {} }
------------------------------

	EXPORT_DEFAULTS can also have CLIENT blocks

	* To override a restrictive default client list with "everyone" a
	  non-empty client list would have to be specified. Clients = "*"
	  would do the trick.

	* This block may be repeated to define multiple client lists with
	  different permissions.

	* Take all the "export permissions" options from EXPORT_DEFAULTS.

	* Any options not set by the client or export, taken from the EXPORT_DEFAULTS block.
	  Order of options taken are 1.Client block 2. Export entry 3. Export_Defaults.

	* The client lists are dynamically updateable.

	HA_Proxy_Protocol(enum list, values [with_ha_proxy, without_ha_proxy, any], default [any])

	Clients(client list, empty)

	* Client list entries can take on one of the following forms. This
	  parameter may be repeated to extend the list.

	*		Match any client
	@name		Netgroup name
	x.x.x.x/y	IPv4 network address, IPv6 addresses are also allowed
			but the format is too complex to show here
	wildcarded	If the string contains at least one ? or *
			character (and is not simply "*"), the string is
			used to pattern match host names. Note that [] may
			also be used, but the pattern MUST have at least one
			? or *
	hostname	Match a single client (match is by IP address, all
			addresses returned by getaddrinfo will match, the
			getaddrinfo call is made at config parsing time)
	IP address	Match a single client

EXPORT {}
---------

	* This block may be repeated to define multiple exports.

	* Take all the "export permissions" options from EXPORT_DEFAULTS.

	* The first 5 options are considered static from the perspective of
	  dynamic update.

	Path(path, no default, must be supplied)

	Pseudo(path, no default)

	Tag(string, no default)

	Export_id(uint16, range 0 to UINT16_MAX, default 1)

	Filesystem_id(fsid, format is uint64.uint64, default unused)

		* Updating Filesystem_id would have an adverse impact on
		  existing client mounts and it's not currently a type that
		  can be atomically updated.

	* The following options may be dynamically updated

	MaxRead(uint64, range 512 to 64*1024*1024, default 64*1024*1024)

	MaxWrite(uint64, range 512 to 64*1024*1024, default 64*1024*1024)

	* Note that some older nfs client (e.g. libnfs 1.x) would not handle
	  well for large Prefer Read/Write size. If so, please try to decrease
	  the Prefer Read/Write size  (usually less than 1M is suitable for
	  older nfs client).

	PrefRead(uint64, range 512 to 64*1024*1024, default 64*1024*1024)

	PrefWrite(uint64, range 512 to 64*1024*1024, default 64*1024*1024)

	PrefReaddir(uint64, range 512 to 64*1024*1024, default 16384)

	MaxOffsetWrite(uint64, range 512 to UINT64_MAX, default INT64_MAX)

	MaxOffsetRead(uint64, range 512 to UINT64_MAX, default INT64_MAX)

	DisableReaddirPlus(bool, default false)

	DisableDirCaching(bool, default false)

	Trust_Readdir_Negative_Cache(bool, default false)

	* The following options may have limits on dynamic effect

	UseCookieVerifier(bool, default true)

		* Updating UseCookieVerifier while a readdir is in
		  progress may result in unexpected behavior.

	Disable_ACL(bool, default false)

		* Disable_ACL is processed at create_export time currently
		  which makes it effectively a static option.

	Security_Label(bool, default false)

	Attr_Expiration_Time(int32, range -1 to INT32_MAX, default 60)

		* Attr_Expiration_Time is evaluated when an MDCACHE entry
		  is created, so the dynamic effect of this option may
		  be constrained to new entries.


EXPORT { CLIENT  {} }
---------------------

	See EXPORT_DEFAULTS { CLIENT  {} }

EXPORT { FSAL {} }
------------------

	Name(string, default "VFS")

	FSAL_CEPH:
	----------
	User_Id(string, no default)

	* User_Id: cephx userid used to open the MDS session. This string is
	  what gets appended to "client.". If not set, the ceph client libs
	  will sort this out based on ceph configuration.

	Secret_Access_Key(string, no default)

	* Secret_Access_Key: key to use for the session (if any). If not set,
	  then it uses the normal search path for cephx keyring files to find
	  a key.

	sec_label_xattr(char, default "security.selinux xattr of the file")

	* Enable NFSv4.2 security label attribute. Ganesha supports
	  "Limited Server Mode" as detailed in RFC 7204. Note that
	  not all FSALs support security labels.

	filesystem(string, no default)

	* Ceph filesystem name string, for mounting an alternate filesystem
	  within the cluster. The default is to mount the default filesystem in
	  the cluster (usually, the first one created).

	cmount_path(string, no default)

	* If specified, the path within the ceph filesystem to mount this
	  export on. It must be a subset of the EXPORT { Path } parameter.
	  If this and the other EXPORT { FSAL {} } options are the same
	  between multiple exports, those exports will share a single
	  cephfs client. With the default, this effectively defaults to
	  the same path as EXPORT { Path }.

	FSAL_GLUSTER:
	-------------

	volume(string, no default, must be supplied)

	hostname(string, no default, must be supplied)

	volpath(path, default "/")

	glfs_log(path, default "/tmp/gfapi.log")

        up_poll_usec(uint64, range 1 to 60*1000*1000, default 10)

        * up_poll_usec: The time interval (in micro-seconds) between any
          two consecutive upcall polls. By default set to 10us.

	enable_upcall(bool, default true)

	transport(enum, values [tcp, rdma], default tcp)

	sec_label_xattr(char, default "security.selinux xattr of the file")

		* Enable NFSv4.2 security label attribute. Ganesha supports
		  "Limited Server Mode" as detailed in RFC 7204. Note that
		  not all FSALs support security labels.

	FSAL_VFS or FSAL_LUSTRE:
	------------------------

	pnfs(bool, default false)

	fsid_type(enum, values [None, One64, Major64, Two64, uuid, Two32, Dev,
			        Device], no default)

	FSAL_LUSTRE:
	------------
	async_hsm_restore(bool, default true)

	FSAL_PROXY_V3:
	-----------

	Srv_Addr(ipv4_addr default "127.0.0.1")

	FSAL_PROXY_V4:
	-----------

	Retry_SleepTime(uint32, range 0 to 60, default 10)

	Srv_Addr(ipv4_addr default "127.0.0.1")

	NFS_Service(uint32, range 0 to UINT32_MAX, default 100003)

	/*NFS_SendSize must be greater than maxwrite+SEND_RECV_HEADER_SPACE .*/
	/*NFS_RecvSize must be greater than maxread+SEND_RECV_HEADER_SPACE .*/
	/*MAX_READ_WRITE_SIZE == 1 MB*/
	/*SEND_RECV_HEADER_SPACE == 512 Bytes*/
	/*FSAL_MAXIOSIZE = 64 MB*/
	NFS_SendSize(uint64, range 512 + SEND_RECV_HEADER_SPACE
					to FSAL_MAXIOSIZE,
		     default MAX_READ_WRITE_SIZE + SEND_RECV_HEADER_SPACE)

	NFS_RecvSize(uint64, range 512 + SEND_RECV_HEADER_SPACE
					to FSAL_MAXIOSIZE,
		     default MAX_READ_WRITE_SIZE + SEND_RECV_HEADER_SPACE)

	NFS_Port(uint16, range 0 to UINT16_MAX, default 2049)

	Use_Privileged_Client_Port(bool, default true)

	RPC_Client_Timeout(uint32, range 1 to 60*4, default 60)

	Remote_PrincipalName(string, no default)

	KeytabPath(string, default "/etc/krb5.keytab")

	Credential_LifeTime(uint32, range 0 to 86400*2, default 86400)

	Sec_Type(enum, values [krb5, krb5i, krb5p], default krb5)

	Active_krb5(bool, default false)

	Enable_Handle_Mapping(bool, default false)

	HandleMap_DB_Dir(string, default "/var/ganesha/handlemap")

	HandleMap_Tmp_Dir(string, default "/var/ganesha/tmp")

	HandleMap_DB_Count(uint32, range 1 to 16, default 8)

	HandleMap_HashTable_Size(uint32, range 1 to 127, default 103)

	FSAL_MEM:
	---------
	Async_Delay(uint32, range 0 to 1000, defaults to 0)

	Async_Type(enum, values [inline, fixed, random, random_or_inline],
		   defaults to inline)

	Async_Stall_Delay(uint32, range 0 to 1000, defaults to 0)

	EXPORT { FSAL { PNFS { } } }
	----------------------------
		Stripe_Unit(uint32, range 1024 to 1024*1024, default 8192)

		pnfs_enabled(bool, default false)

	FSAL_NULL:
	----------

	EXPORT { FSAL { FSAL {} } }

	describes the stacked FSAL's parameters

EXPORT { QOS_BLOCK  {} }
------------------------

	See global QOS_DEFAULT_CONFIG {}

	* Config exception is qos_type is not available at export level.

	* By default global EXPORT_DEFAULTS will be applied to export.

	* This block is required at export level only if there needs to be
	  different value than global value.

	* Respective QOS_DEFAULT_CONFIG enable values needs to be enabled first
	  to enable export level values.

	* If export QOS_BLOCK {} needs to be populated, then populate required
	  enabled entities otherwise default value will get applied.

PSEUDOFS {}
-----------

	* While this block looks similar to an EXPORT block, only the following
	  options may be specified including CLIENT sub-blocks.

	* This block provides a simple way to override some parameters of
	  the pseudofs root, especially to specify CLIENT blocks to override
	  the CLIENT blocks in EXPORT_DEFAULTS.

	* This block may only be specified once.

	* This block is fully dynamically updateable.

	Access_Type(enum, values [None, MDONLY_RO],
		    default MDONLY_RO)

	Transports(enum list, values [UDP, TCP, RDMA], default [TCP])

	SecType(enum list, values [none, sys, krb5, krb5i, krb5p],
	        default [none, sys, krb5, krb5i, krb5p])

	PrivilegedPort(bool, default false)

	Export_id(uint16, range 0 to UINT16_MAX, default 0)

	Filesystem_id(fsid, format is uint64.uint64, default 152.152)

		* Updating Filesystem_id would have an adverse impact on
		  existing client mounts and it's not currently a type that
		  can be atomically updated.

	* The following options may be dynamically updated

	DisableReaddirPlus(bool, default false)

	Trust_Readdir_Negative_Cache(bool, default false)

	* The following options may have limits on dynamic effect

	UseCookieVerifier(bool, default true)

		* Updating UseCookieVerifier while a readdir is in
		  progress may result in unexpected behavior.

PSEUDOFS { CLIENT  {} }
-----------------------

	PSEUDOFS can also have CLIENT blocks

	* This block may be repeated to define multiple client lists with
	  different permissions.

	* The client lists are dynamically updateable.

	Access_Type(enum, values [None, MDONLY_RO],
		    default MDONLY_RO)

	Transports(enum list, values [UDP, TCP, RDMA], default [TCP])

	SecType(enum list, values [none, sys, krb5, krb5i, krb5p],
	        default [none, sys, krb5, krb5i, krb5p])

	PrivilegedPort(bool, default false)

	HA_Proxy_Protocol(enum list, values [with_ha_proxy, without_ha_proxy, any], default [any])

	Clients(client list, empty)

	* Client list entries can take on one of the following forms. This
	  parameter may be repeated to extend the list.

	*		Match any client
	@name		Netgroup name
	x.x.x.x/y	IPv4 network address, IPv6 addresses are also allowed
			but the format is too complex to show here
	wildcarded	If the string contains at least one ? or *
			character (and is not simply "*"), the string is
			used to pattern match host names. Note that [] may
			also be used, but the pattern MUST have at least one
			? or *
	hostname	Match a single client (match is by IP address, all
			addresses returned by getaddrinfo will match, the
			getaddrinfo call is made at config parsing time)
	IP address	Match a single client

LOG {}
------

	Default_log_level(token, values [NULL, FATAL, MAJ, CRIT, WARN, EVENT,
					 INFO, DEBUG, MID_DEBUG, M_DBG,
					 FULL_DEBUG, F_DBG], default none)

		If this option is NOT set, the fall back log level will be that
		specified in the -N option on the command line if that is set,
		otherwise the fallback level is EVENT.

		If a SIGHUP is issued, any components not specified in
		LOG { COMPONENTS {} } will be reset to this value.

	RPC_Debug_Flags(uint32, range 0 to UINT32_MAX, default 7)

		Debug flags for TIRPC (default 7 matches log level default EVENT).

		These flags are only used if the TIRPC component is set to DEBUG

	Display_UTC_Timestamp(bool, default false)

		If this is set to true, date and time in ganesha log file will
		use UTC timezone.

	Match_Policy(token, values [MATCH_ANY, MATCH_ALL], default MATCH_ANY)

		Specifies how conditional logging rules are evaluated when
		Clients and/or Exports are configured.

		MATCH_ANY
			Conditional logging is enabled if either the client
			OR the export matches.

		MATCH_ALL
			Conditional logging is enabled only if both the client
			AND the export match.

		This option controls the evaluation policy used by the
		Conditional logging block.

		If this option is NOT set, MATCH_ANY is used.

LOG { COMPONENTS {} }
---------------------

	These entries are of the form:

	COMPONENT = LEVEL;

	The components are: ALL, LOG, MEMLEAKS, FSAL, NFSPROTO,
			    NFS_V4, EXPORT, FILEHANDLE, DISPATCH, MDCACHE,
			    MDCACHE_LRU, HASHTABLE, HASHTABLE_CACHE, DUPREQ,
			    INIT, MAIN, IDMAPPER, NFS_READDIR, NFS_V4_LOCK,
			    CONFIG, CLIENTID, SESSIONS, PNFS, RW_LOCK, NLM,
			    TIRPC, NFS_CB, THREAD, NFS_V4_ACL, STATE, 9P,
			    9P_DISPATCH, FSAL_UP, DBUS, NFS_MSK, XPRT

	Some synonyms are:

	FH = FILEHANDLE
	HT = HASHTABLE
	CACHE_INODE_LRU = MDCAHCE_LRU
	CACHE_INODE = MDCACHE
	INODE_LRU = MDCAHCE_LRU
	INODE = MDCACHE
	DISP = DISPATCH
	LEAKS = MEMLEAKS
	NFS3 = NFSPROTO
	NFS4 = NFS_V4
	HT_CACHE = HASHTABLE_CACHE
	NFS_STARTUP = INIT
	NFS4_LOCK = NFS_V4_LOCK
	NFS4_ACL = NFS_V4_ACL
	9P_DISP = 9P_DISPATCH

	The log levels are: NULL, FATAL, MAJ, CRIT, WARN, EVENT,
			    INFO, DEBUG, MID_DEBUG, M_DBG,
			    FULL_DEBUG, F_DBG], default none

	ALL is a special component that when set, sets all components to the
	specified value, overriding any that are explicitly set. Note that if
	ALL is then removed from the config and SIGHUP is issued, all components
	will revert to what is explicitly set, or Default_Log_Level if that is
	specified, or the original log level from the -N command line option
	if that was set, or the code default of EVENT.

	TIRPC is a special component that also sets the active RPC_Debug_Flags.
	If the level for TIRPC is DEBUG or MID_DEBUG, the custom RPC_Debug_Flags
	set by that parameter will be used, otherwise flags will depend on the
	level the TIRPC component is set to:

	NULL or FATAL: 0

	CRIT or MAJ: TIRPC_DEBUG_FLAG_ERROR

	WARN: TIRPC_DEBUG_FLAG_ERROR | TIRPC_DEBUG_FLAG_WARN

	EVENT or INFO: TIRPC_DEBUG_FLAG_ERROR | TIRPC_DEBUG_FLAG_WARN | TIRPC_DEBUG_FLAG_EVENT

	DEBUG or MID_DEBUG: RPC_Debug_Flags

	FULL_DEBUG: 0xffffffff

LOG { FACILITY {} }
-------------------

	This block may be repeated to configure multiple facilities.

	name(string, no default)

	destination(string, no default, must be supplied)

	max_level(token, values [NULL, FATAL, MAJ, CRIT, WARN, EVENT,
				 INFO, DEBUG, MID_DEBUG, M_DBG,
				 FULL_DEBUG, F_DBG], default FULL_DEBUG)

	headers(token, values [none, component, all], default all)

	enable(token, values [idle, active, default], default idle)

LOG { FORMAT {} }
-----------------

	date_format(enum, values [ganesha, true, local, 8601, ISO-8601,
				  ISO 8601, ISO, syslog, syslog_usec,
				  false, none, user_defined], default ganesha)

	time_format(enum, values [ganesha, true, local, 8601, ISO-8601,
				  ISO 8601, ISO, syslog, syslog_usec,
				  false, none, user_defined], default ganesha)

	user_date_format(string, no default)

	user_time_format(string, no default)

	EPOCH(bool, default true)

	CLIENTIP(bool, default false)

	HOSTNAME(bool, default true)

	PROGNAME(bool, default true)

	PID(bool, default true)

	THREAD_NAME(bool, default true)

	FILE_NAME(bool, default true)

	LINE_NUM(bool, default true)

	FUNCTION_NAME(bool, default true)

	COMPONENT(bool, default true)

	LEVEL(bool, default true)

	OP_ID(bool, default false)

	CLIENT_REQ_XID(bool, default false)

LOG { CONDITIONAL {} }
---------------------

    Clients(client list, empty)

    * Client list entries can take on one of the following forms. This
      parameter may be repeated to extend the list.

        x.x.x.x/y       IPv4 network address, IPv6 addresses are also allowed
                        but the format is too complex to show here
        IP address      Match a single client

    Exports(Export list, empty)

    * Export list entries can take list of Export_IDs.

    COMPONENT = LEVEL;

	The components are: ALL, LOG, MEMLEAKS, FSAL, NFSPROTO,
			    NFS_V4, EXPORT, FILEHANDLE, DISPATCH, MDCACHE,
			    MDCACHE_LRU, HASHTABLE, HASHTABLE_CACHE, DUPREQ,
			    INIT, MAIN, IDMAPPER, NFS_READDIR, NFS_V4_LOCK,
			    CONFIG, CLIENTID, SESSIONS, PNFS, RW_LOCK, NLM,
			    TIRPC, NFS_CB, THREAD, NFS_V4_ACL, STATE, 9P,
			    9P_DISPATCH, FSAL_UP, DBUS, NFS_MSK, XPRT

	Some synonyms are:

	FH = FILEHANDLE
	HT = HASHTABLE
	CACHE_INODE_LRU = MDCAHCE_LRU
	CACHE_INODE = MDCACHE
	INODE_LRU = MDCAHCE_LRU
	INODE = MDCACHE
	DISP = DISPATCH
	LEAKS = MEMLEAKS
	NFS3 = NFSPROTO
	NFS4 = NFS_V4
	HT_CACHE = HASHTABLE_CACHE
	NFS_STARTUP = INIT
	NFS4_LOCK = NFS_V4_LOCK
	NFS4_ACL = NFS_V4_ACL
	9P_DISP = 9P_DISPATCH

	The log levels are: NULL, FATAL, MAJ, CRIT, WARN, EVENT,
			    INFO, DEBUG, MID_DEBUG, M_DBG,
			    FULL_DEBUG, F_DBG], default FULL_DEBUG

	ALL is a special component that when set, sets all components to the
	specified value, overriding any that are explicitly set. Note that if
	ALL is then removed from the config and SIGHUP is issued, all components
	will revert to what is explicitly set, or Default_Log_Level if that is
	specified, or the original log level from the -N command line option
	if that was set, or the code default of EVENT.

MDCACHE {}
----------

	NParts(uint32, range 1 to 32633, default 7)

	Cache_Size(uint32, range 1 to UINT32_MAX, default 32633)

	Use_Getattr_Directory_Invalidation(bool, default false)

	Dir_Chunk_Enable(bool, default true)

	Dir_Chunk(uint32, range 0 to UINT32_MAX, default 128)

	Detached_Mult(uint32, range 1 to UINT32_MAX, default 1)

	Chunks_HWMark(uint32, range 1 to UINT32_MAX, default 1000)

	Chunks_LWMark(uint32, range 1 to UINT32_MAX, default 1000)

	Entries_HWMark(uint32, range 1 to UINT32_MAX, default 100000)

	Entries_Release_Size(uint32, range 0 to UINT32_MAX, default 100)

	LRU_Run_Interval(uint32, range 1 to 24 * 3600, default 90)

	Cache_FDs(bool, default true)

	Close_Fast(bool, default false)

	FD_Limit_Percent(uint32, range 0 to 100, default 99)

	FD_HWMark_Percent(uint32, range 0 to 100, default 90)

	FD_LWMark_Percent(uint32, range 0 to 100, default 50)

	Reaper_Work(uint32, range 1 to 2000, default 0)

	Reaper_Work_Per_Lane(uint32, range 1 to UINT32_MAX, default 50)

	Biggest_Window(uint32, range 1 to 100, default 40)

	Required_Progress(uint32, range 1 to 50, default 5)

	Futility_Count(uint32, range 1 to 50, default 8)

	Dirmap_HWMark(uint32, range 1 to UINT32_MAX, default 10000)

	Files_Delegatable_Percent(int32, range 10 to 90, default 90)

	Use_Cached_Owner_On_Owner_Override(bool, true)

_9P {}
------

	Nb_Worker(uint32, range 1 to 1024*128, default 256)

	_9P_TCP_Port(uint16, range 1 to UINT16_MAX, default 564)

	_9P_RDMA_Port(uint16, range 1 to UINT16_MAX, default 5640)

	_9P_TCP_Msize(uint32, range 1024 to UINT32_MAX, default 65536)

	_9P_RDMA_Msize(uint32, range 1024 to UINT32_MAX, default 1048576)

	_9P_RDMA_Backlog(uint16, range 1 to UINT16_MAX, default 10)

	_9P_RDMA_Inpool_size(uint16, range 1 to UINT16_MAX, default 64)

	_9P_RDMA_Outpool_Size(uint16, range 1 to UINT16_MAX, default 32)

FSAL_LIST {}
------------

	Name(string, no default)

	This allows listing the names of the following FSAL specific
	config blocks to avoid config errors if there are no exports
	of that FSAL. This parameter may be repeated to extend the list.

CEPH {}
-------

	Ceph_Conf(path, default "")

	umask(mode, range 0 to 0777, default 0)

	client_oc(bool, default false)

	async(bool, default false)

	zerocopy(bool, default false)

GPFS {}
-------

	link_support(bool, default true)

	symlink_support(bool, default true)

	cansettime(bool, default true)

	umask(mode, range 0 to 0777, default 0)

	auth_xdev_export(bool, default false)

	Delegations(enum, values [None, read, write, readwrite, r, w, rw],
		    default read)

	pnfs_file(bool, default false)

	fsal_trace(bool, default true)

	fsal_grace(bool, default false)

MEM {}
-------

	Inode_Size(uint32, range 0 to 2097152, default 0)

	Up_Test_Interval(uint32, range 0 to UINT32_MAX, default 0)

	Async_Threads(uint32, range 0 to 100, default to 0)

RGW {}
-------

	The following configuration variables customize the
	startup of the FSAL's radosgw instance.

	* ceph_conf -- optional full-path to the Ceph configuration
	  file (equivalent to passing "-c /path/to/ceph.conf" to any
	  Ceph binary

	* name -- optional instance name (equivalent to passing
	  "--name client.rgw.foohost" to the radosgw binary);  the value
	  provided here should be the same as the section name (sans
	  brackets) of the radosgw facility in the Ceph configuration
	  file (which must exist)

	* cluster -- optional cluster name (equivalent to passing
	  "--cluster foo" to any Ceph binary);  use of a non-default
	  value for cluster name is uncommon, but can be verified by
	  examining the startup options of Ceph binaries

	* init_args -- additional argument strings which will be
	  passed verbatim to the radosgw instance startup process as
	  if they had been given on the radosgw command line;  provided
	  for customization in uncommon setups

	ceph_conf(path, default "")

	name(string, default "")

	cluster(string, default "")

	init_args(string, default "")

VFS {}
------

	link_support(bool, default true)

	symlink_support(bool, default true)

	cansettime(bool, default true)

	maxread(uint64, range 512 to 64*1024*1024, default 64*1024*1024)

	maxwrite(uint64, range 512 to 64*1024*1024, default 64*1024*1024)

	umask(mode, range 0 to 0777, default 0)

	auth_xdev_export(bool, default false)

	only_one_user(bool, default false)

XFS {}
------

	link_support(bool, default true)

	symlink_support(bool, default true)

	cansettime(bool, default true)

	maxread(uint64, range 512 to 64*1024*1024, default 64*1024*1024)

	maxwrite(uint64, range 512 to 64*1024*1024, default 64*1024*1024)

	umask(mode, range 0 to 0777, default 0)

	auth_xdev_export(bool, default false)

PROXY_V3 {}
--------

	/*MAX_READ_WRITE_SIZE == 1MB*/
	/*FSAL_MAXIOSIZE = 64 MB*/
	/*maxread and maxwrite will be clamped by the backend's FSINFO*/
	maxread(uint64, range 1024 to FSAL_MAXIOSIZE,
		default MAX_READ_WRITE_SIZE)

	maxwrite(uint64, range 1024 to FSAL_MAXIOSIZE,
		 default MAX_READ_WRITE_SIZE)

	allow_lookup_optimization(bool, default true)

PROXY_V4 {}
--------

	link_support(bool, default true)

	symlink_support(bool, default true)

	cansettime(bool, default true)

	/*MAX_READ_WRITE_SIZE == 1MB*/
	/*FSAL_MAXIOSIZE = 64 MB*/
	/*SEND_RECV_HEADER_SPACE == 512 Bytes*/
	maxread(uint64, range 512 to FSAL_MAXIOSIZE - SEND_RECV_HEADER_SPACE,
		default MAX_READ_WRITE_SIZE)

	maxwrite(uint64, range 512 to FSAL_MAXIOSIZE - SEND_RECV_HEADER_SPACE,
		 default MAX_READ_WRITE_SIZE)

	umask(mode, range 0 to 0777, default 0)

	auth_xdev_export(bool, default false)

RADOS_KV {}
--------

	ceph_conf(string, no default)

	userid(path, no default)

	namespace(string, default NULL)

	pool(string, default "nfs-ganesha")

	grace_oid(string, default "grace")

	nodeid(string, default result of gethostname())

RADOS_URLS {}
--------

	ceph_conf(string, no default)

	userid(path, no default)

	watch_url(url, no default)

QOS_DEFAULT_CONFIG {}
---------------------

    enable_qos(bool, default false)

    enable_tokens(bool, default false)

    enable_bw_control(bool, default false)

    enable_iops_control(bool, default false)

    enable_ds_control(bool, default false)

    combined_rw_bw_control(bool, default false)

    combined_rw_token_control(bool, default true)

    combined_rw_iops_control(bool, default true)

    qos_type(enum, values ["PE", "PC", "PEPC"], default "PEPC")

    /*More info on default, range can be found in src/include/nfs_qos.h*/

    max_export_combined_bw(uint64, range 1048576 to 107374182400,
			   default 2147483648)

    max_client_combined_bw(uint64, range 1048576 to 107374182400,
                           default 2147483648)

    max_export_write_bw(uint64, range 1048576 to 107374182400,
                        default 2147483648)

    max_export_read_bw(uint64, range 1048576 to 107374182400,
                       default 2147483648)

    max_client_write_bw(uint64, range 1048576 to 107374182400,
                        default 2147483648)

    max_client_read_bw(uint64, range 1048576 to 107374182400,
                       default 2147483648)

    max_export_iops(uint64, range 10 to 409600, default 8192)

    max_client_iops(uint64, range 10 to 409600, default 8192)

    max_export_write_iops(uint64, range 10 to 409600, default 8192)

    max_export_read_iops(uint64, range 10 to 409600, default 8192)

    max_client_write_iops(uint64, range 10 to 409600, default 8192)

    max_client_read_iops(uint64, range 10 to 409600, default 8192)

    max_export_write_tokens(uint64, range 3774873600 to UINT64_MAX,
			    default 90596966400)

    max_export_read_tokens(uint64, range 3774873600 to UINT64_MAX,
			   default 90596966400)

    max_client_write_tokens(uint64, range 3774873600 to UINT64_MAX,
			    default 90596966400)

    max_client_read_tokens(uint64, range 3774873600 to UINT64_MAX,
			   default 90596966400)

    export_write_tokens_renew_time(uint64, range 3600 to UINT64_MAX,
				   default 86400)

    export_read_tokens_renew_time(uint64, range 3600 to UINT64_MAX,
				  default 86400)

    client_write_tokens_renew_time(uint64, range 3600 to UINT64_MAX,
				   default 86400)

    client_read_tokens_renew_time(uint64, range 3600 to UINT64_MAX,
				  default 86400)

