scsi: mpi3mr: Allow certain commands during pci-remove hook
Instead of driver returning DID_NO_CONNECT during driver unload allow SSU and Sync Cache commands to be sent to the controller to flush any cached data from the drive. Link: https://lore.kernel.org/r/20210520152545.2710479-16-kashyap.desai@broadcom.com Cc: sathya.prakash@broadcom.com Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
0ea177343f
commit
82141ddba9
@ -2767,6 +2767,26 @@ static int mpi3mr_target_alloc(struct scsi_target *starget)
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
* mpi3mr_allow_scmd_to_fw - Command is allowed during shutdown
|
||||
* @scmd: SCSI Command reference
|
||||
*
|
||||
* Checks whether a cdb is allowed during shutdown or not.
|
||||
*
|
||||
* Return: TRUE for allowed commands, FALSE otherwise.
|
||||
*/
|
||||
|
||||
inline bool mpi3mr_allow_scmd_to_fw(struct scsi_cmnd *scmd)
|
||||
{
|
||||
switch (scmd->cmnd[0]) {
|
||||
case SYNCHRONIZE_CACHE:
|
||||
case START_STOP:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* mpi3mr_qcmd - I/O request despatcher
|
||||
* @shost: SCSI Host reference
|
||||
@ -2802,7 +2822,8 @@ static int mpi3mr_qcmd(struct Scsi_Host *shost,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (mrioc->stop_drv_processing) {
|
||||
if (mrioc->stop_drv_processing &&
|
||||
!(mpi3mr_allow_scmd_to_fw(scmd))) {
|
||||
scmd->result = DID_NO_CONNECT << 16;
|
||||
scmd->scsi_done(scmd);
|
||||
goto out;
|
||||
|
Loading…
x
Reference in New Issue
Block a user