• Mark Haverkamp's avatar
    [SCSI] aacraid: Fix blocking issue with container probing function (cast update) · fe76df42
    Mark Haverkamp authored
    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: default avatarMark Haverkamp <markh@linux-foundation.org>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
    fe76df42
aachba.c 73.3 KB