[SCSI] Deprecate SCSI_PROT_*_CONVERT operations
The checksum format is orthogonal to whether the protection information is being passed on beyond the HBA or not. It is perfectly valid to use a non-T10 CRC with WRITE_STRIP and READ_INSERT. Consequently it no longer makes sense to explicitly refer to the conversion in the protection operation. Update sd_dif and lpfc accordingly. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Acked-by: Ihab Hamadi <Ihab.Hamadi@Emulex.Com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
6e883b0e42
commit
c6af404215
3 changed files with 7 additions and 32 deletions
|
@ -56,8 +56,6 @@ static char *dif_op_str[] = {
|
||||||
"SCSI_PROT_WRITE_INSERT",
|
"SCSI_PROT_WRITE_INSERT",
|
||||||
"SCSI_PROT_READ_PASS",
|
"SCSI_PROT_READ_PASS",
|
||||||
"SCSI_PROT_WRITE_PASS",
|
"SCSI_PROT_WRITE_PASS",
|
||||||
"SCSI_PROT_READ_CONVERT",
|
|
||||||
"SCSI_PROT_WRITE_CONVERT"
|
|
||||||
};
|
};
|
||||||
static void
|
static void
|
||||||
lpfc_release_scsi_buf_s4(struct lpfc_hba *phba, struct lpfc_scsi_buf *psb);
|
lpfc_release_scsi_buf_s4(struct lpfc_hba *phba, struct lpfc_scsi_buf *psb);
|
||||||
|
@ -1131,13 +1129,11 @@ lpfc_sc_to_sli_prof(struct scsi_cmnd *sc)
|
||||||
ret_prof = LPFC_PROF_A1;
|
ret_prof = LPFC_PROF_A1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCSI_PROT_READ_CONVERT:
|
case SCSI_PROT_READ_PASS:
|
||||||
case SCSI_PROT_WRITE_CONVERT:
|
case SCSI_PROT_WRITE_PASS:
|
||||||
ret_prof = LPFC_PROF_AST1;
|
ret_prof = LPFC_PROF_AST1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCSI_PROT_READ_PASS:
|
|
||||||
case SCSI_PROT_WRITE_PASS:
|
|
||||||
case SCSI_PROT_NORMAL:
|
case SCSI_PROT_NORMAL:
|
||||||
default:
|
default:
|
||||||
printk(KERN_ERR "Bad op/guard:%d/%d combination\n",
|
printk(KERN_ERR "Bad op/guard:%d/%d combination\n",
|
||||||
|
@ -1157,8 +1153,6 @@ lpfc_sc_to_sli_prof(struct scsi_cmnd *sc)
|
||||||
ret_prof = LPFC_PROF_C1;
|
ret_prof = LPFC_PROF_C1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCSI_PROT_READ_CONVERT:
|
|
||||||
case SCSI_PROT_WRITE_CONVERT:
|
|
||||||
case SCSI_PROT_READ_INSERT:
|
case SCSI_PROT_READ_INSERT:
|
||||||
case SCSI_PROT_WRITE_STRIP:
|
case SCSI_PROT_WRITE_STRIP:
|
||||||
case SCSI_PROT_NORMAL:
|
case SCSI_PROT_NORMAL:
|
||||||
|
@ -1209,8 +1203,7 @@ lpfc_get_cmd_dif_parms(struct scsi_cmnd *sc, uint16_t *apptagmask,
|
||||||
static int cnt;
|
static int cnt;
|
||||||
|
|
||||||
if (protcnt && (op == SCSI_PROT_WRITE_STRIP ||
|
if (protcnt && (op == SCSI_PROT_WRITE_STRIP ||
|
||||||
op == SCSI_PROT_WRITE_PASS ||
|
op == SCSI_PROT_WRITE_PASS)) {
|
||||||
op == SCSI_PROT_WRITE_CONVERT)) {
|
|
||||||
|
|
||||||
cnt++;
|
cnt++;
|
||||||
spt = page_address(sg_page(scsi_prot_sglist(sc))) +
|
spt = page_address(sg_page(scsi_prot_sglist(sc))) +
|
||||||
|
@ -1501,8 +1494,6 @@ lpfc_prot_group_type(struct lpfc_hba *phba, struct scsi_cmnd *sc)
|
||||||
case SCSI_PROT_WRITE_STRIP:
|
case SCSI_PROT_WRITE_STRIP:
|
||||||
case SCSI_PROT_READ_PASS:
|
case SCSI_PROT_READ_PASS:
|
||||||
case SCSI_PROT_WRITE_PASS:
|
case SCSI_PROT_WRITE_PASS:
|
||||||
case SCSI_PROT_WRITE_CONVERT:
|
|
||||||
case SCSI_PROT_READ_CONVERT:
|
|
||||||
ret = LPFC_PG_TYPE_DIF_BUF;
|
ret = LPFC_PG_TYPE_DIF_BUF;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -364,15 +364,9 @@ void sd_dif_config_host(struct scsi_disk *sdkp)
|
||||||
*/
|
*/
|
||||||
void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsigned int type)
|
void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsigned int type)
|
||||||
{
|
{
|
||||||
int csum_convert, prot_op;
|
int prot_op;
|
||||||
|
|
||||||
prot_op = 0;
|
prot_op = SCSI_PROT_NORMAL;
|
||||||
|
|
||||||
/* Convert checksum? */
|
|
||||||
if (scsi_host_get_guard(scmd->device->host) != SHOST_DIX_GUARD_CRC)
|
|
||||||
csum_convert = 1;
|
|
||||||
else
|
|
||||||
csum_convert = 0;
|
|
||||||
|
|
||||||
BUG_ON(dif && (scmd->cmnd[0] == READ_6 || scmd->cmnd[0] == WRITE_6));
|
BUG_ON(dif && (scmd->cmnd[0] == READ_6 || scmd->cmnd[0] == WRITE_6));
|
||||||
|
|
||||||
|
@ -382,10 +376,7 @@ void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsig
|
||||||
case READ_12:
|
case READ_12:
|
||||||
case READ_16:
|
case READ_16:
|
||||||
if (dif && dix)
|
if (dif && dix)
|
||||||
if (csum_convert)
|
prot_op = SCSI_PROT_READ_PASS;
|
||||||
prot_op = SCSI_PROT_READ_CONVERT;
|
|
||||||
else
|
|
||||||
prot_op = SCSI_PROT_READ_PASS;
|
|
||||||
else if (dif && !dix)
|
else if (dif && !dix)
|
||||||
prot_op = SCSI_PROT_READ_STRIP;
|
prot_op = SCSI_PROT_READ_STRIP;
|
||||||
else if (!dif && dix)
|
else if (!dif && dix)
|
||||||
|
@ -398,10 +389,7 @@ void sd_dif_op(struct scsi_cmnd *scmd, unsigned int dif, unsigned int dix, unsig
|
||||||
case WRITE_12:
|
case WRITE_12:
|
||||||
case WRITE_16:
|
case WRITE_16:
|
||||||
if (dif && dix)
|
if (dif && dix)
|
||||||
if (csum_convert)
|
prot_op = SCSI_PROT_WRITE_PASS;
|
||||||
prot_op = SCSI_PROT_WRITE_CONVERT;
|
|
||||||
else
|
|
||||||
prot_op = SCSI_PROT_WRITE_PASS;
|
|
||||||
else if (dif && !dix)
|
else if (dif && !dix)
|
||||||
prot_op = SCSI_PROT_WRITE_INSERT;
|
prot_op = SCSI_PROT_WRITE_INSERT;
|
||||||
else if (!dif && dix)
|
else if (!dif && dix)
|
||||||
|
|
|
@ -229,10 +229,6 @@ enum scsi_prot_operations {
|
||||||
/* OS-HBA: Protected, HBA-Target: Protected */
|
/* OS-HBA: Protected, HBA-Target: Protected */
|
||||||
SCSI_PROT_READ_PASS,
|
SCSI_PROT_READ_PASS,
|
||||||
SCSI_PROT_WRITE_PASS,
|
SCSI_PROT_WRITE_PASS,
|
||||||
|
|
||||||
/* OS-HBA: Protected, HBA-Target: Protected, checksum conversion */
|
|
||||||
SCSI_PROT_READ_CONVERT,
|
|
||||||
SCSI_PROT_WRITE_CONVERT,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void scsi_set_prot_op(struct scsi_cmnd *scmd, unsigned char op)
|
static inline void scsi_set_prot_op(struct scsi_cmnd *scmd, unsigned char op)
|
||||||
|
|
Loading…
Reference in a new issue