lpfc 10.4.8000.0: Fix locking issues with abort data paths
Subsystems (2)
PATCH 14/19 lpfc 10.4.8000.0: Fix locking issues with abort data paths
Fix locking issues with abort data paths
Signed-off-by James Smart <[email protected]>
Signed-off-by Dick Kennedy <[email protected]>
--- drivers/scsi/lpfc/lpfc_scsi.c | 12 ++++- drivers/scsi/lpfc/lpfc_sli.c | 118 +++++++++++++++++++++++++----------------- drivers/scsi/lpfc/lpfc_sli.h | 1 + 3 files changed, 83 insertions(+), 48 deletions(-)
drivers/scsi/lpfc/lpfc_scsi.c +11 -1
@@ -3466,7 +3466,7 @@ lpfc_scsi_prep_dma_buf_s4(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd)*/ if ((phba->cfg_fof) && ((struct lpfc_device_data *) scsi_cmnd->device->hostdata)->oas_enabled) - lpfc_cmd->cur_iocbq.iocb_flag |=LPFC_IO_OAS ; + lpfc_cmd->cur_iocbq.iocb_flag |= (LPFC_IO_OAS |LPFC_IO_FOF );return 0 ; }
@@ -3606,6 +3606,14 @@ lpfc_bg_scsi_prep_dma_buf_s4(struct lpfc_hba *phba,*/ iocb_cmd->un.fcpi.fcpi_parm = fcpdl; +/* +* If the OAS driver feature is enabled and the lun is enabled for +* OAS, set the oas iocb related flags. +*/ +if ((phba->cfg_fof) && ((struct lpfc_device_data *) + scsi_cmnd->device->hostdata)->oas_enabled) + lpfc_cmd->cur_iocbq.iocb_flag |= (LPFC_IO_OAS |LPFC_IO_FOF ); +return 0 ; err:if (lpfc_cmd->seg_cnt)
@@ -4876,6 +4884,8 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)/* ABTS WQE must go to the same WQ as the WQE to be aborted */ abtsiocb->fcp_wqidx = iocb->fcp_wqidx; abtsiocb->iocb_flag |=LPFC_USE_FCPWQIDX ; +if (iocb->iocb_flag &LPFC_IO_FOF ) + abtsiocb->iocb_flag |=LPFC_IO_FOF ;if (lpfc_is_link_up (phba)) icmd->ulpCommand =CMD_ABORT_XRI_CN ;
drivers/scsi/lpfc/lpfc_sli.c +71 -47
168 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_sli.h +1 -0
@@ -79,6 +79,7 @@ struct lpfc_iocbq {#define LPFC_FIP_ELS_ID_SHIFT 14#define LPFC_IO_OAS 0x10000/* OAS FCP IO */ +#define LPFC_IO_FOF 0x20000/* FOF FCP IO */ uint32_t drvrTimeout;/* driver timeout in seconds */ uint32_t fcp_wqidx;/* index to FCP work queue */
Signature · 1 line
1.7.11.7