InfiniBand Architecture Development and Deployment: A Strategic Guide to Server I/O Solutions

One of the best ways to demonstrate how applications apply technology is by example. This chapter looks at I/O operation and how an I/O driver can be structured to control a block storage I/O controller.
This example uses the reference model developed in Chapter 8 and applies the concepts discussed in Chapters 9, 10, and 11 to illustrate the process flow of a storage driver. It shows the steps involved in initializing the application, how the application creates and connects its queue pairs, and how the application uses the QPs to perform I/O transactions (i.e., perform disk reads and writes).
The example makes the following assumptions:
The subnet consists of a subnet manager, a host, and an I/O unit with a device management agent.
The I/O controller protocol uses a service name of Storage.xyz.
The host and I/O unit share a partition where the host is not a limited member.
The host employs the Channel Access Layer defined in Chapter 8 and Chapter 9.
The four main modules are:
Initialization This starts at the point where the I/O Resource Manager (IORM) finds the storage controller on an I/O unit and loads the I/O driver.
Assignment The IORM identifies the I/O controller to the I/O driver, and the I/O driver uses management functions to derive pertinent information about the I/O controller and establish connections with it. This phase repeats each time the IORM assigns a new I/O controller to the I/O driver.
Input...