numam-spdk/lib/iscsi
Shuhei Matsumoto b8a51ff5b8 iscsi: Add an API to return DIF context of SCSI command
Ths patch adds an API spdk_iscsi_get_dif_ctx().

When opcode of BHS is SCSI command, spdk_iscsi_get_dif_ctx() extracts
CDB and LUN ID from BHS. When opcode of BHS is Data Out or Data In,
spdk_iscsi_get_dif_ctx() extracts TTT and get R2T task corresponding
to TTT, and gets CDB and LUN ID from the task.

Then spdk_iscsi_get_dif_ctx() gets LUN by using LUN ID and calls
spdk_scsi_lun_get_dif_ctx().

Additionally spdk_iscsi_get_dif_ctx() checks the state of the connection
and the type of the session is valid before starting decode operation
because contents of PDU is not reliable when the state of the connection
is invalid. The necessity of the check was found by the Calsoft test tool.
Checks and test cases are not matched yet but copying existing checks
from spdk_iscsi_conn_execute, spdk_iscsi_op_scsi, and spdk_iscsi_op_data
will be enough. The check added for Data Out is not necessary for Data In
but it will not be harmful for Data In.

Change-Id: Iba09e0ac3e760aa1c5b582a120596c49b9e9d51e
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/446231
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ziye Yang <ziye.yang@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2019-03-08 01:21:26 +00:00
..
acceptor.c thread: Replace #include of io_channel.h with thread.h 2018-06-12 15:24:07 +00:00
acceptor.h iscsi: login poller per portal and portal cache 2017-10-06 17:00:45 -04:00
conn.c iscsi: Add a function to read PDU data from socket by spdk_sock_readv 2019-03-08 01:21:26 +00:00
conn.h iscsi: Add a function to read PDU data from socket by spdk_sock_readv 2019-03-08 01:21:26 +00:00
init_grp.c iscsi: check the length of initiator/target name 2018-11-21 00:55:55 +00:00
init_grp.h iscsi: Use not C++ style comments // but C-style comments /* */ 2018-10-31 22:01:47 +00:00
iscsi_rpc.c iscsi: Use spdk_json_write_named_* APIs throughout 2019-02-04 07:08:04 +00:00
iscsi_subsystem.c iscsi: Replace helper function spdk_get_data_out_buffer_size() by macro constant 2019-02-15 21:01:08 +00:00
iscsi.c iscsi: Add an API to return DIF context of SCSI command 2019-03-08 01:21:26 +00:00
iscsi.h iscsi: Add an API to return DIF context of SCSI command 2019-03-08 01:21:26 +00:00
Makefile mk: add framework for defining inter-lib dependencies 2018-11-01 21:25:55 +00:00
md5.c astyle: enforce braces around single-line statements 2017-12-11 11:19:32 -05:00
md5.h include: Move the remainder of the code base to stdinc.h 2017-05-08 13:20:36 -07:00
param.c iscsi: Remove SPDK_ISCSI_MAX_SEND_DATA_SEGMENT_LENGTH 2019-02-21 18:38:07 +00:00
param.h include: Move the remainder of the code base to stdinc.h 2017-05-08 13:20:36 -07:00
portal_grp.c iscsi: Fix two bugs of JSON config dump 2018-05-17 23:06:11 +00:00
portal_grp.h iscsi: Use not C++ style comments // but C-style comments /* */ 2018-10-31 22:01:47 +00:00
task.c scsi, iscsi: move task->parent to iSCSI task 2018-01-05 00:01:37 -05:00
task.h iscsi: Propagate SCSI error status to split SCSI read/write commands 2018-12-11 16:37:55 +00:00
tgt_node.c iscsi: Fix uncorrect LUN reset called when exiting connection. 2018-12-11 16:37:55 +00:00
tgt_node.h iscsi: Add set_iscsi_target_node_auth RPC to configure CHAP dynamically 2018-08-22 22:39:26 +00:00