Skip to content

Commit 5bcd3bf

Browse files
hreineckemartinkpetersen
authored andcommitted
scsi: megaraid: Pass in NULL scb for host reset
When calling a host reset we shouldn't rely on the command triggering the reset, so allow megaraid_abort_and_reset() to be called with a NULL scb. And drop the pointless 'bus_reset' and 'target_reset' handlers, which just call the same function as host_reset. Signed-off-by: Hannes Reinecke <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Johannes Thumshirn <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]>
1 parent 397ff21 commit 5bcd3bf

File tree

1 file changed

+16
-26
lines changed

1 file changed

+16
-26
lines changed

drivers/scsi/megaraid.c

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1898,7 +1898,7 @@ megaraid_reset(struct scsi_cmnd *cmd)
18981898

18991899
spin_lock_irq(&adapter->lock);
19001900

1901-
rval = megaraid_abort_and_reset(adapter, cmd, SCB_RESET);
1901+
rval = megaraid_abort_and_reset(adapter, NULL, SCB_RESET);
19021902

19031903
/*
19041904
* This is required here to complete any completed requests
@@ -1937,7 +1937,7 @@ megaraid_abort_and_reset(adapter_t *adapter, struct scsi_cmnd *cmd, int aor)
19371937

19381938
scb = list_entry(pos, scb_t, list);
19391939

1940-
if (scb->cmd == cmd) { /* Found command */
1940+
if (!cmd || scb->cmd == cmd) { /* Found command */
19411941

19421942
scb->state |= aor;
19431943

@@ -1956,31 +1956,23 @@ megaraid_abort_and_reset(adapter_t *adapter, struct scsi_cmnd *cmd, int aor)
19561956

19571957
return FAILED;
19581958
}
1959-
else {
1960-
1961-
/*
1962-
* Not yet issued! Remove from the pending
1963-
* list
1964-
*/
1965-
dev_warn(&adapter->dev->dev,
1966-
"%s-[%x], driver owner\n",
1967-
(aor==SCB_ABORT) ? "ABORTING":"RESET",
1968-
scb->idx);
1969-
1970-
mega_free_scb(adapter, scb);
1971-
1972-
if( aor == SCB_ABORT ) {
1973-
cmd->result = (DID_ABORT << 16);
1974-
}
1975-
else {
1976-
cmd->result = (DID_RESET << 16);
1977-
}
1959+
/*
1960+
* Not yet issued! Remove from the pending
1961+
* list
1962+
*/
1963+
dev_warn(&adapter->dev->dev,
1964+
"%s-[%x], driver owner\n",
1965+
(cmd) ? "ABORTING":"RESET",
1966+
scb->idx);
1967+
mega_free_scb(adapter, scb);
19781968

1969+
if (cmd) {
1970+
cmd->result = (DID_ABORT << 16);
19791971
list_add_tail(SCSI_LIST(cmd),
1980-
&adapter->completed_list);
1981-
1982-
return SUCCESS;
1972+
&adapter->completed_list);
19831973
}
1974+
1975+
return SUCCESS;
19841976
}
19851977
}
19861978

@@ -4114,8 +4106,6 @@ static const struct scsi_host_template megaraid_template = {
41144106
.sg_tablesize = MAX_SGLIST,
41154107
.cmd_per_lun = DEF_CMD_PER_LUN,
41164108
.eh_abort_handler = megaraid_abort,
4117-
.eh_device_reset_handler = megaraid_reset,
4118-
.eh_bus_reset_handler = megaraid_reset,
41194109
.eh_host_reset_handler = megaraid_reset,
41204110
.no_write_same = 1,
41214111
.cmd_size = sizeof(struct megaraid_cmd_priv),

0 commit comments

Comments
 (0)