• Kashyap Desai's avatar
    scsi: megaraid_sas: Send SYNCHRONIZE_CACHE for VD to firmware · d0fc91d6
    Kashyap Desai authored
    Until now the megaraid_sas driver has reported successful completion on
    SYNCHRONIZE_CACHE commands without sending them down to the controller.
    The controller firmware has been responsible for taking care of flushing
    disk caches for all drives that belong to a Virtual Disk at the time of
    system reboot/shutdown.
    
    There may have been a reason to avoid sending SYNCHRONIZE_CACHE to a VD
    in the past but that no longer appears to be valid.
    
    Older versions of MegaRaid firmware (Gen2 and Gen2.5) set the WCE bit
    for Virtual Disks but the firmware does not report correct completion
    status for a SYNCHRONIZE_CACHE command. As a result, we must use another
    method to identify whether it is safe to send the command to the
    controller. We use the canHandleSyncCache firmware flag in the scratch
    pad register at offset 0xB4.
    
    New SYNCHRONIZE_CACHE behavior:
    
    IF 'JBOD'
    
    	Driver sends SYNCHRONIZE_CACHE command to the firmware
    	Firmware sends SYNCHRONIZE_CACHE to drive
    	Firmware obtains status from drive and returns same status back to driver
    
    ELSEIF 'VirtualDisk'
    
    	IF firmware supports new API bit called canHandleSyncCache
    		Driver sends SYNCHRONIZE_CACHE command to the firmware
    		Firmware does not send SYNCHRONIZE_CACHE to drives
    		Firmware returns SUCCESS
    	ELSE
    		Driver does not send SYNCHRONIZE_CACHE command to the firmware
    		Driver return SUCCESS for that command
    	ENDIF
    ENDIF
    
    [mkp: edited patch description]
    Signed-off-by: default avatarKashyap Desai <kashyap.desai@broadcom.com>
    Signed-off-by: default avatarSumit Saxena <sumit.saxena@broadcom.com>
    Reviewed-by: default avatarTomas Henzl <thenzl@redhat.com>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Reviewed-by: default avatarEwan D. Milne <emilne@redhat.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    d0fc91d6
megaraid_sas_base.c 197 KB