Re: [PATCH 07/51] megaraid: pass in NULL scb for host reset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/17/21 2:26 PM, Christoph Hellwig wrote:
> On Tue, Aug 17, 2021 at 11:14:12AM +0200, Hannes Reinecke wrote:
>> 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 <hare@xxxxxxxx>
>> ---
>>  drivers/scsi/megaraid.c | 42 ++++++++++++++++-------------------------
>>  1 file changed, 16 insertions(+), 26 deletions(-)
>>
>> diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c
>> index 56910e94dbf2..7c53933fb1b4 100644
>> --- a/drivers/scsi/megaraid.c
>> +++ b/drivers/scsi/megaraid.c
>> @@ -1905,7 +1905,7 @@ megaraid_reset(struct scsi_cmnd *cmd)
>>  
>>  	spin_lock_irq(&adapter->lock);
>>  
>> -	rval =  megaraid_abort_and_reset(adapter, cmd, SCB_RESET);
>> +	rval =  megaraid_abort_and_reset(adapter, NULL, SCB_RESET);
>>  
>>  	/*
>>  	 * This is required here to complete any completed requests
>> @@ -1944,7 +1944,7 @@ megaraid_abort_and_reset(adapter_t *adapter, struct scsi_cmnd *cmd, int aor)
>>  
>>  		scb = list_entry(pos, scb_t, list);
> 
> Ther's a dev_warn before this, which dereferences cmd.
> 
>> -		if (scb->cmd == cmd) { /* Found command */
>> +		if (!cmd || scb->cmd == cmd) { /* Found command */
>>  
>>  			scb->state |= aor;
> 
> But more importantly, this function doesn't make much sense for the
> !cmd case, as it doesn't really do anything when not matched. It
> seems like the legacy megaraid driver should just stop calling it
> for resets.
> 
Well, it does the usual RAID HBA host reset: wait for commands to
complete (That's the '!cmd' case).
So as such I guess there is a value in having a host reset function;
we might, however, look at separating the functions.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		           Kernel Storage Architect
hare@xxxxxxx			                  +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), GF: Felix Imendörffer



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux