z/OS UNIX System Services File System Interface Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


DFS-style file exporters

z/OS UNIX System Services File System Interface Reference
SA23-2285-00

The main difference between a DFS-style server, called a file exporter here, and an NFS-style server is that a file exporter controls both local and remote access to the file systems that it exports. It does this through the use of an exit program that is specified at the time the exporter registers with v_reg().

A file exporter exports entire mounted file systems with the v_export() function. Usually the exporter is set up with a list of file systems that it is to export, and these are exported during initialization.

An exported file system is made known to the network in general. End users at DFS-style clients access all network files through a single "DFS" mount point on their system. The clients call a name server to find files that they are interested in, and so they are not affected when the files are moved. This differs from an NFS-style client, whose user individually mounts directories from each remote system on particular local mount points. The location of the directory, and thus the files under it, is specified at mount time, and so cannot be changed without changing the mount at each client.

For vnode operations that do not originate with the file exporter itself, an exporter exit program is used to synchronize file changes. The exporter exit program is invoked before and after every vnode operation that is called for files within an exported file system. The exit program communicates with the file exporter to coordinate file sharing between local users and remote clients. In effect, the exit program is serving as a "DFS client" for all the local users of the exported file system. Only tokens that grant permission to continue with the vnode operation are transferred via the exit, and not file data. In this way the exit and file exporter ensure that when a local program reads a file it will see all changes that may have been made to this file by remote clients.

The general flow is:
  1. The exit is loaded and called for initialization when v_reg() is called.
  2. V_export() is called by the file exporter to identify the file systems that are being exported. V_export() has the same output as v_rpn(), and the file exporter proceeds to access local data in the same way that NFS-style servers do.
  3. The exit program is called before and after every vnode operation for an exported file system that does not originate from the file exporter.

    The exit program can communicate with the file exporter address space through its own internal mechanisms, if necessary. Significant performance degradation is possible for exported file systems if the exit and exporter are not designed to minimize this communication.

    The OSI services are available to the exit program.

    The exit can cause the vnode operation to be rejected, with return and reason codes that are passed back to the caller.

  4. The osi_ctl() service is available for asynchronous communication from the file exporter address space to the exit program.
  5. The exit program is also called when a file system is unexported and when the file exporter terminates. In the latter case the exit program is also deleted.

The interface between the LFS and the exporter exit is the GXPL structure. Refer to Interface structures for C language servers and clients for the structure itself and the C prototype of the interface.

The exit program receives control in the kernel address space and in the following environment:

Operation Environment
Authorization: Supervisor state, PSW key 0
Dispatchable unit mode: Task
Cross memory mode: Any
AMODE: 31-bit
ASC mode: Primary mode
Interrupt status: Enabled for interrupts
Locks: Unlocked
Control parameters: All parameters are in key 0 storage in the primary address space. The parameters are not fetch protected.

Registers at Entry. The contents of the registers on entry to the exit are:

Register
Contents
0
Undefined
1
Parameter list address. The list contains one item that is the address of the Gxpl structure.
2-12
Undefined
13
Save area address, of a 136-byte save area.
14
Return address
15
Entry address
AR0-15
Undefined

Environment at Exit. Upon return from the exit, the entry environment must be restored as follows:

Registers at Exit. Upon return from the exit, the register contents must be

2-13
Restored from the entry values
0,1,14,15
Undefined
AR0-15
Untouched or restored from the entry values.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014