struct lpfc_sli_ring *pring;
        LIST_HEAD(completions);
        int i;
+       struct lpfc_iocbq *piocb, *next_iocb;
 
        if (phba->sli_rev != LPFC_SLI_REV4) {
                for (i = 0; i < psli->num_rings; i++) {
                if (!pring)
                        continue;
                spin_lock_irq(&pring->ring_lock);
+               list_for_each_entry_safe(piocb, next_iocb,
+                                        &pring->txcmplq, list)
+                       piocb->iocb_flag &= ~LPFC_IO_ON_TXCMPLQ;
                list_splice_init(&pring->txcmplq, &completions);
                pring->txcmplq_cnt = 0;
                spin_unlock_irq(&pring->ring_lock);
 
        struct lpfc_sli *psli = &phba->sli;
        struct lpfc_sli_ring  *pring;
        uint32_t i;
+       struct lpfc_iocbq *piocb, *next_iocb;
 
        spin_lock_irq(&phba->hbalock);
        /* Indicate the I/O queues are flushed */
                        spin_lock_irq(&pring->ring_lock);
                        /* Retrieve everything on txq */
                        list_splice_init(&pring->txq, &txq);
+                       list_for_each_entry_safe(piocb, next_iocb,
+                                                &pring->txcmplq, list)
+                               piocb->iocb_flag &= ~LPFC_IO_ON_TXCMPLQ;
                        /* Retrieve everything on the txcmplq */
                        list_splice_init(&pring->txcmplq, &txcmplq);
                        pring->txq_cnt = 0;
                spin_lock_irq(&phba->hbalock);
                /* Retrieve everything on txq */
                list_splice_init(&pring->txq, &txq);
+               list_for_each_entry_safe(piocb, next_iocb,
+                                        &pring->txcmplq, list)
+                       piocb->iocb_flag &= ~LPFC_IO_ON_TXCMPLQ;
                /* Retrieve everything on the txcmplq */
                list_splice_init(&pring->txcmplq, &txcmplq);
                pring->txq_cnt = 0;
        LIST_HEAD(txcmplq);
        struct lpfc_sli_ring  *pring;
        uint32_t i;
+       struct lpfc_iocbq *piocb, *next_iocb;
 
        if (phba->sli_rev < LPFC_SLI_REV4)
                return;
        for (i = 0; i < phba->cfg_nvme_io_channel; i++) {
                pring = phba->sli4_hba.nvme_wq[i]->pring;
 
-               /* Retrieve everything on the txcmplq */
                spin_lock_irq(&pring->ring_lock);
+               list_for_each_entry_safe(piocb, next_iocb,
+                                        &pring->txcmplq, list)
+                       piocb->iocb_flag &= ~LPFC_IO_ON_TXCMPLQ;
+               /* Retrieve everything on the txcmplq */
                list_splice_init(&pring->txcmplq, &txcmplq);
                pring->txcmplq_cnt = 0;
                spin_unlock_irq(&pring->ring_lock);