Commit 025a1f5029497c12a800a10d4540bf2313413b59

Authored by Jeremy Higdon
Committed by James Bottomley
1 parent 1ac7c26d88

[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
information.

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: Jeremy Higdon <jeremy@sgi.com>
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>

Showing 1 changed file with 0 additions and 8 deletions Side-by-side Diff

drivers/scsi/sd_dif.c
... ... @@ -93,14 +93,6 @@
93 93 if (sdt->app_tag == 0xffff)
94 94 return 0;
95 95  
96   - /* Bad ref tag received from disk */
97   - if (sdt->ref_tag == 0xffffffff) {
98   - printk(KERN_ERR
99   - "%s: bad phys ref tag on sector %lu\n",
100   - bix->disk_name, (unsigned long)sector);
101   - return -EIO;
102   - }
103   -
104 96 if (be32_to_cpu(sdt->ref_tag) != (sector & 0xffffffff)) {
105 97 printk(KERN_ERR
106 98 "%s: ref tag error on sector %lu (rcvd %u)\n",