t10-pi: Move opencoded contants to common header
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Родитель
e23947bd76
Коммит
128b6f9fdd
|
@ -28,9 +28,6 @@
|
||||||
|
|
||||||
typedef __be16 (csum_fn) (void *, unsigned int);
|
typedef __be16 (csum_fn) (void *, unsigned int);
|
||||||
|
|
||||||
static const __be16 APP_ESCAPE = (__force __be16) 0xffff;
|
|
||||||
static const __be32 REF_ESCAPE = (__force __be32) 0xffffffff;
|
|
||||||
|
|
||||||
static __be16 t10_pi_crc_fn(void *data, unsigned int len)
|
static __be16 t10_pi_crc_fn(void *data, unsigned int len)
|
||||||
{
|
{
|
||||||
return cpu_to_be16(crc_t10dif(data, len));
|
return cpu_to_be16(crc_t10dif(data, len));
|
||||||
|
@ -82,7 +79,7 @@ static blk_status_t t10_pi_verify(struct blk_integrity_iter *iter,
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
if (pi->app_tag == APP_ESCAPE)
|
if (pi->app_tag == T10_PI_APP_ESCAPE)
|
||||||
goto next;
|
goto next;
|
||||||
|
|
||||||
if (be32_to_cpu(pi->ref_tag) !=
|
if (be32_to_cpu(pi->ref_tag) !=
|
||||||
|
@ -95,8 +92,8 @@ static blk_status_t t10_pi_verify(struct blk_integrity_iter *iter,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (pi->app_tag == APP_ESCAPE &&
|
if (pi->app_tag == T10_PI_APP_ESCAPE &&
|
||||||
pi->ref_tag == REF_ESCAPE)
|
pi->ref_tag == T10_PI_REF_ESCAPE)
|
||||||
goto next;
|
goto next;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <asm/unaligned.h>
|
#include <asm/unaligned.h>
|
||||||
|
#include <linux/t10-pi.h>
|
||||||
#include <linux/crc-t10dif.h>
|
#include <linux/crc-t10dif.h>
|
||||||
#include <net/checksum.h>
|
#include <net/checksum.h>
|
||||||
|
|
||||||
|
@ -2934,8 +2935,8 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_scsi_buf *lpfc_cmd)
|
||||||
* First check to see if a protection data
|
* First check to see if a protection data
|
||||||
* check is valid
|
* check is valid
|
||||||
*/
|
*/
|
||||||
if ((src->ref_tag == 0xffffffff) ||
|
if ((src->ref_tag == T10_PI_REF_ESCAPE) ||
|
||||||
(src->app_tag == 0xffff)) {
|
(src->app_tag == T10_PI_APP_ESCAPE)) {
|
||||||
start_ref_tag++;
|
start_ref_tag++;
|
||||||
goto skipit;
|
goto skipit;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1950,9 +1950,9 @@ qla2x00_handle_dif_error(srb_t *sp, struct sts_entry_24xx *sts24)
|
||||||
* For type 3: ref & app tag is all 'f's
|
* For type 3: ref & app tag is all 'f's
|
||||||
* For type 0,1,2: app tag is all 'f's
|
* For type 0,1,2: app tag is all 'f's
|
||||||
*/
|
*/
|
||||||
if ((a_app_tag == 0xffff) &&
|
if ((a_app_tag == T10_PI_APP_ESCAPE) &&
|
||||||
((scsi_get_prot_type(cmd) != SCSI_PROT_DIF_TYPE3) ||
|
((scsi_get_prot_type(cmd) != SCSI_PROT_DIF_TYPE3) ||
|
||||||
(a_ref_tag == 0xffffffff))) {
|
(a_ref_tag == T10_PI_REF_ESCAPE))) {
|
||||||
uint32_t blocks_done, resid;
|
uint32_t blocks_done, resid;
|
||||||
sector_t lba_s = scsi_get_lba(cmd);
|
sector_t lba_s = scsi_get_lba(cmd);
|
||||||
|
|
||||||
|
@ -1994,9 +1994,9 @@ qla2x00_handle_dif_error(srb_t *sp, struct sts_entry_24xx *sts24)
|
||||||
spt = page_address(sg_page(sg)) + sg->offset;
|
spt = page_address(sg_page(sg)) + sg->offset;
|
||||||
spt += j;
|
spt += j;
|
||||||
|
|
||||||
spt->app_tag = 0xffff;
|
spt->app_tag = T10_PI_APP_ESCAPE;
|
||||||
if (scsi_get_prot_type(cmd) == SCSI_PROT_DIF_TYPE3)
|
if (scsi_get_prot_type(cmd) == SCSI_PROT_DIF_TYPE3)
|
||||||
spt->ref_tag = 0xffffffff;
|
spt->ref_tag = T10_PI_REF_ESCAPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1450,7 +1450,7 @@ sbc_dif_verify(struct se_cmd *cmd, sector_t start, unsigned int sectors,
|
||||||
(unsigned long long)sector, sdt->guard_tag,
|
(unsigned long long)sector, sdt->guard_tag,
|
||||||
sdt->app_tag, be32_to_cpu(sdt->ref_tag));
|
sdt->app_tag, be32_to_cpu(sdt->ref_tag));
|
||||||
|
|
||||||
if (sdt->app_tag == cpu_to_be16(0xffff)) {
|
if (sdt->app_tag == T10_PI_APP_ESCAPE) {
|
||||||
dsg_off += block_size;
|
dsg_off += block_size;
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ struct t10_pi_tuple {
|
||||||
__be32 ref_tag; /* Target LBA or indirect LBA */
|
__be32 ref_tag; /* Target LBA or indirect LBA */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define T10_PI_APP_ESCAPE cpu_to_be16(0xffff)
|
||||||
|
#define T10_PI_REF_ESCAPE cpu_to_be32(0xffffffff)
|
||||||
|
|
||||||
extern const struct blk_integrity_profile t10_pi_type1_crc;
|
extern const struct blk_integrity_profile t10_pi_type1_crc;
|
||||||
extern const struct blk_integrity_profile t10_pi_type1_ip;
|
extern const struct blk_integrity_profile t10_pi_type1_ip;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче