When the VIRTIO_SCSI_F_T10_PI feature bit is enabled, the virtio_scsi driver does not correctly calculate pi_bytes{out,in} when the underlying device has a 4 KiB logical block size. The current code assumes a 512 byte logical block size and protection interval exponent of 0 (512 bytes + 8 bytes PI). The first patch moves bio_integrity_intervals() and bio_integrity_bytes() into blkdev.h so drivers can make use of them. The second patch modifies virtio_scsi to call bio_integrity_bytes() to get the values for pi_bytes{out,in}. Greg Edwards (2): block: move bio_integrity_{intervals,bytes} into blkdev.h scsi: virtio_scsi: fix pi_bytes{out,in} on 4 KiB block size devices block/bio-integrity.c | 22 ---------------------- drivers/scsi/virtio_scsi.c | 8 ++++---- include/linux/blkdev.h | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 26 deletions(-) -- 2.17.1