Commit 025a1f50 authored by Jeremy Higdon's avatar Jeremy Higdon Committed by James Bottomley

[SCSI] sd_dif: problem with verify of type 1 protection information (PI)

It appears to me that there is a problem with handling of type 1 protection

It is considering a logical block reference tag of 0xffffffff to be an error,
but it is actually valid any time ((lba & 0xffffffff) == 0xffffffff) [for
example, 2TiB-1, 4TiB-1, 6TiB-1, etc.].

I'm going by what's written in 4.18.3 of SBC3, where there doesn't appear
to be any invalid value for the reference tag.
Signed-off-by: default avatarJeremy Higdon <>
Acked-by: default avatarMartin K. Petersen <>
Signed-off-by: default avatarJames Bottomley <>
parent 1ac7c26d
......@@ -93,14 +93,6 @@ static int sd_dif_type1_verify(struct blk_integrity_exchg *bix, csum_fn *fn)
if (sdt->app_tag == 0xffff)
return 0;
/* Bad ref tag received from disk */
if (sdt->ref_tag == 0xffffffff) {
"%s: bad phys ref tag on sector %lu\n",
bix->disk_name, (unsigned long)sector);
return -EIO;
if (be32_to_cpu(sdt->ref_tag) != (sector & 0xffffffff)) {
"%s: ref tag error on sector %lu (rcvd %u)\n",
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment