[SCSI] mpt2sas: Rearrange the the code so that the completion queues are initialized prior to sending the request to controller firmware
Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:

committed by
James Bottomley

parent
23edb6e716
commit
f01690d31d
@@ -818,6 +818,7 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
|
||||
_ctl_display_some_debug(ioc, smid, "ctl_request", NULL);
|
||||
#endif
|
||||
|
||||
init_completion(&ioc->ctl_cmds.done);
|
||||
switch (mpi_request->Function) {
|
||||
case MPI2_FUNCTION_SCSI_IO_REQUEST:
|
||||
case MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH:
|
||||
@@ -903,7 +904,6 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
|
||||
timeout = MPT2_IOCTL_DEFAULT_TIMEOUT;
|
||||
else
|
||||
timeout = karg.timeout;
|
||||
init_completion(&ioc->ctl_cmds.done);
|
||||
timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
|
||||
timeout*HZ);
|
||||
if (mpi_request->Function == MPI2_FUNCTION_SCSI_TASK_MGMT) {
|
||||
@@ -1477,8 +1477,8 @@ _ctl_diag_register_2(struct MPT2SAS_ADAPTER *ioc,
|
||||
mpi_request->ProductSpecific[i] =
|
||||
cpu_to_le32(ioc->product_specific[buffer_type][i]);
|
||||
|
||||
mpt2sas_base_put_smid_default(ioc, smid);
|
||||
init_completion(&ioc->ctl_cmds.done);
|
||||
mpt2sas_base_put_smid_default(ioc, smid);
|
||||
timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
|
||||
MPT2_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
@@ -1821,8 +1821,8 @@ _ctl_send_release(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type, u8 *issue_reset)
|
||||
mpi_request->VF_ID = 0; /* TODO */
|
||||
mpi_request->VP_ID = 0;
|
||||
|
||||
mpt2sas_base_put_smid_default(ioc, smid);
|
||||
init_completion(&ioc->ctl_cmds.done);
|
||||
mpt2sas_base_put_smid_default(ioc, smid);
|
||||
timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
|
||||
MPT2_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
@@ -2095,8 +2095,8 @@ _ctl_diag_read_buffer(void __user *arg, enum block_state state)
|
||||
mpi_request->VF_ID = 0; /* TODO */
|
||||
mpi_request->VP_ID = 0;
|
||||
|
||||
mpt2sas_base_put_smid_default(ioc, smid);
|
||||
init_completion(&ioc->ctl_cmds.done);
|
||||
mpt2sas_base_put_smid_default(ioc, smid);
|
||||
timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
|
||||
MPT2_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
|
Reference in New Issue
Block a user