Perhaps I'm missing something but I can never get
DIF stuff to do what I want in scsi_debug. It was
like this before your patches as well.
Assume this set up:
# lsscsi -gp
[1:0:0:0] disk ATA ST3320620AS 3.AA /dev/sda /dev/sg0 -
-
[6:0:9:0] disk SEAGATE ST33000650SS 0002 /dev/sdb /dev/sg2
DIF/Type1 -
[7:0:0:0] disk Linux scsi_debug 0004 /dev/sdc /dev/sg3
DIF/Type1 -
So 6:0:9:0 is a real disk formatted with protection type 1
and 7:0:0:0 is simulating the same thing (with scsi_debug).
Now I try to read the first block with RDPROTECT=1 so in
the data-out buffer I expect the LB plus the protection
info. That as 512+8 bytes. So now I use ddpt to read the
first block plus PI from the Seagate disk:
# ddpt if=/dev/sg2 bs=512 verbose=3 protect=1 count=1
....
Output file not specified so no copy, just reading input
READ cdb: 28 20 00 00 00 00 00 00 01 00
1+0 records in
0+0 records out
time to read data: 0.000574 secs at 892.0 KB/sec
Good, asked for 520 bytes and got them. But when I try
that with scsi_debug disk:
# ddpt if=/dev/sg3 bs=512 verbose=3 protect=1 count=1
...
Output file not specified so no copy, just reading input
READ cdb: 28 20 00 00 00 00 00 00 01 00
READ: pass-through requested 520 bytes but got 512 bytes
1+0 records in
0+0 records out
>> Non-zero sum of residual counts=8
time to read data: 0.000833 secs at 614.6 KB/sec
No PI, why not? This was tested on lk 3.9.4 with your patches
applied.
Doug Gilbert
On 13-05-26 04:01 AM, Akinobu Mita wrote:
This patch set includes bug fixes which I hit when I was tried testing
the data integrity support in scsi_debug on x86_32.
And it also includes cleanups which helps increasing readability and
further bug fixing in data integrity support.
* Changes from v2
- Add new bug fix patch for UNMAP command support
- Change the way to fix for the patch "fix invalid address passed to
kunmap_atomic()"
- Reduce more lines of code for the patch "reduce duplication between
prot_verify_read and prot_verify_writ"
* Changes from v1
- Split the patch "fix data integrity support on highmem machine" into
two separate patches.
- Add new cleanup patch "reduce duplication between prot_verify_read and
prot_verify_write".
Cc: "James E.J. Bottomley" <JBottomley@xxxxxxxxxxxxx>
Cc: Douglas Gilbert <dgilbert@xxxxxxxxxxxx>
Cc: "Martin K. Petersen" <martin.petersen@xxxxxxxxxx>
Cc: linux-scsi@xxxxxxxxxxxxxxx
Akinobu Mita (6):
scsi_debug: fix invalid address passed to kunmap_atomic()
scsi_debug: fix incorrectly nested kmap_atomic()
scsi_debug: fix NULL pointer dereference with parameters dif=0 dix=1
scsi_debug: invalidate protection info for unmapped region
scsi_debug: simplify offset calculation for dif_storep
scsi_debug: reduce duplication between prot_verify_read and
prot_verify_write
drivers/scsi/scsi_debug.c | 176 +++++++++++++++++++---------------------------
1 file changed, 72 insertions(+), 104 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html