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

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to