diff options
author | Damien Le Moal <damien.lemoal@opensource.wdc.com> | 2022-02-20 12:18:03 +0900 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2022-02-22 21:31:20 -0500 |
commit | 0c4ad6c3d3b89bdcc112e028fe52ca6ce122b90b (patch) | |
tree | 657df50c18db56ff4bfeb342ce4ba856e760eee3 /drivers/scsi/pm8001 | |
parent | a1e7c7991923ab736e5be0ebcf65499acb04d583 (diff) | |
download | linux-0c4ad6c3d3b89bdcc112e028fe52ca6ce122b90b.tar.gz linux-0c4ad6c3d3b89bdcc112e028fe52ca6ce122b90b.tar.bz2 linux-0c4ad6c3d3b89bdcc112e028fe52ca6ce122b90b.zip |
scsi: pm8001: Cleanup pm8001_exec_internal_task_abort()
Replace the goto statement in the for loop with "break" and remove the
ex_err label. Also fix long lines, identation and blank lines to make the
code more readable.
Link: https://lore.kernel.org/r/20220220031810.738362-25-damien.lemoal@opensource.wdc.com
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/pm8001')
-rw-r--r-- | drivers/scsi/pm8001/pm8001_sas.c | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c index c26f37c88cac..b41f3aa6ce3e 100644 --- a/drivers/scsi/pm8001/pm8001_sas.c +++ b/drivers/scsi/pm8001/pm8001_sas.c @@ -724,50 +724,54 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha, task->task_proto = dev->tproto; task->task_done = pm8001_task_done; task->slow_task->timer.function = pm8001_tmf_timedout; - task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT * HZ; + task->slow_task->timer.expires = + jiffies + PM8001_TASK_TIMEOUT * HZ; add_timer(&task->slow_task->timer); res = pm8001_tag_alloc(pm8001_ha, &ccb_tag); if (res) - goto ex_err; + break; + ccb = &pm8001_ha->ccb_info[ccb_tag]; ccb->device = pm8001_dev; ccb->ccb_tag = ccb_tag; ccb->task = task; ccb->n_elem = 0; - res = PM8001_CHIP_DISP->task_abort(pm8001_ha, - pm8001_dev, flag, task_tag, ccb_tag); + res = PM8001_CHIP_DISP->task_abort(pm8001_ha, pm8001_dev, flag, + task_tag, ccb_tag); if (res) { del_timer(&task->slow_task->timer); - pm8001_dbg(pm8001_ha, FAIL, "Executing internal task failed\n"); + pm8001_dbg(pm8001_ha, FAIL, + "Executing internal task failed\n"); pm8001_tag_free(pm8001_ha, ccb_tag); - goto ex_err; + break; } + wait_for_completion(&task->slow_task->completion); res = TMF_RESP_FUNC_FAILED; + /* Even TMF timed out, return direct. */ if (task->task_state_flags & SAS_TASK_STATE_ABORTED) { pm8001_dbg(pm8001_ha, FAIL, "TMF task timeout.\n"); - goto ex_err; + break; } if (task->task_status.resp == SAS_TASK_COMPLETE && task->task_status.stat == SAS_SAM_STAT_GOOD) { res = TMF_RESP_FUNC_COMPLETE; break; - - } else { - pm8001_dbg(pm8001_ha, EH, - " Task to dev %016llx response: 0x%x status 0x%x\n", - SAS_ADDR(dev->sas_addr), - task->task_status.resp, - task->task_status.stat); - sas_free_task(task); - task = NULL; } + + pm8001_dbg(pm8001_ha, EH, + " Task to dev %016llx response: 0x%x status 0x%x\n", + SAS_ADDR(dev->sas_addr), + task->task_status.resp, + task->task_status.stat); + sas_free_task(task); + task = NULL; } -ex_err: + BUG_ON(retry == 3 && task != NULL); sas_free_task(task); return res; |