Ordering driver is a transform driver that can be used to take advantage of the drivers that support parallel data transfer using multiple streams and at the same time receive the data in order. Though it does not allow multiple reads to be outstanding, it does not restrict the use of parallel reads feature provided by the underlying driver. The user can specify the the number of parallel reads on the attr. Ordering driver will have a maximum of this many number of reads outstanding to the driver below it on the stack. It buffers the data read and delivers it to the user in order. It has to be noted that it allows multiple writes to be outstanding and a read can be outstanding when there is one or more write(s) outstanding. This driver can be used in buffering mode where it just buffers the data read (without caring about the offsets) and delivers it to user when requested. The user can configure the buffer size and the maximum number of buffers that this driver can create for reading data from the driver below. Limitations: Ordering driver ignores the write wait_for_bytes and passes iovec_len as the write wait_for_bytes for the driver below it. Ordering driver accepts any read wait_for_bytes but always passes a wait_for_bytes of 1 to the driver below. This is because GridFTP and Mode E drivers (atleast for now) are the ones that support parallel streams and they both enforce that read wait_for_bytes should be 1 (Mode E allows read wait_for_bytes to be 0 for the offset reads but this feature is not used here).