Spdk/lib/nvme
Shuhei Matsumoto f62d5ccbe6 nvme/tcp: Properly handle multiple iovecs in nvme_tcp_pdu_set_data_buf
nvme_tcp_pdu_set_data_buf() has been used to process C2H and H2C for
NVMe/TCP initiator.

In this case, NVMe/TCP cuts out the part of the input data buffer
and transfers the part, and repeats these cut and transfers until
the whole data buffer is transferred. NVMe/TCP uses two SGLs, and
use one to parse from the offset datao to datao + datal and another
to append from the offset 0 to datal.

However, the current nvme_tcp_pdu_set_data_buf() had used
data_length as not data length of this transfer but total length
of the whole transfers by mistake.

Recently DIF library updated to properly handle very similar
cases, and so this patch takes DIF library as a reference and
corrects the implementation.

The next patch will add UT code to verify the bug will be fixed.
The code size is pretty large and so UT code is separated.

Change-Id: Ibeed4de182b8b8740566e874e2757280dc21f9e8
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455623
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Ziye Yang <ziye.yang@intel.com>
2019-07-01 08:28:20 +00:00
..
Makefile Opal: Add Opal library 2019-04-08 17:04:25 +00:00
nvme_ctrlr_cmd.c nvme: add qpair parameter to nvme_complete_request 2019-05-22 14:51:01 +00:00
nvme_ctrlr_ocssd_cmd.c ocssd: hold lock when calling nvme_ctrlr_submit_admin_request 2019-02-15 21:27:58 +00:00
nvme_ctrlr.c nvme: switch to spdk_*malloc(). 2019-06-27 04:34:50 +00:00
nvme_fabric.c nvme: switch to spdk_*malloc(). 2019-06-27 04:34:50 +00:00
nvme_internal.h nvme: assign qpair when req is allocated 2019-06-04 00:01:35 +00:00
nvme_ns_cmd.c nvme: explicitly mark _nvme_ns_cmd_rw as inline 2019-06-03 03:11:08 +00:00
nvme_ns_ocssd_cmd.c vtophys: add length parameter to the vtophys function 2019-01-09 08:24:59 +00:00
nvme_ns.c nvme: make identify NS id descriptors can be executed asynchronously 2018-10-15 17:57:56 +00:00
nvme_opal_internal.h Opal: Optimize key creation and remove dev->dev_key 2019-06-19 00:28:57 +00:00
nvme_opal.c Opal: Optimize key creation and remove dev->dev_key 2019-06-19 00:28:57 +00:00
nvme_pcie.c nvme: fix the endless loop of aborting trackers 2019-06-21 08:34:41 +00:00
nvme_qpair.c nvme: switch to spdk_*malloc(). 2019-06-27 04:34:50 +00:00
nvme_quirks.c nvme: add SHST_COMPLETE quirk for VMWare emulated SSDs 2019-02-27 01:46:32 +00:00
nvme_rdma.c nvme: add qpair parameter to nvme_complete_request 2019-05-22 14:51:01 +00:00
nvme_tcp.c nvme/tcp: Properly handle multiple iovecs in nvme_tcp_pdu_set_data_buf 2019-07-01 08:28:20 +00:00
nvme_transport.c nvme: add qpair is_connecting flag 2019-05-14 08:48:11 +00:00
nvme_uevent.c nvme: add vfio driver parse event 2019-05-29 02:36:41 +00:00
nvme_uevent.h nvme: Add support of hotplug for vfio-attached devices. 2017-12-06 17:04:49 -05:00
nvme.c nvme: switch to spdk_*malloc(). 2019-06-27 04:34:50 +00:00