;;; -*- Mode:gate; Fonts:(HL12 HL12I HL12B CPTFONTB HL12BI HL12B HL12I ) -*- =Node: 4File Servers* =Text: 3FILE SERVERS* Files on remote file servers are accessed using 1file servers* over the Chaosnet. Normally connections to servers are established automatically when you try to use them, but there are a few ways you can interact with them explicitly. When characters are written to a file server computer that normally uses the ASCII character set to store text, Lisp Machine characters are mapped into an encoding that is reasonably close to an ASCII transliteration of the text. When a file is written, the characters are converted into this encoding; the inverse transformation is done when a file is read back. No information is lost. Note that the length of a file, in characters, is not the same measured in original Lisp Machine characters as it is measured in the encoded ASCII characters. In the currently implemented ASCII file servers, the following encoding is used. All printing characters and any characters not mentioned explicitly here are represented as themselves. Codes 010 (lambda), 011 (gamma), 012 (delta), 014 (plus-minus), 015 (circle-plus), 177 (integral), 200 through 207 inclusive, 213 (2Delete*), and 216 and anything higher, are preceded by a 177; that is, 177 is used as a quoting character for these codes. Codes 210 (2Overstrike*), 211 (2Tab*), 212 (2Line*), and 214 (2Page*), are converted to their ASCII cognates, namely 010 (backspace), 011 (horizontal tab), 012 (line feed), and 014 (form feed) respectively. Code 215 (2Return*) is converted into 015 (carriage return) followed by 012 (line feed). Code 377 is ignored completely, and so cannot be stored in files. When a file server is first created for you on a particular host, you must tell the server how to log in on that host. This involves specifying a 1username*, and, if the obstructionists are in control of your site, a password. The Lisp Machine prompts you for these on the terminal when they are needed. Logging in a file server is not the same thing as logging in on the Lisp Machine (see 2login*, 4(MISCELL-2)Logging In*). The latter identifies you as a user in general and involves specifying one host, your login host. The former identifies you to a particular file server host and must be done for each host on which you access files. However, logging in on the Lisp Machine does specify the username for your login host and logs in a file server there. The Lisp Machine uses your username (or the part that follows the last period) as a first guess for your password (this happens to take no extra time). If that does not work, you are asked to type a password, or else a username and a password, on the keyboard. You do not have to give the same user name that you are logged in as, since you may have or use different user names on different machines. Once a password is recorded for one host, the system uses that password as the guess if you connect to a file server on another host. 3fs:user-unames* 1Variable* This is an alist matching host names with the usernames you have specified on those hosts. Each element is the cons of a host object and the username, as a string. For hosts running ITS, the symbol 2fs:its* is used instead of a host object. This is because every user has the same username on all ITS hosts. 3fs:user-host-password-alist* 1Variable* Once you have specified a password for a given username and host, it is remembered for the duration of the session in this variable. The value is a list of elements, each of the form 3((1username* 1hostname*) 1password*)* All three data are strings. The remembered passwords are used if more than one file server is needed on the same host, or if the connection is broken and a new file server needs to be created. If you are very scared of your password being known, you can turn off the recording by setting this variable: 3fs:record-passwords-flag* 1Variable* Passwords are recorded when typed in if this variable is non-2nil*. You should set the variable at the front of your init file, and also set 2fs:user-host-password-alist* to 2nil*, since it will already have recorded your password when you logged in. If you do not use a file server for a period of time, it is killed to save resources on the server host. 3fs:host-unit-lifetime* 1Variable* This is the length of time after which an idle file server connection should be closed, in 60ths of a second. The default is 20 minutes. Some hosts have a caste system in which all users are not equal. It is sometimes necessary to enable one's privileges in order to exercise them. This is done with these functions: 3fs:enable-capabilities* 1host* &rest 1capabilities* Enables the named capabilities on file servers for the specified host. 1capabilities* is a list of strings, whose meanings depend on the particular file system that is available on 1host*. If 1capabilities* is 2nil*, a default list of capabilities is enabled; the default is also dependent on the operating system type. 3fs:disable-capabilities* 1host* &rest 1capabilities* Disables the named capabilities on file servers for the specified host. 1capabilities* is a list of strings, whose meanings depend on the particular file system that is available on 1host*. If 1capabilities* is 2nil*, a default list of capabilities is disabled; the default is also dependent on the operating system type. The PEEK utility has a mode that displays the status of all your file connections, and of the 1host unit* data structures that record them. Clicking on a connection with the mouse gets a menu of operations, of which the most interesting is 2reset*. Resetting a host unit may be useful if the connection becomes hung. =Node: 4Errors in Communication with File Servers* =Text: 3ERRORS IN COMMUNICATION WITH FILE SERVERS fs:file-request-failure* (3fs:file-error* 3error*) 1Condition* This condition name categorizes errors that prevent the file system from processing the request made by the program. The following condition names are always accompanied by the more general classifications 2fs:file-request-failure*, 2fs:file-error*, and 2error*. 3fs:data-error* 1Condition* This condition signifies inconsistent data found in the file system, indicating a failure in the file system software or hardware. 3fs:host-not-available* 1Condition* This condition signifies that the file server host is up, but refusing connections for file servers. 3fs:network-lossage* 1Condition* This condition signifies certain problems in the use of the Chaosnet by a file server, such as failure to open a data connection when it is expected. 3fs:not-enough-resources* 1Condition* This condition signifies a shortage of resources needed to consider processing a request, as opposed to resources used up by the request itself. This may include running out of network connections or job slots on the server host. It does not include running out of space in a directory or running out of disk space, because these are resources whose requirements come from processing the request. 3fs:unknown-operation* 1Condition* This condition signifies that the particular file system fails to implement a standardly defined operation; such as, expunging or undeletion on ITS.