Skip to content

Commit 4eb0153

Browse files
jsmart-ghmartinkpetersen
authored andcommitted
scsi: lpfc: Fix missing wakeups on abort threads
Abort thread wakeups, on some wqe types, are not happening. The thread wakeup logic is dependent upon the LPFC_DRIVER_ABORTED flag. However, on these wqes, the completion handler running prior to the io completion routine ends up clearing the flag. Rework the wakeup logic to look at a non-null waitq element which must be set if the abort thread is waiting. This is reverting the change in the indicated patch. Fixes: c201726 ("scsi: lpfc: Rework locking on SCSI io completion") Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <jsmart2021@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent ed2e63a commit 4eb0153

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

drivers/scsi/lpfc/lpfc_scsi.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3878,10 +3878,9 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
38783878
* wake up the thread.
38793879
*/
38803880
spin_lock(&lpfc_cmd->buf_lock);
3881-
if (unlikely(lpfc_cmd->cur_iocbq.iocb_flag & LPFC_DRIVER_ABORTED)) {
3882-
lpfc_cmd->cur_iocbq.iocb_flag &= ~LPFC_DRIVER_ABORTED;
3883-
if (lpfc_cmd->waitq)
3884-
wake_up(lpfc_cmd->waitq);
3881+
lpfc_cmd->cur_iocbq.iocb_flag &= ~LPFC_DRIVER_ABORTED;
3882+
if (lpfc_cmd->waitq) {
3883+
wake_up(lpfc_cmd->waitq);
38853884
lpfc_cmd->waitq = NULL;
38863885
}
38873886
spin_unlock(&lpfc_cmd->buf_lock);

0 commit comments

Comments
 (0)