Patent ID: 8055726

Claim:
A method for writing data in a network having a host system communicating with a target via a local router and a remote router, comprising: (a) receiving an original write command from the host system to write data to the target; wherein the local router receives the original write command; (b) sending a command notifying the host system that the target is ready to receive the data, wherein the local router sends the command to the host system instead of waiting for the target to respond and the host system is unaware that the local router sent the command; (c) receiving data from the host system, wherein the local router receives the data from the host system; (d) segmenting the original write command and the data into a plurality of segmented write commands and segmented data; wherein the local router segments the original write command and the data into a number of segments with each segment including a segmented write command from the plurality of write commands, and segmented data; where a segment size for each segment and the number of segments depend on a transfer size negotiated between the local router and the remote router; (e) sending the plurality of segmented write commands with the segmented data to the remote router; (f) sending a first status command to the local router for all of the plurality of segmented write commands except for a first write command from among the plurality of segmented write commands of step (d); wherein the remote router sends the first status command to the local router; (g) assembling the plurality of segmented write commands with the segmented data to a single write command, wherein the remote router assembles the plurality of segmented write commands with the segmented data; (h) sending the single write command to the target; wherein the remote router sends the single write command to the target; (i) sending the data to the target after receiving a command from the target notifying the remote router that the target is ready to receive the data; (j) sending a second status command to the local router, wherein the remote router sends the second status command; and (k) sending the second status command to the host system, wherein the local router sends the second status command.