summaryrefslogtreecommitdiffstats
path: root/include/scsi/scsi_transport_iscsi.h
diff options
context:
space:
mode:
authorSagi Grimberg <sagig@mellanox.com>2014-03-05 19:43:49 +0200
committerRoland Dreier <roland@purestorage.com>2014-03-17 22:33:58 -0700
commit55e51eda4820ec5a1c1fc8693a51029f74eac2b9 (patch)
tree77198a5b21bff21aecc44f625b620efd2342d2f9 /include/scsi/scsi_transport_iscsi.h
parent177e31bd5a40999028f6694623ceea1bec5abff6 (diff)
downloadop-kernel-dev-55e51eda4820ec5a1c1fc8693a51029f74eac2b9.zip
op-kernel-dev-55e51eda4820ec5a1c1fc8693a51029f74eac2b9.tar.gz
SCSI/libiscsi: Add check_protection callback for transports
iSCSI needs to be at least aware that a task involves protection information. In case it does, after the transaction completed libiscsi will ask the transport to check the protection status of the transaction. Unlike transport errors, DIF errors should not prevent successful completion of the transaction from the transport point of view, but should be escelated to scsi mid-layer when constructing the scsi result and sense data. check_protection routine will return the ascq corresponding to the DIF error that occured (or 0 if no error happened). return ascq: - 0x1: GUARD_CHECK_FAILED - 0x2: APPTAG_CHECK_FAILED - 0x3: REFTAG_CHECK_FAILED Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Alex Tabachnik <alext@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'include/scsi/scsi_transport_iscsi.h')
-rw-r--r--include/scsi/scsi_transport_iscsi.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
index 88640a4..2555ee5 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -167,6 +167,7 @@ struct iscsi_transport {
struct iscsi_bus_flash_conn *fnode_conn);
int (*logout_flashnode_sid) (struct iscsi_cls_session *cls_sess);
int (*get_host_stats) (struct Scsi_Host *shost, char *buf, int len);
+ u8 (*check_protection)(struct iscsi_task *task, sector_t *sector);
};
/*
OpenPOWER on IntegriCloud