• Kashyap, Desai's avatar
    [SCSI] mpt2sas: Redesign Raid devices event handling using pd_handles per HBA · f3eedd69
    Kashyap, Desai authored
    Actual problem :
    Driver  may receiving the top level expander
    removal event prior to all the individual PD removal events, hence the
    driver is breaking down all the PDs in advanced to the actaul PD UNHIDE
    event. Driver sends multiple
    Target Resets to the same volume handle for each individual PD removal.
    
    FIX DESCRIPTION:
    To fix this issue, the entire PD device handshake protocal has to be
    moved to interrupt context so the breakdown occurs immediately after the
    actual UNHIDE event arrives.  The driver will only issue one Target Reset to
    the volume handle, occurring after the FAILED or MISSING volume status
    event arrives from interrupt context. For the PD UNHIDE event, the driver
    will issue target resets to the PD handles, followed by OP_REMOVE.  The
    driver will set the "deteleted" flag during interrupt context.  A "pd_handle"
    bitmask was introduced so the driver has a list of known pds during entire
    life of the PD; this replaces the "hidden_raid_component" flag handle in
    the sas_device object.  Each bit in the bitmask represents a device handle.
    The bit in the bitmask would be toggled ON/OFF when the HIDE/UNHIDE
    events arrive; also this pd_handle bitmask would bould be refreshed
    across host resets.
    
    Here we kept older behavior of sending target reset to volume when there is
    a single drive pull, wait for the reply, then send target resets
    to the PDs.  We kept this behavior so the driver will
    behave the same for older versions of firmware.
    Signed-off-by: default avatarKashyap Desai <kashyap.desai@lsi.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    f3eedd69
mpt2sas_base.c 110 KB