Data storage systems typically contain a central processing unit, or host processor, to manage the movement of information, or data, between different peripheral data storage devices. The host processor is often connected to the data storage devices through a storage controller. The storage controller and attached storage devices comprise a storage subsystem within the data storage system. The host processor typically executes control programs, or host applications, which generate data records to be stored on the data storage devices, and access data records previously stored on the data storage devices. The storage controller manages the data storage system, and directs the transfer of the data records between the host processor and the data storage devices.
The storage controller polls the attached data storage devices to obtain particular device information and device status. The storage controller typically issues a device poll command to a device controller. The device controller, in turn, communicates with either a single data storage device, or a set of data storage devices, to generate the requested information and respond to the storage controller. The device controller and the attached data storage devices are often referred to as a device subsystem.
The storage controller typically issues several types of poll commands to the device subsystem. A first type of poll command, referred to as special poll, is issued to determine a device type, and associated device characteristics, pertaining to a specific data storage device. Such device characteristics typically include data rate, transfer speed, and storage capacity, among other information. A second type of device poll command, referred to as summary poll, is issued to collect summary information from the data storage devices, such as the number of devices currently attached, and/or the number of devices currently available for selection, in the device subsystem. A third type of poll command, referred to as normal poll, is typically issued to a specific data storage device to obtain particular information regarding the device, such as a device address or whether the device has status to report.
The storage controller occasionally polls the device subsystem using the special poll command. Since the special poll command returns device characteristic information, the storage controller conducts this type of device poll when an event in the data storage system triggers a change in a particular device type or device configuration. On the other hand, the storage controller issues normal poll and summary poll commands at frequent time intervals as part of the standard operations in the data storage system. Normal poll and summary poll commands typically collect device work information from one or more attached data storage devices. A data storage device indicates the presence of device work by raising a request, or interrupt, to the storage controller for certain reasons, such as: 1) the device has positioned itself at the correct location to satisfy a previous request for a data transfer; 2) the device has detected an error which needs to be reported; and 3) the device has undergone a status change where, for example, a previously varied-off device has been varied on.
A typical device polls sequence consists of the storage controller issuing the device poll command to the device subsystem. The device controller receives the poll command and queries those data storage devices necessary to generate an appropriate response to the poll command. When the device controller has obtained the necessary information, the device controller sends the response to the storage controller. In this scenario, the storage controller waits for the device controller to query the applicable devices, accumulate a response, and return such response. This delay affects the performance of the data storage system.
Recent improvements in the device poll sequence have reduced the delay in the normal poll and summary poll processes. An improved poll sequence allows the storage controller to issue the poll command to the device subsystem and not wait for the device controller to return with the appropriate response. Instead, the device controller acknowledges to the storage controller that it received the poll command. This acknowledgement allows the storage controller to continue processing additional tasks while waiting to receive the information requested with either the normal poll or summary poll command. The device controller then queries the data storage devices necessary to accumulate the appropriate response and sends a message to the storage controller once the collected information, and the corresponding response, are complete.
Allowing the storage controller to perform alternate tasks while waiting for the device poll response increases the data storage system performance, but still does not provide the best solution. The storage controller must still wait for a response to the normal poll and summary poll commands, and may need to suspend an alternate task when the requested device poll information is subsequently received. Suspending and resuming tasks in the storage controller introduces certain inefficiencies in the performance of the data storage system.
Accordingly, a method and apparatus are needed to further improve a device poll sequence within a data storage system. The present invention provides an immediate response to a storage controller when it issues a normal poll or summary poll command to a device subsystem. In the current embodiment, the device controller pre-fetches device work information for each attached data storage device and stores such information in a buffer. When the device controller receives a device poll command from the storage controller, it accesses the information corresponding to the requested devices from the buffer and returns an immediate response to the storage controller. The device controller contains a background task which operates at a low priority level, queries the attached data storage devices, and updates the device work information stored in the buffer.