Data management events
Data management events arrive on a session queue from any of the nodes in the GPFS cluster.
The source node of the event is identified by the ev_nodeid field in the header of each event message in the structure dm_eventmsg. The identification is the GPFS cluster data node number, which is attribute node_number in the mmsdrfs2 file for a PSSP node or mmsdrfs file for any other type of node.
- The event is enabled.
- It has a disposition.
A file operation will fail with the EIO error if there is no disposition for an event that is enabled and would otherwise be generated.
In GPFS, event lists are persistent.
Event dispositions are specified per file system and are not persistent. They must be set explicitly after the session is created.
Event generation mechanisms have limited capacity. In case resources are exceeded, new file operations will wait indefinitely for free resources.
File operations wait indefinitely for a response from synchronous events. The dmapiEventTimeout configuration attribute on the mmchconfig command, can be used to set a timeout on events that originate from NFS file operations. This is necessary because NFS servers have a limited number of threads that cannot be blocked for long periods of time. Refer to GPFS configuration attributes for DMAPI and Support for NFS.
The XDSM standard permits asynchronous events to be discarded at any time. In GPFS, asynchronous events are guaranteed when the system runs normally, but may be lost during abnormal conditions, such as failure of GPFS on the session node. Asynchronous events are delivered in a timely manner. That is, an asynchronous event is enqueued to the session before the corresponding file operation completes.
- The user application on the source node performs a file operation on a GPFS file. The file operation thread generates a synchronous event and blocks, waiting for a response.
- GPFS on the source node sends the event to GPFS on the session node, according to the disposition for that event. The event is enqueued to the session queue on the session node.
- The Data Management application on the session node receives the event (using dm_get_events) and handles it.
- The Data Management application on the session node responds to the event (using dm_respond_event).
- GPFS on the session node sends the response to GPFS on the source node.
- GPFS on the source node passes the response to the file operation thread and unblocks it. The file operation continues.
