On 02/07/2018 04:41 PM, Mike Christie wrote:
>  
>>  static int iscsi_exec_task_mgmt_fn(struct iscsi_conn *conn,
>> @@ -1908,7 +1908,7 @@ static enum blk_eh_timer_return 
>> iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
>>  
>>      ISCSI_DBG_EH(session, "scsi cmd %p timedout\n", sc);
>>  
>> -    spin_lock(&session->lock);
>> +    spin_lock_bh(&session->lock);
>>      task = (struct iscsi_task *)sc->SCp.ptr;
>>      if (!task) {
>>              /*
>> @@ -2022,7 +2022,7 @@ static enum blk_eh_timer_return 
>> iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
>>  done:
>>      if (task)
>>              task->last_timeout = jiffies;
>> -    spin_unlock(&session->lock);
>> +    spin_unlock_bh(&session->lock);
>>      ISCSI_DBG_EH(session, "return %s\n", rc == BLK_EH_RESET_TIMER ?
>>                   "timer reset" : "nh");
>>      return rc;

I guess you want this chunk too. It does not now, but someone could add
a blk_abort_request call that ends up calling into the driver.

Reply via email to