diff options
author | Mark Haverkamp <markh@linux-foundation.org> | 2007-03-15 12:55:07 -0700 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-03-20 10:54:49 -0500 |
commit | fe76df4235986cfacc2d3b71cef7c42bc1a6dd6c (patch) | |
tree | a8b31caeae0d4a60b0271c5e83a0c219de0fde72 /drivers/scsi/aacraid/commsup.c | |
parent | a8166a52968216ae079a5530ac3269147de2ef31 (diff) | |
download | blackbird-op-linux-fe76df4235986cfacc2d3b71cef7c42bc1a6dd6c.tar.gz blackbird-op-linux-fe76df4235986cfacc2d3b71cef7c42bc1a6dd6c.zip |
[SCSI] aacraid: Fix blocking issue with container probing function (cast update)
Received from Mark Salyzyn,
The aac_probe_container call blocks. This is an issue because it is called on
occasion in the context of the queuecommand handler. Once in a blue moon this
has resulted in a kernel panic sleeping during interrupt; or problems with some
embedded system versions of the kernel that depend on queuecommand to not
block. This ugly patch rewrites the aac_probe_container call into a new routine
_aac_probe_container that is an asynchronous state machine to complete the
series of operations. The legacy blocking aac_probe_container call used in
other areas of the driver (during initialization scanning for all targets and
in the separate hot-add/remove [aacraid] thread) merely issues
_aac_probe_container and then simple spins calling schedule() waiting for
completion.
Signed-off-by: Mark Haverkamp <markh@linux-foundation.org>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/aacraid/commsup.c')
0 files changed, 0 insertions, 0 deletions