• John Garry's avatar
    scsi: isci: Drop SAS_TASK_AT_INITIATOR check in isci_task_abort_task() · c39d5aa4
    John Garry authored
    In the queue path, move around when we assign sas_task->lldd_task such that
    this pointer and the SAS_TASK_AT_INITIATOR flag are set atomically.  It is
    also not required to clear SAS_TASK_AT_INITIATOR in isci_task_execute_task()
    error path as it is also cleared immediately after in isci_task_refuse()
    call.
    
    Now the following items may be considered:
    
     - SAS_TASK_STATE_DONE and SAS_TASK_AT_INITIATOR are mutually exclusive
       apart from possibly when SAS_TASK_STATE_DONE is set in
       sas_scsi_find_task(), but that is after .lldd_abort_task, i.e. the
       considered callback, is called.
    
     - If isci_task_refuse() is called in the queue path, then
       sas_task->lldd_task and SAS_TASK_AT_INITIATOR are cleared atomically in
       isci_task_refuse().
    
     - In the completion path, SAS_TASK_STATE_DONE is set and
       SAS_TASK_AT_INITIATOR is cleared atomically before the
       sas_task.lldd_task is cleared later.
    
    So in isci_task_abort_task() if SAS_TASK_STATE_DONE is not set and
    sas_task.lldd_task is still set, then SAS_TASK_AT_INITIATOR must be set -
    so we can drop this check on SAS_TASK_AT_INITIATOR.
    
    [mkp: checkpatch]
    
    Link: https://lore.kernel.org/r/1644489804-85730-2-git-send-email-john.garry@huawei.comSigned-off-by: default avatarJohn Garry <john.garry@huawei.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    c39d5aa4
request.h 11.4 KB