[SCSI] scsi_debug: invalidate protection info for unmapped region
authorAkinobu Mita <akinobu.mita@gmail.com>
Sat, 29 Jun 2013 08:59:17 +0000 (17:59 +0900)
committerJames Bottomley <JBottomley@Parallels.com>
Tue, 9 Jul 2013 08:24:25 +0000 (09:24 +0100)
When UNMAP command is issued with the data integrity support enabled,
the protection info for the unmapped region is remain unchanged.
So READ command for the region later on causes data integrity failure.

This fixes it by invalidating protection info for the unmapped region
by filling with 0xff pattern.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Acked-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/scsi_debug.c

index e83e661b02571acfbcb27ecc32239d5cf8cdeada..83efec2919b13115ba06cfaabbcbefee5a9841d3 100644 (file)
@@ -2064,6 +2064,11 @@ static void unmap_region(sector_t lba, unsigned int len)
                                       scsi_debug_sector_size *
                                       scsi_debug_unmap_granularity);
                        }
+                       if (dif_storep) {
+                               memset(dif_storep + lba, 0xff,
+                                      sizeof(*dif_storep) *
+                                      scsi_debug_unmap_granularity);
+                       }
                }
                lba = map_index_to_lba(index + 1);
        }