Method for fast queue restart after redundant I/O path failover
First Claim
1. A method for restart of failed input/output operations in a system having a redundant controller management component and having a plurality of asynchronously operating I/O paths, the method comprising the steps of:
- transferring at least one I/O request from said redundant controller management component to a first I/O path of said asynchronously operating I/O paths wherein said redundant controller management component has no access to said at least one I/O request as manipulated within said first I/O path;
storing in a pending I/O queue associated with said redundant controller management component an entry containing information regarding said at least one I/O request; and
restarting on a second I/O path of said asynchronously operating I/O paths I/O requests having entries in said pending I/O queue previously transferred to said first I/O path in response to receipt of indicia of failure of said first I/O path.
9 Assignments
0 Petitions
Accused Products
Abstract
A redundant storage control module (also referred to as RDAC or multi-active controller) maintains a queue of pending I/O requests sent for processing via a first asynchronously operating I/O path. In the event of failure of the first asynchronously operating I/O path, the controller restarts the entire queue of pending I/O requests to a second I/O path without waiting for each request to individually fail from the first path. Some prior techniques required the RDAC module to await failure of each I/O request sent to the failed first I/O path before restarting each failed request on the secondary I/O path. Such techniques greatly extend the total time required to restart all operations sent to a failed I/O path, by awaiting the failure of all I/O requests previously sent to the first I/O path. Other known techniques provide non-standard features in the lower level driver modules to permit the higher level RDAC modules to directly manipulate dispatch queues maintained for each I/O path within the low level device drivers. Such prior techniques reduce the wait time for restart of failed I/O requests but at the expense of portability of the RDAC modules. The methods and structure of the present invention reduce the wait time for restart of failed I/O requests but in such a manner as to remain portable over a variety of host systems.
87 Citations
34 Claims
-
1. A method for restart of failed input/output operations in a system having a redundant controller management component and having a plurality of asynchronously operating I/O paths, the method comprising the steps of:
-
transferring at least one I/O request from said redundant controller management component to a first I/O path of said asynchronously operating I/O paths wherein said redundant controller management component has no access to said at least one I/O request as manipulated within said first I/O path; storing in a pending I/O queue associated with said redundant controller management component an entry containing information regarding said at least one I/O request; and restarting on a second I/O path of said asynchronously operating I/O paths I/O requests having entries in said pending I/O queue previously transferred to said first I/O path in response to receipt of indicia of failure of said first I/O path. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for restart of failed input/output operations in a system having a redundant controller management component and having a plurality of asynchronously operating I/O paths, the method comprising the steps of:
-
transferring at least one I/O request from said redundant controller management component to a first I/O path of said asynchronously operating I/O paths wherein said redundant controller management component has no access to said at least one I/O request as manipulated within said first I/O path; storing in a pending I/O queue associated with said redundant controller management component an entry corresponding to said at least one I/O request transferred to first I/O path; retrieving, in response to receipt of indicia of failure generated in response to failure of said first I/O path, all entries from said pending I/O queue corresponding to I/O requests previously transferred to said first I/O path; and sending said all entries to a second I/O path of said asynchronously operating I/O paths. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. An apparatus for requeuing failed I/O requests within an I/O subsystem, said apparatus comprising:
-
a redundant controller management component; a pending I/O queue associated with said redundant controller management component; a first asynchronously operating I/O path coupled to said redundant controller management component and including means not accessible by said redundant controller management component for retaining I/O requests transferred from said redundant controller management component; a second asynchronously operating I/O path coupled to said redundant controller management component and including means not accessible by said redundant controller management component for retaining I/O requests transferred from said redundant controller management component; means in said redundant controller management component, responsive to receipt of an I/O request, for queueing said I/O request in said pending I/O queue; means in said redundant controller management component, responsive to receipt of an I/O request, for transferring said I/O request to said first asynchronously operating I/O path; means in said redundant controller management component for detecting a failure in the operation of said first asynchronously operating I/O path; means, responsive to detection of a failure in operation of said first asynchronously operating I/O path, for retrieving all I/O requests from said pending I/O queue previously transferred to said first asynchronously operating I/O path; and means for sending said all I/O requests to said second asynchronously operating I/O path. - View Dependent Claims (20, 21, 22, 23, 24, 25)
-
-
26. A computer readable storage medium tangibly embodying programmed instructions for performing a method for restart of a failed input/output operations operable within a system having an redundant controller management component and having a plurality of asynchronously operating I/O paths, the method comprising the steps of:
-
transferring at least one I/O request from said redundant controller management component to a first I/O path of said asynchronously operating I/O paths wherein said redundant controller management component has no access to said at least one I/O request as manipulated within said first I/O path; storing in a pending I/O queue associated with said redundant controller management component an entry containing information regarding said at least one I/O request; and restarting on a second I/O path of said asynchronously operating I/O paths I/O requests having entries in said pending I/O queue previously transferred to said first I/O path in response to receipt of indicia of failure of said first asynchronously operating I/O path. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34)
-
Specification