• nagalakshmi.nandigama@lsi.com's avatar
    [SCSI] mpt2sas: Improvement were made to better protect the sas_device,... · 09da0b32
    nagalakshmi.nandigama@lsi.com authored
    [SCSI] mpt2sas: Improvement were made to better protect the sas_device, raid_device, and expander_device lists
    
    There were possible race conditions surrounding reading an object
    from the link list while from another context in the driver was
    removing it. The nature of this enhancement is to rearrange locking
    so the link lists are better protected.
    
    Change set:
    (1) numerous routines were rearranged so spin locks are held through
    the entire time a link list object is being read from or written to.
    (2) added new routines for object deletion from link list.  Thus ensuring
    lock was held during the deletion of the link list object, then and memory
    for object freed outside the lock. The memory was freed outside the lock
    so driver had access to device object info which was required for
    notifying the scsi mid layer that a device was getting deleted.
    (3) added the ioc->blocking_handles parameter.  This is a bitmask used
    to identify which devices need blocking when there is device loss.  This was
    introduced so that lock can be held for the entire time traversing the link
    list objects, and the bitmask was set to indicate which device handles need
    blocking. Oustide the lock the ioc->blocking_handles bitmask is traversed,
    with the respective device handle the scsi mid layer is called for moving
    devices into blocking state.
    Signed-off-by: default avatarNagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    09da0b32
mpt2sas_base.h 38.9 KB