• Kashyap, Desai's avatar
    [SCSI] mpt2sas : WarpDrive New product SSS6200 support added · 0bdccdb0
    Kashyap, Desai authored
    This patch has Support for the new solid state device product SSS6200
    from LSI and relavent features w.r.t SSS6200.
    
    The major feature added in this driver is supporting Direct-I/O to the
    SSS6200 storage.There are some additional changes done to avoid exposing
    the RAID member disks to the OS and hiding/exposing drives based on the
    OEM Specific Flag in Manufacturing Page10 (this is required to handle
    specific changes in the SSS6200 firmware).
    
    Each and every changes are listed below.
    1. Hiding IR related messages.
    For SSS6200, the driver is modified not to print IR related events.
    Even if the debugging is enabled the IR related messages will not be displayed.
    In some places if there is a need to display a message related to IR the
    string "IR" is replaced with string "DD" and the string "volume" is replaced
    with "direct drive". But the function names are not changed hence there are
    some places where the reference to volume can be seen if debug level is set.
    
    2. Removed RAID transport support
    In Linux the user can retrieve RAID volume information from the sysfs directory.
    This support is removed for SSS6200.
    
    3. Direct I/O support.
    The driver tries to enable direct I/O when a volume is reported to the driver
    by the firmware through IRCC events and the driver does this just before
    reporting to the OS, hence all the OS issued I/O can go through direct path
    if they can, The first validation is to see whether the manufacturing page10
    flag is set to expose all drives always. If that is set, the driver will not
    enable direct I/O and displays the message "DDIO" is disabled globally as
    drives are exposed. The driver checks whether there is more than one volume
    in the controller, if so the direct I/O will be disabled globally for all
    volumes in the controller and the message displayed will be "DDIO is disabled
    globally as number of drives > 1.
    If retrieving number of PD is failed the driver will not enable direct I/O
    and displays the message Failure in computing number of drives DDIO disabled.
    If memory allocation for RAIDVolumePage0 is failed, the driver will not enable
    direct I/O and displays the message Memory allocation failure for
    RVPG0 DDIO disabled.  If retrieving RAIDVolumePage0 is failed the driver will
    not enable direct I/O and displays the message Failure in retrieving
    RVPG0 DDIO disabled
    
    If the number of PD in a volume is greater than 8, then the direct I/O will
    be disabled.
    If any of individual drives handle retrieval is failed then the DD-IO will
    be disabled.
    If the volume is not RAID0 or if the block size is not 512 then the DD-IO will
    be disabled.
    If the volume size is greater than 2TB then the DD-IO will be disabled.
    If the driver is not able to find a valid stripe exponent using the configured
    stripe size then the DD-IO will be disabled
    
    When the DD-IO is enabled the driver will check every I/O request issued to
    the storage and checks whether the request is either
    READ6/WRITE6/READ10/WRITE10, if it is and if the complete I/O transfer
    is within a stripe size then the I/O is redirected to
    the drive directly instead of the volume.
    
    On completion of every I/O, if the completion is failure means if the reply
    is address reply with a reply frame associated with it, then the type of I/O
    will be checked, if the I/O is direct then the I/O will be retried to
    the volume once.
    Signed-off-by: default avatarKashyap Desai <kashyap.desai@lsi.com>
    Reviewed-by: default avatarEric Moore <eric.moore@lsi.com>
    Reviewed-by: default avatarSathya Prakash <sathya.prakash@lsi.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    0bdccdb0
mpt2sas_base.c 118 KB