Patent ID: 8090801

Claim:
A method for performing remote access commands between nodes, the method comprising: establishing a mutually pre-agreed upon data allotment for a first node and a second node; detecting an application request in a request queue of the first node, the application request identifying a data access task to be performed between the first node and the second node, wherein the application request is a remote direct memory access (RDMA) request for the first node to access data in a memory at the second node and wherein the first node and the second node exchange requests and responses to perform the data access task via a first channel adapter at the first node and a second channel adapter at the second node; and assigning a context including a set of channel adapter resources of the first node to process the application request to completion of the data access task, the context operating a task manager that tracks an offset for the data access task, wherein the set of channel adapter resources are hardware resources within the first channel adapter of the first node; issuing a first request from the first node to the second node, the first request requesting the data access task be performed between the first node and the second node; receiving, at the first node, a first response from the second node that partially completes the data access task and that contains a first amount of data not exceeding the data allotment; issuing at least one subsidiary request from the first node to the second node to further complete the data access task between the first node and the second node, the at least one subsidiary request based on an amount of partial completion of the data access task between the first node and the second node; and receiving, from the second node in response to the at least one subsidiary request, at least one subsidiary response that further completes the data access task between the first node and the second node and that contains a second amount of data not exceeding the data allotment; wherein a new starting value for subsidiary data to be transferred for each of the at least one subsidiary request is calculated from the offset; and wherein the context is pre-empted between the first response and a first subsidiary request, and between a subsidiary response and a subsequent subsidiary request, wherein the pre-empted context is available to be assigned to other data access tasks by the first channel adapter performing a context switch from the data access task to another data access task of the other data access tasks.