I am intentionally cross-posting this e-mail in order to obtain feedback from the OpenAFS user and developer communities.
OpenAFS does not have a configuration file for use by administrators to configure the various services. As a result, each time a new configuration option is created it has been implemented either as a compile time option or a run time option controlled by a command-line switch. The gatekeepers are opposed to the addition of new compile time options because it puts packagers in the position of determining what features administrators and end users are able to deploy without building from source. However, additional command-line parameters have their own complexity issues. For example, the current fileserver command line has approximate forty options; many of which are no longer optional for reasonable deployment configurations. *fileserver* [*-auditlog* </path to log file/>] [*-d* </debug level/>] [*-p* </number of processes/>] [*-spare* </number of spare blocks/>] [*-pctspare* </percentage spare/>] [*-b* </buffers/>] [*-l* </large vnodes/>] [*-s* </small vnodes/>] [*-vc* </volume cachesize/>] [*-w* </call back wait interval/>] [*-cb* </number of call backs/>] [*-banner*] [*-novbc*] [*-implicit* </admin mode bits: rlidwka/>] [*-readonly*] [*-hr* </number of hours between refreshing the host cps/>] [*-busyat* </redirect clients when queue > n/>] [*-nobusy*] [*-rxpck* </number of rx extra packets/>] [*-rxdbg*] [*-rxdbge*] [*-rxmaxmtu* </bytes/>] [*-nojumbo* [*-jumbo* [*-rxbind* [*-allow-dotted-principals*] [*-L*] [*-S*] [*-k* </stack size/>] [*-realm* </Kerberos realm name/>] [*-udpsize* </size of socket buffer in bytes/>] [*-sendsize* </size of send buffer in bytes/>] [*-abortthreshold* </abort threshold/>] [*-enable_peer_stats*] [*-enable_process_stats*] [*-syslog* [</ loglevel />]] [*-mrafslogs*] [*-saneacls*] [*-help*] [*-fs-state-dont-save*] [*-fs-state-dont-restore*] [*-fs-state-verify*] (none | save | restore | both)] [*-vhashsize* </log(2) of number of volume hash buckets/>] [*-vlrudisable*] [*-vlruthresh* </minutes before eligibility for soft detach/>] [*-vlruinterval* </seconds between VLRU scans/>] [*-vlrumax* </max volumes to soft detach in one VLRU scan/>] [*-vattachpar* </number of volume attach threads/>] [*-m* </min percentage spare in partition/>] [*-lock*] There are several proposals on the table for additional features that require new configuration capabilities. I believe that it is time that OpenAFS adopt a configuration file format and library. One proposal on the table is to adopt the Kerberos Profile Library. The benefits are that the file format is human modifiable; is familiar to just about all OpenAFS administrators since everyone has converted to Kerberos v5 :-); is machine readable and writable; and there are library implementations that are license compatible with OpenAFS. One unique feature of the Kerberos Profile library is the ability to merge multiple files into a single profile. A second proposal is to use the Windows INI file format. There are similar benefits to that of the Kerberos Profile Library. The primary difference between the Windows INI file format and the Kerberos Profile format is that the Kerberos Profile format supports a multiple level hierarchy of configuration whereas the Windows INI file format is just a single level. There are open source implementations of parsers that are available under the MIT license. The door is certainly open to other proposals. Whatever is selected I would like there to be library support not only for reading the configuration files but for writing them as well. Currently, configuration of OpenAFS Services can be done remotely via the bos command. I would like to ensure the possibility that we can add support for remotely manipulating the contents of the configuration files in the future. Please comment. Jeffrey Altman
smime.p7s
Description: S/MIME Cryptographic Signature
