Ordered writes for SRDF assist
First Claim
1. A method of sending data, comprising:
- obtaining a first predetermined value for a sequence number;
obtaining blocks of data, wherein each of the blocks of data corresponds to a packet of data;
assigning the first predetermined value as the sequence number to each of the packets of data, wherein at least two packets of data are assigned the same sequence number before the at least two packets of data are sent to a destination;
incrementing the sequence number periodically, according to an amount of time between a first block of data being provided and a second block of data being provided, wherein the second block of data being provided depends upon the first block of data being provided; and
in response to the sequence number becoming equal to a second predetermined value different from the first predetermined value, acknowledging receipt of the blocks of data corresponding to the packets of data that are assigned the first predetermined value as the sequence number and sending the packets of data that are assigned the first predetermined value as the sequence number to the destination, wherein packets of data associated with the same sequence number are sent to the destination in an order that is independent of an order in which the packets are obtained.
9 Assignments
0 Petitions
Accused Products
Abstract
Transmitting data from a source to a destination, includes receiving the data from the source and providing the data to the destination using a network, where the data is acknowledged to the source as being successfully received at the destination prior to all of the data being provided to the network. The source may be a primary storage device. The destination may be a secondary storage device. The data may be provided from the source in a first format and may be provided to the network in a second format that is different from the first format where the first format may be RDF and the second format may be TCP/IP or UDP. The destination may receive the data in a first format different from a second format used to transmit the data over the network. The first format may be RDF and the second format may be TCP/IP or UDP.
17 Citations
33 Claims
-
1. A method of sending data, comprising:
-
obtaining a first predetermined value for a sequence number; obtaining blocks of data, wherein each of the blocks of data corresponds to a packet of data; assigning the first predetermined value as the sequence number to each of the packets of data, wherein at least two packets of data are assigned the same sequence number before the at least two packets of data are sent to a destination; incrementing the sequence number periodically, according to an amount of time between a first block of data being provided and a second block of data being provided, wherein the second block of data being provided depends upon the first block of data being provided; and in response to the sequence number becoming equal to a second predetermined value different from the first predetermined value, acknowledging receipt of the blocks of data corresponding to the packets of data that are assigned the first predetermined value as the sequence number and sending the packets of data that are assigned the first predetermined value as the sequence number to the destination, wherein packets of data associated with the same sequence number are sent to the destination in an order that is independent of an order in which the packets are obtained. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of receiving data, comprising:
-
accumulating received packets of data having a sequence number equal to a first predetermined value, wherein at least two packets of data have the same sequence number, the sequence number being assigned before the at least two packets of data are transferred to a receiving device; incrementing the sequence number periodically, according to an amount of time between a first packet of data being provided and a second block of data being provided, wherein the second packet of data being provided depends upon the first packet of data being provided; obtaining a first indication that the sequence number equals the first predetermined value; obtaining a second indication that the sequence number equals a second predetermined value different from the first predetermined value; and in response to obtaining the second indication, transferring data corresponding to packets of data having the sequence number equal to the first predetermined value to the receiving device, wherein packets of data associated with the same sequence number are transferred to the receiving device in an order that is independent of an order in which the packets are accumulated. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A method of transferring data, comprising:
-
obtaining a first predetermined value for a first sequence number; obtaining blocks of data, wherein each of the blocks of data corresponds to a packet of data; assigning the first predetermined value as the first sequence number to each of the packets of data, wherein at least two packets of data are assigned the same sequence number before the at least two packets of data are sent to a destination; in response to the first sequence number becoming equal to a second predetermined value different from the first predetermined value, acknowledging receipt of the blocks of data corresponding to the packets of data that are assigned the first predetermined value as the sequence number and sending the packets of data that are assigned the first predetermined value as the sequence number to the destination, wherein packets of data associated with the same sequence number are sent to the destination in an order that is independent of an order in which the packets are obtained; accumulating received packets of data having a sequence number equal to said first predetermined value; obtaining a first indication that the sequence number equals the first predetermined value; obtaining a second indication that the sequence number equals a second predetermined value different from the first predetermined value; and in response to obtaining the second indication, transferring data corresponding to packets of data having the sequence number equal to the first predetermined value to a receiving device, wherein packets of data associated with the same sequence number are transferred to the receiving device in an order that is independent of an order in which the packets are accumulated.
-
-
15. A computer system comprising:
-
a host performing a data operation for transferring blocks of data from a first device to a second device; a first WAN blade connected to said first device; a second WAN blade connected to said first WAN blade by a network, said second device being connected to said second WAN blade; wherein said first WAN blade includes machine executable code that receives said blocks of data from said first storage device, each of said blocks corresponding to a packet of data, assigns a first predetermined value to each of said packets of data, wherein at least two packets of data are assigned the same sequence number before the at least two packets are sent to the second device, and, in response to receiving a second predetermined value different than said first predetermined value, acknowledges receipt of said blocks of data associated with said first predetermined value and sending the packets of data that are assigned the first predetermined value as a sequence number to said second device, wherein packets of data associated with the same sequence number are sent to the destination in an order that is independent of an order in which the packets are received; and said second WAN blade includes machine executable code that receives said packets of data associated with said first predetermined value, obtains an indication of said first predetermined value as a sequence number, obtains a second indication that the sequence number equals a second predetermined value different from the first predetermined value, and in response to obtaining the second indication, transfers data corresponding to packets of data having the sequence number equal to the first predetermined value to said second device, wherein packets of data associated with the same sequence number are transferred to the second device in an order that is independent of an order in which the packets are received. - View Dependent Claims (16, 17, 18, 19)
-
-
20. A computer program product, implemented in a computer-readable medium, for sending data, comprising:
-
machine executable code that obtains a first predetermined value for a sequence number; machine executable code that obtains blocks of data, wherein each of the blocks of data corresponds to a packet of data; machine executable code that assigns the first predetermined value as the sequence number to each of the packets of data, wherein at least two packets of data are assigned the same sequence number before the at least two packets are sent to a destination; machine readable code that increments the sequence number periodically, according to an amount of time between a first block of data being provided and a second block of data being provided, wherein the second block of data being provided depends upon the first block of data being provided; and machine executable code that, in response to the sequence number becoming equal to a second predetermined value different from the first predetermined value, acknowledges receipt of the blocks of data corresponding to the packets of data that are assigned the first predetermined value as the sequence number and sending the packets of data that are assigned the first predetermined value as the sequence number to the destination, wherein packets of data associated with the same sequence number are sent to the destination in an order that is independent of an order in which the packets are obtained. - View Dependent Claims (21, 22, 23, 24, 25)
-
-
26. A computer program product, implemented in a computer-readable medium, for receiving data, comprising:
-
machine executable code that accumulates received packets of data having a sequence number equal to a first predetermined value, wherein at least two packets of data have the same sequence number, the sequence number being assigned before the at least two packets are transferred to a receiving device; machine readable code that increments the sequence number periodically, according to an amount of time between a first packet of data being provided and a second block of data being provided, wherein the second packet of data being provided depends upon the first packet of data being provided; machine executable code that obtains a first indication that the sequence number equals the first predetermined value; machine executable code that obtains a second indication that the sequence number equals a second predetermined value different from the first predetermined value; and machine executable code that, in response to obtaining the second indication, transfers data corresponding to packets of data having the sequence number equal to the first predetermined value to the receiving device, wherein packets of data associated with the same sequence number are transferred to the receiving device in an order that is independent of an order in which the packets are accumulated. - View Dependent Claims (27, 28, 29, 30, 31, 32)
-
-
33. A computer program product, implemented in a computer-readable medium, for transferring data, comprising:
-
machine executable code that obtains a first predetermined value for a first sequence number; machine executable code that obtains blocks of data, wherein each of the blocks of data corresponds to a packet of data; machine executable code that assigns the first predetermined value as the first sequence number to each of the packets of data, wherein at least two packets of data are assigned the same sequence number before the at least two packets are sent to a destination; machine executable code that, in response to the first sequence number becoming equal to a second predetermined value different from the first predetermined value, acknowledges receipt of the blocks of data corresponding to the packets of data that are assigned the first predetermined value as the sequence number and sending the packets of data that are assigned the first predetermined value as the sequence number to the destination, wherein packets of data associated with the same sequence number are sent to the destination in an order that is independent of an order in which the packets are obtained; machine executable code that accumulates received packets of data having a sequence number equal to the first predetermined value; machine executable code that obtains a first indication that the sequence number equals the first predetermined value; machine executable code that obtains a second indication that the sequence number equals a second predetermined value different from the first predetermined value; and machine executable code that, in response to obtaining the second indication, transfers data corresponding to packets of data having the sequence number equal to the first predetermined value to a receiving device, wherein packets of data associated with the same sequence number are transferred to the receiving device in an order that is independent of an order in which the packets are accumulated.
-
Specification