src/io

This directory holds all the code used to move data across the wire, to store and retrieve data from local resources, to buffer data on servers, and to describe I/O accesses and physical data distribution.

bmi holds the Buffered Messaging Interface (BMI) implementations. The top-level directory holds code for mapping to the various underlying implementations and defining common data structures. Subdirectories hold implementations for GM (bmi_gm), TCP/IP (bmi_tcp), and InfiniBand using either the VAPI or OpenIB API (bmi_ib).

buffer holds the implementation of our internal buffering and caching component. At the time of writing this is not complete and is not enabled.

dev holds code that understands how to move data through a device file that is used by our Linux 2.6 kernel module. This is stored in this directory because it is hooked under the job component.

job holds the job component. This component is responsible for providing us with a common mechanism for queueing and testing for completion of operations on a variety of different resources, including all BMI, Trove, and the device listed above.

description holds code used to describe I/O accesses and physical data distributions.

trove holds implementations of the Trove storage interface. The top-level directory holds code for mapping to the various underlying implementations and defining common data structures. Currently there is only a single implementation of Trove, called DBPF (for DB Plus Files). This implementation builds on Berkeley DB and local UNIX files for storing local data.

flow holds the Flow component implementations. These components are responsible for ferrying data between different types of endpoints. Valid endpoints include BMI, Trove, memory, and the buffer cache.