aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sd_dif.c
diff options
context:
space:
mode:
authorJeremy Higdon <jeremy@sgi.com>2013-04-18 02:55:23 -0700
committerJames Bottomley <JBottomley@Parallels.com>2013-05-02 15:37:03 -0700
commit025a1f5029497c12a800a10d4540bf2313413b59 (patch)
tree77a8b733ea5f7d2e9b75aaf3a6a273be18ba4253 /drivers/scsi/sd_dif.c
parent1ac7c26d88bc0e256ecd269e6f90c7343c359004 (diff)
downloadkernel_goldelico_gta04-025a1f5029497c12a800a10d4540bf2313413b59.zip
kernel_goldelico_gta04-025a1f5029497c12a800a10d4540bf2313413b59.tar.gz
kernel_goldelico_gta04-025a1f5029497c12a800a10d4540bf2313413b59.tar.bz2
[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>
Diffstat (limited to 'drivers/scsi/sd_dif.c')
-rw-r--r--drivers/scsi/sd_dif.c8
1 files changed, 0 insertions, 8 deletions
diff --git a/drivers/scsi/sd_dif.c b/drivers/scsi/sd_dif.c
index 04998f3..6174ca4 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)
if (sdt->app_tag == 0xffff)
return 0;
- /* Bad ref tag received from disk */
- if (sdt->ref_tag == 0xffffffff) {
- printk(KERN_ERR
- "%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)) {
printk(KERN_ERR
"%s: ref tag error on sector %lu (rcvd %u)\n",