3.6 IO Class

The IO class maintains all IO objects. The IO objects represent an adapter, device, media, or an abstraction of the media to which IO requests can be submitted for the storage or retrieval of data or media management. Though the IO objects are maintained by the IO class, they are actually instantiated and managed by objects of the object manager class. The IO class can be considered the abstract super class of all IO objects.

This section covers the following topics:

3.6.1 IO Object Registration

IO objects are registered by the object manager class and is currently beyond the scope of this document.

3.6.2 IO Object Generic Information

An IO object's generic information can be obtained by calling MM_ReturnObjectGenericInfo. The IOObjectGenericInfoDef structure is returned for the IO OBID.

3.6.3 IO Object Mapping

The IO object mapping information, obtained by calling MM_ReturnObjectMappingInfo, defines an IO object's parents, siblings, and children. The size of the mapping information is calculated by adding to 3 LONGs an additional LONG for each parent, child, and sibling. So, if an IO object has 1 parent, 1 sibling (itself), and 2 children, the size of the mapping table must then be at least 7 LONGs and would be as defined by the IOObjectMappingTableDef structure.

The number of parents, siblings, and children can be found in the IO object’s generic information.

3.6.4 Logical Partitions

There are a number of different types of IO objects within the IO class, each defined by an object manager object. (See Object Manager Class) One exception to this is the logical partition. The logical partition is a quasi object type that represents the highest abstraction of a NetWare® partition. The logical partition starts with the NetWare partition. If the NetWare partition were abstracted into, for example, a Hot Fix object, in order to add the fault tolerance feature sector sparing, then the logical partition status of the NetWare partition object would move to the Hot Fix object. Again, if the Hot Fix were abstracted into a mirror, so as to create redundant data, then the logical partition status would move from the Hot Fix object to the mirror object. Typically logical partitions are either NetWare partition objects (including NSS partitions) or mirror objects.

3.6.5 Data Path Hierarchy

Many of the IO object types work together to define the IO data path. IO requests can start anywhere within the path and then always proceed downward and an IO request never completes higher in the path than its origin. For example, in the following figure, if an IO request originated at the partition object, it would proceed downward to the media object and would complete through the partition object and not the Hot Fix or mirror object.

Figure 3-2 Data Path Hierarchy