* Use the proper SCSI midlayer interface for PI
@ 2021-08-06 4:00 Martin K. Petersen
2021-08-06 4:00 ` [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request Martin K. Petersen
` (4 more replies)
0 siblings, 5 replies; 13+ messages in thread
From: Martin K. Petersen @ 2021-08-06 4:00 UTC (permalink / raw)
To: linux-scsi
This is the remainder of the PI interface cleanup patches which remove
the guesswork about what and how to check from the low-level drivers.
There are no functional changes since v1. I renamed the function to
get the logical block count as requested by Bart and updated the
driver patches accordingly.
Please review!
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request
2021-08-06 4:00 Use the proper SCSI midlayer interface for PI Martin K. Petersen
@ 2021-08-06 4:00 ` Martin K. Petersen
2021-08-09 21:54 ` Bart Van Assche
2021-08-17 3:17 ` Martin K. Petersen
2021-08-06 4:00 ` [PATCH v2 2/5] scsi: isci: Use the proper SCSI midlayer interfaces for PI Martin K. Petersen
` (3 subsequent siblings)
4 siblings, 2 replies; 13+ messages in thread
From: Martin K. Petersen @ 2021-08-06 4:00 UTC (permalink / raw)
To: linux-scsi; +Cc: Martin K. Petersen, Bart Van Assche
Cc: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
---
include/scsi/scsi_cmnd.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index 90da9617d28a..804b2b33da4a 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -232,6 +232,13 @@ static inline sector_t scsi_get_lba(struct scsi_cmnd *scmd)
return blk_rq_pos(scmd->request) >> shift;
}
+static inline unsigned int scsi_logical_block_count(struct scsi_cmnd *scmd)
+{
+ unsigned int shift = ilog2(scmd->device->sector_size) - SECTOR_SHIFT;
+
+ return blk_rq_bytes(scmd->request) >> shift;
+}
+
/*
* The operations below are hints that tell the controller driver how
* to handle I/Os with DIF or similar types of protection information.
--
2.32.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/5] scsi: isci: Use the proper SCSI midlayer interfaces for PI
2021-08-06 4:00 Use the proper SCSI midlayer interface for PI Martin K. Petersen
2021-08-06 4:00 ` [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request Martin K. Petersen
@ 2021-08-06 4:00 ` Martin K. Petersen
2021-08-09 21:57 ` Bart Van Assche
2021-08-06 4:00 ` [PATCH v2 3/5] scsi: mpi3mr: " Martin K. Petersen
` (2 subsequent siblings)
4 siblings, 1 reply; 13+ messages in thread
From: Martin K. Petersen @ 2021-08-06 4:00 UTC (permalink / raw)
To: linux-scsi; +Cc: Martin K. Petersen
Use scsi_prot_ref_tag() instead of scsi_get_lba() to get the reference tag
for a given I/O.
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
---
drivers/scsi/isci/request.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c
index e1ff79464131..fcaa84a3c210 100644
--- a/drivers/scsi/isci/request.c
+++ b/drivers/scsi/isci/request.c
@@ -341,7 +341,7 @@ static void scu_ssp_ireq_dif_insert(struct isci_request *ireq, u8 type, u8 op)
tc->reserved_E8_0 = 0;
if ((type & SCSI_PROT_DIF_TYPE1) || (type & SCSI_PROT_DIF_TYPE2))
- tc->ref_tag_seed_gen = scsi_get_lba(scmd) & 0xffffffff;
+ tc->ref_tag_seed_gen = scsi_prot_ref_tag(scmd);
else if (type & SCSI_PROT_DIF_TYPE3)
tc->ref_tag_seed_gen = 0;
}
@@ -369,7 +369,7 @@ static void scu_ssp_ireq_dif_strip(struct isci_request *ireq, u8 type, u8 op)
tc->app_tag_gen = 0;
if ((type & SCSI_PROT_DIF_TYPE1) || (type & SCSI_PROT_DIF_TYPE2))
- tc->ref_tag_seed_verify = scsi_get_lba(scmd) & 0xffffffff;
+ tc->ref_tag_seed_verify = scsi_prot_ref_tag(scmd);
else if (type & SCSI_PROT_DIF_TYPE3)
tc->ref_tag_seed_verify = 0;
--
2.32.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/5] scsi: mpi3mr: Use the proper SCSI midlayer interfaces for PI
2021-08-06 4:00 Use the proper SCSI midlayer interface for PI Martin K. Petersen
2021-08-06 4:00 ` [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request Martin K. Petersen
2021-08-06 4:00 ` [PATCH v2 2/5] scsi: isci: Use the proper SCSI midlayer interfaces for PI Martin K. Petersen
@ 2021-08-06 4:00 ` Martin K. Petersen
2021-08-12 8:51 ` Kashyap Desai
2021-08-06 4:00 ` [PATCH v2 4/5] scsi: mpt3sas: " Martin K. Petersen
2021-08-06 4:00 ` [PATCH v2 5/5] scsi: lpfc: " Martin K. Petersen
4 siblings, 1 reply; 13+ messages in thread
From: Martin K. Petersen @ 2021-08-06 4:00 UTC (permalink / raw)
To: linux-scsi; +Cc: Martin K. Petersen, Sreekanth Reddy, Kashyap Desai
Use the SCSI midlayer interfaces to query protection interval, reference
tag, and per-command DIX flags
Cc: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Cc: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
---
drivers/scsi/mpi3mr/mpi3mr_os.c | 59 +++++++++++----------------------
1 file changed, 20 insertions(+), 39 deletions(-)
diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c
index 24ac7ddec749..3df5507c4768 100644
--- a/drivers/scsi/mpi3mr/mpi3mr_os.c
+++ b/drivers/scsi/mpi3mr/mpi3mr_os.c
@@ -1963,7 +1963,6 @@ static void mpi3mr_setup_eedp(struct mpi3mr_ioc *mrioc,
{
u16 eedp_flags = 0;
unsigned char prot_op = scsi_get_prot_op(scmd);
- unsigned char prot_type = scsi_get_prot_type(scmd);
switch (prot_op) {
case SCSI_PROT_NORMAL:
@@ -1983,60 +1982,42 @@ static void mpi3mr_setup_eedp(struct mpi3mr_ioc *mrioc,
scsiio_req->msg_flags |= MPI3_SCSIIO_MSGFLAGS_METASGL_VALID;
break;
case SCSI_PROT_READ_PASS:
- eedp_flags = MPI3_EEDPFLAGS_EEDP_OP_CHECK |
- MPI3_EEDPFLAGS_CHK_REF_TAG | MPI3_EEDPFLAGS_CHK_APP_TAG |
- MPI3_EEDPFLAGS_CHK_GUARD;
+ eedp_flags = MPI3_EEDPFLAGS_EEDP_OP_CHECK;
scsiio_req->msg_flags |= MPI3_SCSIIO_MSGFLAGS_METASGL_VALID;
break;
case SCSI_PROT_WRITE_PASS:
- if (scsi_host_get_guard(scmd->device->host)
- & SHOST_DIX_GUARD_IP) {
- eedp_flags = MPI3_EEDPFLAGS_EEDP_OP_CHECK_REGEN |
- MPI3_EEDPFLAGS_CHK_APP_TAG |
- MPI3_EEDPFLAGS_CHK_GUARD |
- MPI3_EEDPFLAGS_INCR_PRI_REF_TAG;
+ if (scmd->prot_flags & SCSI_PROT_IP_CHECKSUM) {
+ eedp_flags = MPI3_EEDPFLAGS_EEDP_OP_CHECK_REGEN;
scsiio_req->sgl[0].eedp.application_tag_translation_mask =
0xffff;
- } else {
- eedp_flags = MPI3_EEDPFLAGS_EEDP_OP_CHECK |
- MPI3_EEDPFLAGS_CHK_REF_TAG |
- MPI3_EEDPFLAGS_CHK_APP_TAG |
- MPI3_EEDPFLAGS_CHK_GUARD;
- }
+ } else
+ eedp_flags = MPI3_EEDPFLAGS_EEDP_OP_CHECK;
+
scsiio_req->msg_flags |= MPI3_SCSIIO_MSGFLAGS_METASGL_VALID;
break;
default:
return;
}
- if (scsi_host_get_guard(scmd->device->host) & SHOST_DIX_GUARD_IP)
+ if (scmd->prot_flags & SCSI_PROT_GUARD_CHECK)
+ eedp_flags |= MPI3_EEDPFLAGS_CHK_GUARD;
+
+ if (scmd->prot_flags & SCSI_PROT_IP_CHECKSUM)
eedp_flags |= MPI3_EEDPFLAGS_HOST_GUARD_IP_CHKSUM;
- switch (prot_type) {
- case SCSI_PROT_DIF_TYPE0:
- eedp_flags |= MPI3_EEDPFLAGS_INCR_PRI_REF_TAG;
+ if (scmd->prot_flags & SCSI_PROT_REF_CHECK) {
+ eedp_flags |= MPI3_EEDPFLAGS_CHK_REF_TAG |
+ MPI3_EEDPFLAGS_INCR_PRI_REF_TAG;
scsiio_req->cdb.eedp32.primary_reference_tag =
- cpu_to_be32(t10_pi_ref_tag(scmd->request));
- break;
- case SCSI_PROT_DIF_TYPE1:
- case SCSI_PROT_DIF_TYPE2:
- eedp_flags |= MPI3_EEDPFLAGS_INCR_PRI_REF_TAG |
- MPI3_EEDPFLAGS_ESC_MODE_APPTAG_DISABLE |
- MPI3_EEDPFLAGS_CHK_GUARD;
- scsiio_req->cdb.eedp32.primary_reference_tag =
- cpu_to_be32(t10_pi_ref_tag(scmd->request));
- break;
- case SCSI_PROT_DIF_TYPE3:
- eedp_flags |= MPI3_EEDPFLAGS_CHK_GUARD |
- MPI3_EEDPFLAGS_ESC_MODE_APPTAG_DISABLE;
- break;
-
- default:
- scsiio_req->msg_flags &= ~(MPI3_SCSIIO_MSGFLAGS_METASGL_VALID);
- return;
+ cpu_to_be32(scsi_prot_ref_tag(scmd));
}
- switch (scmd->device->sector_size) {
+ if (scmd->prot_flags & SCSI_PROT_REF_INCREMENT)
+ eedp_flags |= MPI3_EEDPFLAGS_INCR_PRI_REF_TAG;
+
+ eedp_flags |= MPI3_EEDPFLAGS_ESC_MODE_APPTAG_DISABLE;
+
+ switch (scsi_prot_interval(scmd)) {
case 512:
scsiio_req->sgl[0].eedp.user_data_size = MPI3_EEDP_UDS_512;
break;
--
2.32.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 4/5] scsi: mpt3sas: Use the proper SCSI midlayer interfaces for PI
2021-08-06 4:00 Use the proper SCSI midlayer interface for PI Martin K. Petersen
` (2 preceding siblings ...)
2021-08-06 4:00 ` [PATCH v2 3/5] scsi: mpi3mr: " Martin K. Petersen
@ 2021-08-06 4:00 ` Martin K. Petersen
2021-08-07 3:43 ` kernel test robot
2021-08-06 4:00 ` [PATCH v2 5/5] scsi: lpfc: " Martin K. Petersen
4 siblings, 1 reply; 13+ messages in thread
From: Martin K. Petersen @ 2021-08-06 4:00 UTC (permalink / raw)
To: linux-scsi; +Cc: Martin K. Petersen, Sreekanth Reddy, Kashyap Desai
Use the SCSI midlayer interfaces to query protection interval, reference
tag, and per-command DIX flags.
Cc: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Cc: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
---
drivers/scsi/mpt3sas/mpt3sas_scsih.c | 28 ++++++----------------------
1 file changed, 6 insertions(+), 22 deletions(-)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index 866d118f7931..a66cea57fa96 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -5062,33 +5062,17 @@ _scsih_setup_eedp(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
else
return;
- switch (prot_type) {
- case SCSI_PROT_DIF_TYPE1:
- case SCSI_PROT_DIF_TYPE2:
+ if (scmd->prot_op & SCSI_PROT_GUARD_CHECK)
+ eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD;
- /*
- * enable ref/guard checking
- * auto increment ref tag
- */
+ if (scmd->prot_op & SCSI_PROT_REF_CHECK) {
eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG |
- MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG |
- MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD;
+ MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG;
mpi_request->CDB.EEDP32.PrimaryReferenceTag =
- cpu_to_be32(t10_pi_ref_tag(scmd->request));
- break;
-
- case SCSI_PROT_DIF_TYPE3:
-
- /*
- * enable guard checking
- */
- eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD;
-
- break;
+ cpu_to_be32(scsi_prot_ref_tag(scmd));
}
- mpi_request_3v->EEDPBlockSize =
- cpu_to_le16(scmd->device->sector_size);
+ mpi_request_3v->EEDPBlockSize = scsi_prot_interval(scmd);
if (ioc->is_gen35_ioc)
eedp_flags |= MPI25_SCSIIO_EEDPFLAGS_APPTAG_DISABLE_MODE;
--
2.32.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 5/5] scsi: lpfc: Use the proper SCSI midlayer interfaces for PI
2021-08-06 4:00 Use the proper SCSI midlayer interface for PI Martin K. Petersen
` (3 preceding siblings ...)
2021-08-06 4:00 ` [PATCH v2 4/5] scsi: mpt3sas: " Martin K. Petersen
@ 2021-08-06 4:00 ` Martin K. Petersen
2021-08-24 15:11 ` James Smart
4 siblings, 1 reply; 13+ messages in thread
From: Martin K. Petersen @ 2021-08-06 4:00 UTC (permalink / raw)
To: linux-scsi; +Cc: Martin K. Petersen, James Smart, Dick Kennedy
Use the SCSI midlayer interfaces to query protection interval, reference
tag, per-command DIX flags, and logical block count.
CC: James Smart <james.smart@broadcom.com>
CC: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
---
drivers/scsi/lpfc/lpfc_scsi.c | 116 ++++++++++++++--------------------
1 file changed, 46 insertions(+), 70 deletions(-)
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index ee4ff4855866..9c27f285d86e 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -96,30 +96,6 @@ static void lpfc_vmid_update_entry(struct lpfc_vport *vport, struct scsi_cmnd
static void lpfc_vmid_assign_cs_ctl(struct lpfc_vport *vport,
struct lpfc_vmid *vmid);
-static inline unsigned
-lpfc_cmd_blksize(struct scsi_cmnd *sc)
-{
- return sc->device->sector_size;
-}
-
-#define LPFC_CHECK_PROTECT_GUARD 1
-#define LPFC_CHECK_PROTECT_REF 2
-static inline unsigned
-lpfc_cmd_protect(struct scsi_cmnd *sc, int flag)
-{
- return 1;
-}
-
-static inline unsigned
-lpfc_cmd_guard_csum(struct scsi_cmnd *sc)
-{
- if (lpfc_prot_group_type(NULL, sc) == LPFC_PG_TYPE_NO_DIF)
- return 0;
- if (scsi_host_get_guard(sc->device->host) == SHOST_DIX_GUARD_IP)
- return 1;
- return 0;
-}
-
/**
* lpfc_sli4_set_rsp_sgl_last - Set the last bit in the response sge.
* @phba: Pointer to HBA object.
@@ -1046,13 +1022,13 @@ lpfc_bg_err_inject(struct lpfc_hba *phba, struct scsi_cmnd *sc,
return 0;
sgpe = scsi_prot_sglist(sc);
- lba = t10_pi_ref_tag(sc->request);
+ lba = scsi_prot_ref_tag(sc);
if (lba == LPFC_INVALID_REFTAG)
return 0;
/* First check if we need to match the LBA */
if (phba->lpfc_injerr_lba != LPFC_INJERR_LBA_OFF) {
- blksize = lpfc_cmd_blksize(sc);
+ blksize = scsi_prot_interval(sc);
numblks = (scsi_bufflen(sc) + blksize - 1) / blksize;
/* Make sure we have the right LBA if one is specified */
@@ -1441,7 +1417,7 @@ lpfc_sc_to_bg_opcodes(struct lpfc_hba *phba, struct scsi_cmnd *sc,
{
uint8_t ret = 0;
- if (lpfc_cmd_guard_csum(sc)) {
+ if (sc->prot_flags & SCSI_PROT_IP_CHECKSUM) {
switch (scsi_get_prot_op(sc)) {
case SCSI_PROT_READ_INSERT:
case SCSI_PROT_WRITE_STRIP:
@@ -1521,7 +1497,7 @@ lpfc_bg_err_opcodes(struct lpfc_hba *phba, struct scsi_cmnd *sc,
{
uint8_t ret = 0;
- if (lpfc_cmd_guard_csum(sc)) {
+ if (sc->prot_flags & SCSI_PROT_IP_CHECKSUM) {
switch (scsi_get_prot_op(sc)) {
case SCSI_PROT_READ_INSERT:
case SCSI_PROT_WRITE_STRIP:
@@ -1629,7 +1605,7 @@ lpfc_bg_setup_bpl(struct lpfc_hba *phba, struct scsi_cmnd *sc,
goto out;
/* extract some info from the scsi command for pde*/
- reftag = t10_pi_ref_tag(sc->request);
+ reftag = scsi_prot_ref_tag(sc);
if (reftag == LPFC_INVALID_REFTAG)
goto out;
@@ -1668,12 +1644,12 @@ lpfc_bg_setup_bpl(struct lpfc_hba *phba, struct scsi_cmnd *sc,
* protection data is automatically generated, not checked.
*/
if (datadir == DMA_FROM_DEVICE) {
- if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_GUARD))
+ if (sc->prot_flags & SCSI_PROT_GUARD_CHECK)
bf_set(pde6_ce, pde6, checking);
else
bf_set(pde6_ce, pde6, 0);
- if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_REF))
+ if (sc->prot_flags & SCSI_PROT_REF_CHECK)
bf_set(pde6_re, pde6, checking);
else
bf_set(pde6_re, pde6, 0);
@@ -1791,8 +1767,8 @@ lpfc_bg_setup_bpl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc,
goto out;
/* extract some info from the scsi command */
- blksize = lpfc_cmd_blksize(sc);
- reftag = t10_pi_ref_tag(sc->request);
+ blksize = scsi_prot_interval(sc);
+ reftag = scsi_prot_ref_tag(sc);
if (reftag == LPFC_INVALID_REFTAG)
goto out;
@@ -1832,12 +1808,12 @@ lpfc_bg_setup_bpl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc,
bf_set(pde6_optx, pde6, txop);
bf_set(pde6_oprx, pde6, rxop);
- if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_GUARD))
+ if (sc->prot_flags & SCSI_PROT_GUARD_CHECK)
bf_set(pde6_ce, pde6, checking);
else
bf_set(pde6_ce, pde6, 0);
- if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_REF))
+ if (sc->prot_flags & SCSI_PROT_REF_CHECK)
bf_set(pde6_re, pde6, checking);
else
bf_set(pde6_re, pde6, 0);
@@ -2023,7 +1999,7 @@ lpfc_bg_setup_sgl(struct lpfc_hba *phba, struct scsi_cmnd *sc,
goto out;
/* extract some info from the scsi command for pde*/
- reftag = t10_pi_ref_tag(sc->request);
+ reftag = scsi_prot_ref_tag(sc);
if (reftag == LPFC_INVALID_REFTAG)
goto out;
@@ -2051,12 +2027,12 @@ lpfc_bg_setup_sgl(struct lpfc_hba *phba, struct scsi_cmnd *sc,
* protection data is automatically generated, not checked.
*/
if (sc->sc_data_direction == DMA_FROM_DEVICE) {
- if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_GUARD))
+ if (sc->prot_flags & SCSI_PROT_GUARD_CHECK)
bf_set(lpfc_sli4_sge_dif_ce, diseed, checking);
else
bf_set(lpfc_sli4_sge_dif_ce, diseed, 0);
- if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_REF))
+ if (sc->prot_flags & SCSI_PROT_REF_CHECK)
bf_set(lpfc_sli4_sge_dif_re, diseed, checking);
else
bf_set(lpfc_sli4_sge_dif_re, diseed, 0);
@@ -2223,8 +2199,8 @@ lpfc_bg_setup_sgl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc,
goto out;
/* extract some info from the scsi command */
- blksize = lpfc_cmd_blksize(sc);
- reftag = t10_pi_ref_tag(sc->request);
+ blksize = scsi_prot_interval(sc);
+ reftag = scsi_prot_ref_tag(sc);
if (reftag == LPFC_INVALID_REFTAG)
goto out;
@@ -2281,9 +2257,8 @@ lpfc_bg_setup_sgl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc,
diseed->ref_tag = cpu_to_le32(reftag);
diseed->ref_tag_tran = diseed->ref_tag;
- if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_GUARD)) {
+ if (sc->prot_flags & SCSI_PROT_GUARD_CHECK) {
bf_set(lpfc_sli4_sge_dif_ce, diseed, checking);
-
} else {
bf_set(lpfc_sli4_sge_dif_ce, diseed, 0);
/*
@@ -2300,7 +2275,7 @@ lpfc_bg_setup_sgl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc,
}
- if (lpfc_cmd_protect(sc, LPFC_CHECK_PROTECT_REF))
+ if (sc->prot_flags & SCSI_PROT_REF_CHECK)
bf_set(lpfc_sli4_sge_dif_re, diseed, checking);
else
bf_set(lpfc_sli4_sge_dif_re, diseed, 0);
@@ -2557,7 +2532,7 @@ lpfc_bg_scsi_adjust_dl(struct lpfc_hba *phba,
* DIF (trailer) attached to it. Must ajust FCP data length
* to account for the protection data.
*/
- fcpdl += (fcpdl / lpfc_cmd_blksize(sc)) * 8;
+ fcpdl += (fcpdl / scsi_prot_interval(sc)) * 8;
return fcpdl;
}
@@ -2811,14 +2786,14 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
* data length is a multiple of the blksize.
*/
sgde = scsi_sglist(cmd);
- blksize = lpfc_cmd_blksize(cmd);
+ blksize = scsi_prot_interval(cmd);
data_src = (uint8_t *)sg_virt(sgde);
data_len = sgde->length;
if ((data_len & (blksize - 1)) == 0)
chk_guard = 1;
src = (struct scsi_dif_tuple *)sg_virt(sgpe);
- start_ref_tag = t10_pi_ref_tag(cmd->request);
+ start_ref_tag = scsi_prot_ref_tag(cmd);
if (start_ref_tag == LPFC_INVALID_REFTAG)
goto out;
start_app_tag = src->app_tag;
@@ -2839,7 +2814,8 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
/* First Guard Tag checking */
if (chk_guard) {
guard_tag = src->guard_tag;
- if (lpfc_cmd_guard_csum(cmd))
+ if (cmd->prot_flags
+ & SCSI_PROT_IP_CHECKSUM)
sum = lpfc_bg_csum(data_src,
blksize);
else
@@ -2910,7 +2886,7 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
phba->bg_guard_err_cnt++;
lpfc_printf_log(phba, KERN_WARNING, LOG_FCP | LOG_BG,
"9069 BLKGRD: reftag %x grd_tag err %x != %x\n",
- t10_pi_ref_tag(cmd->request),
+ scsi_prot_ref_tag(cmd),
sum, guard_tag);
} else if (err_type == BGS_REFTAG_ERR_MASK) {
@@ -2920,7 +2896,7 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
phba->bg_reftag_err_cnt++;
lpfc_printf_log(phba, KERN_WARNING, LOG_FCP | LOG_BG,
"9066 BLKGRD: reftag %x ref_tag err %x != %x\n",
- t10_pi_ref_tag(cmd->request),
+ scsi_prot_ref_tag(cmd),
ref_tag, start_ref_tag);
} else if (err_type == BGS_APPTAG_ERR_MASK) {
@@ -2930,7 +2906,7 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
phba->bg_apptag_err_cnt++;
lpfc_printf_log(phba, KERN_WARNING, LOG_FCP | LOG_BG,
"9041 BLKGRD: reftag %x app_tag err %x != %x\n",
- t10_pi_ref_tag(cmd->request),
+ scsi_prot_ref_tag(cmd),
app_tag, start_app_tag);
}
}
@@ -2992,7 +2968,7 @@ lpfc_sli4_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
" 0x%x lba 0x%llx blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
(unsigned long long)scsi_get_lba(cmd),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_logical_block_count(cmd), bgstat, bghm);
}
if (lpfc_bgs_get_reftag_err(bgstat)) {
@@ -3007,7 +2983,7 @@ lpfc_sli4_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
" 0x%x lba 0x%llx blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
(unsigned long long)scsi_get_lba(cmd),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_logical_block_count(cmd), bgstat, bghm);
}
if (lpfc_bgs_get_apptag_err(bgstat)) {
@@ -3022,7 +2998,7 @@ lpfc_sli4_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
" 0x%x lba 0x%llx blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
(unsigned long long)scsi_get_lba(cmd),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_logical_block_count(cmd), bgstat, bghm);
}
if (lpfc_bgs_get_hi_water_mark_present(bgstat)) {
@@ -3066,7 +3042,7 @@ lpfc_sli4_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
" 0x%x lba 0x%llx blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
(unsigned long long)scsi_get_lba(cmd),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_logical_block_count(cmd), bgstat, bghm);
/* Calcuate what type of error it was */
lpfc_calc_bg_err(phba, lpfc_cmd);
@@ -3103,8 +3079,8 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
"9072 BLKGRD: Invalid BG Profile in cmd "
"0x%x reftag 0x%x blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
- t10_pi_ref_tag(cmd->request),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_prot_ref_tag(cmd),
+ scsi_logical_block_count(cmd), bgstat, bghm);
ret = (-1);
goto out;
}
@@ -3115,8 +3091,8 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
"9073 BLKGRD: Invalid BG PDIF Block in cmd "
"0x%x reftag 0x%x blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
- t10_pi_ref_tag(cmd->request),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_prot_ref_tag(cmd),
+ scsi_logical_block_count(cmd), bgstat, bghm);
ret = (-1);
goto out;
}
@@ -3131,8 +3107,8 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
"9055 BLKGRD: Guard Tag error in cmd "
"0x%x reftag 0x%x blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
- t10_pi_ref_tag(cmd->request),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_prot_ref_tag(cmd),
+ scsi_logical_block_count(cmd), bgstat, bghm);
}
if (lpfc_bgs_get_reftag_err(bgstat)) {
@@ -3146,8 +3122,8 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
"9056 BLKGRD: Ref Tag error in cmd "
"0x%x reftag 0x%x blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
- t10_pi_ref_tag(cmd->request),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_prot_ref_tag(cmd),
+ scsi_logical_block_count(cmd), bgstat, bghm);
}
if (lpfc_bgs_get_apptag_err(bgstat)) {
@@ -3161,8 +3137,8 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
"9061 BLKGRD: App Tag error in cmd "
"0x%x reftag 0x%x blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
- t10_pi_ref_tag(cmd->request),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_prot_ref_tag(cmd),
+ scsi_logical_block_count(cmd), bgstat, bghm);
}
if (lpfc_bgs_get_hi_water_mark_present(bgstat)) {
@@ -3205,8 +3181,8 @@ lpfc_parse_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd,
"9057 BLKGRD: Unknown error in cmd "
"0x%x reftag 0x%x blk cnt 0x%x "
"bgstat=x%x bghm=x%x\n", cmd->cmnd[0],
- t10_pi_ref_tag(cmd->request),
- blk_rq_sectors(cmd->request), bgstat, bghm);
+ scsi_prot_ref_tag(cmd),
+ scsi_logical_block_count(cmd), bgstat, bghm);
/* Calcuate what type of error it was */
lpfc_calc_bg_err(phba, lpfc_cmd);
@@ -5553,8 +5529,8 @@ lpfc_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd)
"reftag x%x cnt %u pt %x\n",
dif_op_str[scsi_get_prot_op(cmnd)],
cmnd->cmnd[0],
- t10_pi_ref_tag(cmnd->request),
- blk_rq_sectors(cmnd->request),
+ scsi_prot_ref_tag(cmnd),
+ scsi_logical_block_count(cmnd),
(cmnd->cmnd[1]>>5));
}
err = lpfc_bg_scsi_prep_dma_buf(phba, lpfc_cmd);
@@ -5565,8 +5541,8 @@ lpfc_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd)
"9038 BLKGRD: rcvd PROT_NORMAL cmd: "
"x%x reftag x%x cnt %u pt %x\n",
cmnd->cmnd[0],
- t10_pi_ref_tag(cmnd->request),
- blk_rq_sectors(cmnd->request),
+ scsi_prot_ref_tag(cmnd),
+ scsi_logical_block_count(cmnd),
(cmnd->cmnd[1]>>5));
}
err = lpfc_scsi_prep_dma_buf(phba, lpfc_cmd);
--
2.32.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 4/5] scsi: mpt3sas: Use the proper SCSI midlayer interfaces for PI
2021-08-06 4:00 ` [PATCH v2 4/5] scsi: mpt3sas: " Martin K. Petersen
@ 2021-08-07 3:43 ` kernel test robot
0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2021-08-07 3:43 UTC (permalink / raw)
To: Martin K. Petersen, linux-scsi
Cc: kbuild-all, Martin K. Petersen, Sreekanth Reddy, Kashyap Desai
[-- Attachment #1: Type: text/plain, Size: 4460 bytes --]
Hi "Martin,
I love your patch! Perhaps something to improve:
[auto build test WARNING on scsi/for-next]
[also build test WARNING on mkp-scsi/for-next next-20210806]
[cannot apply to v5.14-rc4]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Martin-K-Petersen/scsi-core-Add-helper-to-return-number-of-logical-blocks-in-a-request/20210806-130031
base: https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
config: arm64-randconfig-s032-20210806 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 10.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-348-gf0e6938b-dirty
# https://github.com/0day-ci/linux/commit/953afbb2ac9054f86b27ff634dbaf8311e27b6aa
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Martin-K-Petersen/scsi-core-Add-helper-to-return-number-of-logical-blocks-in-a-request/20210806-130031
git checkout 953afbb2ac9054f86b27ff634dbaf8311e27b6aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:5075:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] EEDPBlockSize @@ got unsigned int @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:5075:39: sparse: expected restricted __le16 [usertype] EEDPBlockSize
drivers/scsi/mpt3sas/mpt3sas_scsih.c:5075:39: sparse: got unsigned int
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
vim +5075 drivers/scsi/mpt3sas/mpt3sas_scsih.c
5036
5037 /**
5038 * _scsih_setup_eedp - setup MPI request for EEDP transfer
5039 * @ioc: per adapter object
5040 * @scmd: pointer to scsi command object
5041 * @mpi_request: pointer to the SCSI_IO request message frame
5042 *
5043 * Supporting protection 1 and 3.
5044 */
5045 static void
5046 _scsih_setup_eedp(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
5047 Mpi25SCSIIORequest_t *mpi_request)
5048 {
5049 u16 eedp_flags;
5050 unsigned char prot_op = scsi_get_prot_op(scmd);
5051 unsigned char prot_type = scsi_get_prot_type(scmd);
5052 Mpi25SCSIIORequest_t *mpi_request_3v =
5053 (Mpi25SCSIIORequest_t *)mpi_request;
5054
5055 if (prot_type == SCSI_PROT_DIF_TYPE0 || prot_op == SCSI_PROT_NORMAL)
5056 return;
5057
5058 if (prot_op == SCSI_PROT_READ_STRIP)
5059 eedp_flags = MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP;
5060 else if (prot_op == SCSI_PROT_WRITE_INSERT)
5061 eedp_flags = MPI2_SCSIIO_EEDPFLAGS_INSERT_OP;
5062 else
5063 return;
5064
5065 if (scmd->prot_op & SCSI_PROT_GUARD_CHECK)
5066 eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD;
5067
5068 if (scmd->prot_op & SCSI_PROT_REF_CHECK) {
5069 eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG |
5070 MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG;
5071 mpi_request->CDB.EEDP32.PrimaryReferenceTag =
5072 cpu_to_be32(scsi_prot_ref_tag(scmd));
5073 }
5074
> 5075 mpi_request_3v->EEDPBlockSize = scsi_prot_interval(scmd);
5076
5077 if (ioc->is_gen35_ioc)
5078 eedp_flags |= MPI25_SCSIIO_EEDPFLAGS_APPTAG_DISABLE_MODE;
5079 mpi_request->EEDPFlags = cpu_to_le16(eedp_flags);
5080 }
5081
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 42156 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 4/5] scsi: mpt3sas: Use the proper SCSI midlayer interfaces for PI
@ 2021-08-07 3:43 ` kernel test robot
0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2021-08-07 3:43 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 4556 bytes --]
Hi "Martin,
I love your patch! Perhaps something to improve:
[auto build test WARNING on scsi/for-next]
[also build test WARNING on mkp-scsi/for-next next-20210806]
[cannot apply to v5.14-rc4]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Martin-K-Petersen/scsi-core-Add-helper-to-return-number-of-logical-blocks-in-a-request/20210806-130031
base: https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
config: arm64-randconfig-s032-20210806 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 10.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-348-gf0e6938b-dirty
# https://github.com/0day-ci/linux/commit/953afbb2ac9054f86b27ff634dbaf8311e27b6aa
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Martin-K-Petersen/scsi-core-Add-helper-to-return-number-of-logical-blocks-in-a-request/20210806-130031
git checkout 953afbb2ac9054f86b27ff634dbaf8311e27b6aa
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/scsi/mpt3sas/mpt3sas_scsih.c:5075:39: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] EEDPBlockSize @@ got unsigned int @@
drivers/scsi/mpt3sas/mpt3sas_scsih.c:5075:39: sparse: expected restricted __le16 [usertype] EEDPBlockSize
drivers/scsi/mpt3sas/mpt3sas_scsih.c:5075:39: sparse: got unsigned int
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
drivers/scsi/mpt3sas/mpt3sas_scsih.c:10843:25: sparse: sparse: cast to restricted __le32
vim +5075 drivers/scsi/mpt3sas/mpt3sas_scsih.c
5036
5037 /**
5038 * _scsih_setup_eedp - setup MPI request for EEDP transfer
5039 * @ioc: per adapter object
5040 * @scmd: pointer to scsi command object
5041 * @mpi_request: pointer to the SCSI_IO request message frame
5042 *
5043 * Supporting protection 1 and 3.
5044 */
5045 static void
5046 _scsih_setup_eedp(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
5047 Mpi25SCSIIORequest_t *mpi_request)
5048 {
5049 u16 eedp_flags;
5050 unsigned char prot_op = scsi_get_prot_op(scmd);
5051 unsigned char prot_type = scsi_get_prot_type(scmd);
5052 Mpi25SCSIIORequest_t *mpi_request_3v =
5053 (Mpi25SCSIIORequest_t *)mpi_request;
5054
5055 if (prot_type == SCSI_PROT_DIF_TYPE0 || prot_op == SCSI_PROT_NORMAL)
5056 return;
5057
5058 if (prot_op == SCSI_PROT_READ_STRIP)
5059 eedp_flags = MPI2_SCSIIO_EEDPFLAGS_CHECK_REMOVE_OP;
5060 else if (prot_op == SCSI_PROT_WRITE_INSERT)
5061 eedp_flags = MPI2_SCSIIO_EEDPFLAGS_INSERT_OP;
5062 else
5063 return;
5064
5065 if (scmd->prot_op & SCSI_PROT_GUARD_CHECK)
5066 eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_CHECK_GUARD;
5067
5068 if (scmd->prot_op & SCSI_PROT_REF_CHECK) {
5069 eedp_flags |= MPI2_SCSIIO_EEDPFLAGS_INC_PRI_REFTAG |
5070 MPI2_SCSIIO_EEDPFLAGS_CHECK_REFTAG;
5071 mpi_request->CDB.EEDP32.PrimaryReferenceTag =
5072 cpu_to_be32(scsi_prot_ref_tag(scmd));
5073 }
5074
> 5075 mpi_request_3v->EEDPBlockSize = scsi_prot_interval(scmd);
5076
5077 if (ioc->is_gen35_ioc)
5078 eedp_flags |= MPI25_SCSIIO_EEDPFLAGS_APPTAG_DISABLE_MODE;
5079 mpi_request->EEDPFlags = cpu_to_le16(eedp_flags);
5080 }
5081
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 42156 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request
2021-08-06 4:00 ` [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request Martin K. Petersen
@ 2021-08-09 21:54 ` Bart Van Assche
2021-08-17 3:17 ` Martin K. Petersen
1 sibling, 0 replies; 13+ messages in thread
From: Bart Van Assche @ 2021-08-09 21:54 UTC (permalink / raw)
To: Martin K. Petersen, linux-scsi
On 8/5/21 9:00 PM, Martin K. Petersen wrote:
> Cc: Bart Van Assche <bvanassche@acm.org>
> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> ---
> include/scsi/scsi_cmnd.h | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
> index 90da9617d28a..804b2b33da4a 100644
> --- a/include/scsi/scsi_cmnd.h
> +++ b/include/scsi/scsi_cmnd.h
> @@ -232,6 +232,13 @@ static inline sector_t scsi_get_lba(struct scsi_cmnd *scmd)
> return blk_rq_pos(scmd->request) >> shift;
> }
>
> +static inline unsigned int scsi_logical_block_count(struct scsi_cmnd *scmd)
> +{
> + unsigned int shift = ilog2(scmd->device->sector_size) - SECTOR_SHIFT;
> +
> + return blk_rq_bytes(scmd->request) >> shift;
> +}
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 2/5] scsi: isci: Use the proper SCSI midlayer interfaces for PI
2021-08-06 4:00 ` [PATCH v2 2/5] scsi: isci: Use the proper SCSI midlayer interfaces for PI Martin K. Petersen
@ 2021-08-09 21:57 ` Bart Van Assche
0 siblings, 0 replies; 13+ messages in thread
From: Bart Van Assche @ 2021-08-09 21:57 UTC (permalink / raw)
To: Martin K. Petersen, linux-scsi
On 8/5/21 9:00 PM, Martin K. Petersen wrote:
> Use scsi_prot_ref_tag() instead of scsi_get_lba() to get the reference tag
> for a given I/O.
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH v2 3/5] scsi: mpi3mr: Use the proper SCSI midlayer interfaces for PI
2021-08-06 4:00 ` [PATCH v2 3/5] scsi: mpi3mr: " Martin K. Petersen
@ 2021-08-12 8:51 ` Kashyap Desai
0 siblings, 0 replies; 13+ messages in thread
From: Kashyap Desai @ 2021-08-12 8:51 UTC (permalink / raw)
To: Martin K. Petersen, linux-scsi; +Cc: Sreekanth Reddy
[-- Attachment #1: Type: text/plain, Size: 557 bytes --]
> Subject: [PATCH v2 3/5] scsi: mpi3mr: Use the proper SCSI midlayer
interfaces
> for PI
>
> Use the SCSI midlayer interfaces to query protection interval, reference
tag,
> and per-command DIX flags
>
> Cc: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
> Cc: Kashyap Desai <kashyap.desai@broadcom.com>
> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> ---
> drivers/scsi/mpi3mr/mpi3mr_os.c | 59 +++++++++++----------------------
> 1 file changed, 20 insertions(+), 39 deletions(-)
>
Acked-by: Kashyap Desai <kashyap.desai@broadcom.com>
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4212 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request
2021-08-06 4:00 ` [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request Martin K. Petersen
2021-08-09 21:54 ` Bart Van Assche
@ 2021-08-17 3:17 ` Martin K. Petersen
1 sibling, 0 replies; 13+ messages in thread
From: Martin K. Petersen @ 2021-08-17 3:17 UTC (permalink / raw)
To: Martin K. Petersen, linux-scsi; +Cc: Bart Van Assche
On Fri, 6 Aug 2021 00:00:19 -0400, Martin K. Petersen wrote:
>
Applied to 5.15/scsi-queue, thanks!
[1/5] scsi: core: Add helper to return number of logical blocks in a request
https://git.kernel.org/mkp/scsi/c/6a20e21ae1e2
[2/5] scsi: isci: Use the proper SCSI midlayer interfaces for PI
https://git.kernel.org/mkp/scsi/c/4cc0096e2d54
[3/5] scsi: mpi3mr: Use the proper SCSI midlayer interfaces for PI
https://git.kernel.org/mkp/scsi/c/92cc94adfce4
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 5/5] scsi: lpfc: Use the proper SCSI midlayer interfaces for PI
2021-08-06 4:00 ` [PATCH v2 5/5] scsi: lpfc: " Martin K. Petersen
@ 2021-08-24 15:11 ` James Smart
0 siblings, 0 replies; 13+ messages in thread
From: James Smart @ 2021-08-24 15:11 UTC (permalink / raw)
To: Martin K. Petersen, linux-scsi; +Cc: James Smart, Dick Kennedy
On 8/5/2021 9:00 PM, Martin K. Petersen wrote:
> Use the SCSI midlayer interfaces to query protection interval, reference
> tag, per-command DIX flags, and logical block count.
>
> CC: James Smart <james.smart@broadcom.com>
> CC: Dick Kennedy <dick.kennedy@broadcom.com>
> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> ---
> drivers/scsi/lpfc/lpfc_scsi.c | 116 ++++++++++++++--------------------
> 1 file changed, 46 insertions(+), 70 deletions(-)
>
Looks good.
Reviewed-by: James Smart <jsmart2021@gmail.com>
-- james
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-08-24 15:11 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-06 4:00 Use the proper SCSI midlayer interface for PI Martin K. Petersen
2021-08-06 4:00 ` [PATCH v2 1/5] scsi: core: Add helper to return number of logical blocks in a request Martin K. Petersen
2021-08-09 21:54 ` Bart Van Assche
2021-08-17 3:17 ` Martin K. Petersen
2021-08-06 4:00 ` [PATCH v2 2/5] scsi: isci: Use the proper SCSI midlayer interfaces for PI Martin K. Petersen
2021-08-09 21:57 ` Bart Van Assche
2021-08-06 4:00 ` [PATCH v2 3/5] scsi: mpi3mr: " Martin K. Petersen
2021-08-12 8:51 ` Kashyap Desai
2021-08-06 4:00 ` [PATCH v2 4/5] scsi: mpt3sas: " Martin K. Petersen
2021-08-07 3:43 ` kernel test robot
2021-08-07 3:43 ` kernel test robot
2021-08-06 4:00 ` [PATCH v2 5/5] scsi: lpfc: " Martin K. Petersen
2021-08-24 15:11 ` James Smart
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.