diff options
author | Jeremy Higdon <jeremy@sgi.com> | 2013-04-18 05:55:23 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-05-02 18:37:03 -0400 |
commit | 025a1f5029497c12a800a10d4540bf2313413b59 (patch) | |
tree | 77a8b733ea5f7d2e9b75aaf3a6a273be18ba4253 | |
parent | 1ac7c26d88bc0e256ecd269e6f90c7343c359004 (diff) |
[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>
-rw-r--r-- | drivers/scsi/sd_dif.c | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/drivers/scsi/sd_dif.c b/drivers/scsi/sd_dif.c index 04998f36e507..6174ca4ea275 100644 --- a/drivers/scsi/sd_dif.c +++ b/drivers/scsi/sd_dif.c | |||
@@ -93,14 +93,6 @@ static int sd_dif_type1_verify(struct blk_integrity_exchg *bix, csum_fn *fn) | |||
93 | if (sdt->app_tag == 0xffff) | 93 | if (sdt->app_tag == 0xffff) |
94 | return 0; | 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 | if (be32_to_cpu(sdt->ref_tag) != (sector & 0xffffffff)) { | 96 | if (be32_to_cpu(sdt->ref_tag) != (sector & 0xffffffff)) { |
105 | printk(KERN_ERR | 97 | printk(KERN_ERR |
106 | "%s: ref tag error on sector %lu (rcvd %u)\n", | 98 | "%s: ref tag error on sector %lu (rcvd %u)\n", |