Browse Prior Art Database

Detecting Command Timeouts with Small Computer System Interface Command Tag Queuing

IP.com Disclosure Number: IPCOM000109978D
Original Publication Date: 1992-Oct-01
Included in the Prior Art Database: 2005-Mar-25
Document File: 2 page(s) / 104K

Publishing Venue

IBM

Related People

Schwendiman, CA: AUTHOR [+3]

Abstract

Disclosed is a low overhead method for implementing command timeout detection within a SCSI (Small Computer System Interface) adapter driver allowing multiple I/O requests to be outstanding for a SCSI device. It ensures that all commands are processed in a timely fashion and that any lost command will be detected.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Detecting Command Timeouts with Small Computer System Interface Command Tag Queuing

       Disclosed is a low overhead method for implementing
command timeout detection within a SCSI (Small Computer System
Interface) adapter driver allowing multiple I/O requests to be
outstanding for a SCSI device.  It ensures that all commands are
processed in a timely fashion and that any lost command will be
detected.

      With the development of SCSI devices which allow multiple
commands to be queued has also come greater complexity within the
device drivers.  Many of these devices will reorder the commands in
their queues to achieve higher throughput.  This adds complexity to
device driver routines responsible for detecting command timeouts.

      When a device will accept only one command at a time, it is a
simple matter within the device driver to set a timer for a timeout
value greater than the amount of time needed by the device to process
the command.  If the timer expires before the command is completed,
the driver has detected a command timeout.  Such a condition
indicates that the device never saw the command or that some hardware
failure has occurred preventing the successful completion of the
command.  However, if a device allows several commands to be queued
to it and it is reordering its queue, a particular command could sit
in the device's queue for an indeterminate period of time.  Now the
device driver cannot simply start a command timer to detect a lost
command because the timer might expire while the command is still
sitting in the device queue waiting to be processed.

      There are existing solutions that allow the driver to start a
timer for each outstanding command and still be able to detect a
timeout.  However, these solutions require a lot of system resources
for detecting low probability problems.  This is contrary to the goal
of improving system performance by using command queuing.

      A second existing method is to maintain a list of the
outstanding commands and to run just one timer.  Each time a command
completes the driver runs through the list of outstanding commands to
find the one requiring the greatest amount of time and then restarts
the timer using this time value.  This has the advantage of using
minimal system resources but because the list of commands is being
scanned on each command complete interrupt, a greater amount of
processing time is spent on the interrupt level.  This is also
undesirable when trying to improve system performance.

      The disclosed solution is a method requiring minimal system
resources by using only on...