System and method with guaranteed maximum command response time
First Claim
1. In a data storage system that includes a host computer operatively coupled by a controller to a storage device, a method to provide the host computer with a status corresponding to success of a first command, the method comprising the following steps:
- (a) receiving the first command;
(b) defining a first time interval (Δ
T1) that does not exceed a predetermined maximum command response time in which said status must be sent to said host computer;
(c) distributing to the storage device at least one second command responsive to said first command;
(d) monitoring said second command distributed at step (c) to determine a first time status that will be a first success status if said second command completes execution within said Δ
T1, and that will be a first failure status if said second command fails to complete execution within said Δ
T1; and
(e) sending to said host computer the status selected from a group consisting of;
(i) data associated with said first command if step (d) determines a first success status; and
(ii) a first status if step (d) determines that said first time status is said first failure status.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention is directed to a system in method implemented in a data storage system that provides a status corresponding to a command initiated by a host server to the host server within a guaranteed maximum command response time. In one aspect, the system and method of the present invention accomplish this by associating a time stamp with the command before it is distributed to a number of data storage devices to be executed. The progress of the command'"'"'s execution is monitored at an interval less than the maximum command response time. If the present invention determines that the command will not complete within the maximum command response time, the system method of the present invention sends a corresponding status to the host server.
34 Citations
59 Claims
-
1. In a data storage system that includes a host computer operatively coupled by a controller to a storage device, a method to provide the host computer with a status corresponding to success of a first command, the method comprising the following steps:
-
(a) receiving the first command;
(b) defining a first time interval (Δ
T1) that does not exceed a predetermined maximum command response time in which said status must be sent to said host computer;
(c) distributing to the storage device at least one second command responsive to said first command;
(d) monitoring said second command distributed at step (c) to determine a first time status that will be a first success status if said second command completes execution within said Δ
T1, and that will be a first failure status if said second command fails to complete execution within said Δ
T1; and
(e) sending to said host computer the status selected from a group consisting of;
(i) data associated with said first command if step (d) determines a first success status; and
(ii) a first status if step (d) determines that said first time status is said first failure status.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 38)
saving a set of results of said second command distributed at step (c) into a data cache coupled with the controller;
receiving a third command that represents a subsequent instance of the first command; and
sending to said host computer the set of results in response to receiving the third command.
-
-
10. The method of claim 1, wherein the storage device is a Redundant Array of Independent Disks (RAID) and the controller is a RAID controller.
-
11. The method of claim 1, wherein at step (e)(i) further comprises sending a good status to the host computer.
-
12. The method of claim 1, wherein at least one of the steps is carried out by the controller.
-
13. The method of claim 1, wherein the host computer initiates the first command at step (a).
-
14. The method of claim 1, wherein the status is select from a group consisting of:
- the first status;
a second status; and
a successful first command.
- the first status;
-
15. The method of claim 1, wherein:
-
step (b) includes associating with said first command a time stamp showing when said first command was received by said controller, and further includes initiating at a time of said time stamp a second time interval (Δ
T2) that is less than said Δ
T1;
step (d) further includes monitoring said second command distributed at step (c) to determine a second time status that will be a second success status if said second command completes executions within said Δ
T2, and will be a second failure status if said second command fails to complete within said Δ
T2; and
said group at step (e) further consisting of;
(iii) the first status if step (d) determines that said second time status is said second failure status.
-
-
16. The method of claim 15, wherein in said first status includes a busy status.
-
17. The method of claim 15, wherein said second command at step (d) is selected from a group consisting of:
- a SCSI write data command; and
a SCSI read data command.
- a SCSI write data command; and
-
18. The method of claim 15, wherein said Δ
- T2 is reduced by a proportional amount time that the controller requires to send the status back to the host computer.
-
19. The method of claim 15, wherein said group at step (e) further consisting of:
- (iv) posting a second status to said host computer if step (d) determines a second time status is said second success status.
-
20. The method of claim 19, wherein said second status includes a good status.
-
21. The method of claim 15, further including defining a third time interval (Δ
- T3) that does not exceed said Δ
T2; and
wherein said step (d) is an iterative process that reoccurs at every Δ
T3.
- T3) that does not exceed said Δ
-
22. The method of claim 21, wherein said step (d) is an iterative process that reoccurs at every third Δ
- T3.
-
23. The method of claim 21, wherein:
-
said Δ
T1 is a time interval ranging from about 3 seconds to about 10 seconds;
said Δ
T2 is a time interval ranging from about 200 milliseconds to about 2 seconds; and
said Δ
T3 is a time interval ranging from about 20 milliseconds to about 1 second.
-
-
24. The method of claim 23, wherein at least one of said time intervals is predetermined.
-
38. The computer program product of claim 22, wherein said Δ
- T2 is reduced by a proportional amount time that the controller requires to send the status back to the host computer.
-
25. In a data storage system that includes a host computer operatively coupled by a controller to a storage device, a method to provide the host computer with a status corresponding to success of a first command, the method comprising the following steps:
-
(a) receiving the first command initiated by the host computer;
(b) determining a predefined first time interval (Δ
T1) that does not exceed a predetermined maximum command response time in which said status must be sent to said host computer, wherein start of said Δ
T1 is determined at step (a);
(c) distributing to the storage device at least one second command responsive to said first command;
(d) monitoring said second command distributed at step (c) to determine a first time status that will be a first success status if said second command completes execution within said Δ
T1, and that will be a first failure status if said second command fails to complete execution within said Δ
T1; and
(e) sending to said host computer the status selected from a group consisting of;
(i) data associated with said first command if step (d) determines a first success status; and
(ii) a first status if step (d) determines that said first time status is said first failure status, wherein said first status includes a busy status and if (ii) is a selected status processing said busy status by;
(1) saving a set of results of said second command distributed at step (c) into a data cache coupled with the controller;
(2) receiving a third command that represents a subsequent instance of the first command; and
(3) sending to said host computer the set of results in response to receiving the third command. - View Dependent Claims (26)
step (b) further includes;
associating with said first command a time stamp showing when said first command was received by said controller;
initiating at a time of said time stamp a second time interval (Δ
T2) that is less than said Δ
T1, said Δ
T2 is reduced by a proportional amount time that the controller requires to send the status back to the host computer;
defining a third time interval (Δ
T3) that does not exceed said Δ
T2, wherein said Δ
T1 is a time interval ranging from about 3 seconds to about 10seconds, said Δ
T2 is a time interval ranging from about 200 milliseconds to about 2 seconds, and said Δ
T3 is a time interval ranging from about 20 milliseconds to about 1 second, and at least one of said time intervals is predetermined;
wherein step (d) is an iterative process that reoccurs at every third Δ
T3 and further includes monitoring said second command to determine a second time status that will be a second success status if said second command completes executions within said Δ
T2, and will be a second failure status if said second command fails to complete within said Δ
T2; and
said group at step (e) further consisting of;
(iii) the first status if step (d) determines that said second time status is aid second failure status; and
(iv) posting a second status to said host computer if step (d) determines a second time status is said second success status.
-
-
27. A computer program product for use with a host computer operatively coupled by a controller to a storage device, the computer program product comprising a storage device and a computer program mechanism embedded therein, the computer program mechanism comprising:
-
a program module to provide the host computer with a status corresponding to success of a first command, the program module including instructions for;
(a) receiving the first command;
(b) defining a first time interval (Δ
T1) that does not exceed a predetermined maximum command response time in which said status must be sent to said host computer;
(c) distributing to the storage device at least one second command responsive to said first command;
(d) monitoring said second command distributed at step (c) to determine a first time status that will be a first success status if said second command completes execution within said Δ
T1, and that will be a first failure status if said second command fails to complete execution within said Δ
T1; and
(e) sending to said host computer the status selected from a group consisting of;
(i) data associated with said first command if step (d) determines a first success status; and
(ii) a first status if step (d) determines that said first time status is said first failure status.- View Dependent Claims (28, 29, 30, 31, 32, 33, 34, 35, 36, 37)
step (b) includes associating with said first command a time stamp showing when said first command was received by said controller, and further includes initiating at a time of said time stamp a second time interval (Δ
T2) that is less than said Δ
T1;
step (d) further includes monitoring said second command distributed at step (c) to determine a second time status that will be a second success status if said second command completes executions within said Δ
T2, and will be a second failure status if said second command fails to complete within said Δ
T2; and
said group at step (e) further consisting of;
(iii) the first status if step (d) determines that said second time status is said second failure status.
-
-
30. The computer program product of claim 27, wherein said first status includes a busy status and said second status includes a good status.
-
31. The computer program product of claim 29, wherein said group at step (e) further consisting of:
- (iv) posting a second status to said host computer if step (d) determines a second time status that is a second success status.
-
32. The computer program product of claim 27, wherein said second command at step (d) is selected from a group consisting of:
- a SCSI write data command; and
a SCSI read data command.
- a SCSI write data command; and
-
33. The computer program product of claim 27, further including:
-
saving, after sending at step (e), a set of results of said second command distributed at step (c) into a data cache coupled with the controller;
receiving a third command that represents a subsequent instance of the first command; and
sending to said host computer the set of results in response to receiving the third command.
-
-
34. The computer program product of claim 27, further including at least one instruction defining a third time interval (Δ
- T3) that does not exceed said Δ
T2; and
wherein said step (d) is an iterative process that reoccurs at every Δ
T3.
- T3) that does not exceed said Δ
-
35. The computer program product of claim 34, wherein said step (d) is an iterative process that reoccurs at every third Δ
- T3.
-
36. The computer program product of claim 34, wherein:
-
said Δ
T1 is a time interval ranging from about 3 seconds to about 10 seconds;
said Δ
T2 is a time interval ranging from about 200 milliseconds to about 2 seconds; and
said Δ
T3 is a time interval ranging from about 20 milliseconds to about 1 second.
-
-
37. The computer program product of claim 36, wherein at least one of said time intervals is predetermined.
-
39. An apparatus to provide a host computer operatively coupled by a controller to a storage device with a status corresponding to success of a first command, the apparatus comprising:
-
means for receiving the first command;
means for defining a first time interval (Δ
T1) that does not exceed a predetermined maximum command response time in which said status must be sent to said host computer, start of said Δ
T1 is determined by means for receiving;
means for associating with said first command a time stamp showing when said first command was received by said controller, and further includes initiating at a time of said time stamp a second time interval (Δ
T2) that is less than said Δ
T1;
means for distributing to the storage device at least one second command responsive to said first command;
means for monitoring said second command distributed according to means for distributing to determine a first time status that will be a first success status if said second command completes execution within said Δ
T1, and that will be a first failure status if said second command fails to complete execution within said Δ
T1, and to determine a second time status that will be a second success status if said second command completes executions within said Δ
T2, and will be a second failure status if said second command fails to complete within said Δ
T2; and
means for sending to said host computer the status selected from a group consisting of;
(i) data associated with said first command if means for monitoring determines a first success status;
(ii) a first status means for monitoring determines that said first time status is said first failure status; and
(iii) the first status if means for monitoring determines that said second time status is said second failure status.- View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48)
means for saving a set of results responsive to said second command distributed by said means for distributing into a data cache coupled with the controller;
means for receiving a third command that represents a subsequent instance of the first command; and
means for sending to said host computer the set of results responsive to receipt of the third command.
-
-
43. The apparatus claim 39, wherein:
said means for determining defines a third time interval (Δ
T3) that does not exceed said Δ
T2; and
said means for monitoring is an iterative process that reoccurs at every Δ
T3.
-
44. The apparatus claim 43, wherein said means for monitoring is an iterative process that reoccurs at every third Δ
- T3.
-
45. The apparatus of claim 43, wherein:
-
said Δ
T1 is a time interval ranging from about 3 seconds to about 10 seconds;
said Δ
T2 is a time interval ranging from about 200 milliseconds to about 2 seconds; and
said Δ
T3 is a time interval ranging from about 20 milliseconds to about 1 second.
-
-
46. The apparatus of claim 45, wherein at least one of said time intervals is predetermined.
-
47. The apparatus of claim 39, wherein the storage device is a Redundant Array of Independent Disks (RAID) and the controller is a RAID controller.
-
48. The apparatus of claim 39, wherein said Δ
- T2 is reduced by a proportional amount time that the controller requires to send the status back to the host computer.
-
49. An apparatus to provide a host computer operatively coupled by a controller to a storage device with a status corresponding to success of a first command, the apparatus comprising:
-
an associative circuit having a first procedure to receive the first command, a second procedure to define a first time interval (Δ
T1) that does not exceed a predetermined maximum command response time in which said status must be sent to said host computer, start of said Δ
T1 is determined by the first procedure, and a third procedure to associate with said first command a time stamp showing when said first command was received by said controller, and further includes initiating at a time of said time stamp a second time interval (Δ
T2) that is less than said Δ
T1;
a distribution circuit having a distribution procedure to distribute to the storage device at least one second command responsive to said first command;
a monitoring circuit having a monitoring procedure to monitor said second command distributed according to said distributing procedure to determine a first time status that will be a first success status if said second command completes execution within said Δ
T1, and that will be a first failure status if said second command fails to complete execution within said Δ
T1, and to determine a second time status that will be a second success status if said second command completes executions within said Δ
T2, and will be a second failure status if said second command fails to complete within said Δ
T2; and
a sending circuit having a sending procedure to send to said host computer the status selected from a group consisting of;
(i) data associated with said first command if said monitoring procedure determines a first success status;
(ii) a first status if said monitoring procedure determines that said first time status is said first failure status; and
(iii) the first status if said monitoring procedure determines that said second time status is said second failure status.- View Dependent Claims (50, 51, 52, 53, 54, 55, 56, 57, 58, 59)
a saving circuit having a saving procedure to save a set of results of said second command distributed at said distribution procedure into a data cache coupled with the controller;
wherein said first procedure capable of receiving a third command that represents a subsequent instance of the first command; and
wherein said sending procedure capable of sending to said host computer the set of results in response to receiving the third command.
-
-
54. The apparatus of claim 49, wherein said determining procedure further including defining a third time interval (Δ
- T3) that does not exceed said Δ
T2; and
said monitoring procedure is an iterative process that reoccurs at every Δ
T3.
- T3) that does not exceed said Δ
-
55. The apparatus of claim 49, wherein said monitoring procedure is iterative such that the monitoring procedure reoccurs at every third Δ
- T3.
-
56. The apparatus of claim 54, wherein:
-
said Δ
T1 is a time interval ranging from about 3 seconds to about 10 seconds;
said Δ
T2 is a time interval ranging from about 200 milliseconds to about 2 seconds; and
said Δ
T3 is a time interval ranging from about 20 milliseconds to about 1 second.
-
-
57. The apparatus of claim 56, wherein at least one of said time intervals is predetermined.
-
58. The apparatus of claim 49, wherein the storage device is a Redundant Array of Independent Disks (RAID) and the controller is a RAID controller.
-
59. The apparatus of claim 49, wherein said Δ
- T2 is reduced by a proportional amount time that the controller requires to send the status back to the host computer.
Specification