numam-spdk/lib/iscsi
Shuhei Matsumoto ae7019417e iscsi: Merge immediate data into the following R2T data
The recent changes merged multiple Data-OUT PDUs within the same
sequence into a single subtask up to 64KB.

However, they were not enough.

For a large write operation, the hardware iSCSI HBA host sent an immediate
data whose size was not block size multiples and then more solicit
data through R2T exchanges.

One example for a 64KB write operation was as follows:
  host sent SCSI Write with 5792 bytes and F = 1
  target replied a R2T
  host sent Data-OUT with 15880 bytes
  host sent Data-OUT with 11536 bytes
  host sent Data-OUT with 2848 bytes
  host sent Data-OUT with 11536 bytes
  host sent Data-OUT with 5744 bytes
  host sent Data-OUT with 12200 bytes and F = 1

The hardware iSCSI HBA host can decide the size of the unsolicited data
but the SPDK iSCSI target can require the host to send the solicited data
whose size is block size multiples.

Hence we merge immediate data to the following R2T data if the immediate
data is not more than 64KB and more R2T data come.

Add another test case to check if the fix works for the above example.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I4906b4e1a8b61e08862f4ccc27a6caf165126530
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9708
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2021-11-16 09:08:27 +00:00
..
conn.c iscsi: iSCSI connection use spdk_scsi_dev_get_first/next_lun() to iterate LUNs 2021-10-11 10:08:22 +00:00
conn.h trace: move all trace definitions to a separate file 2021-10-20 07:22:00 +00:00
init_grp.c subsystem/iscsi: remove legacy config support 2020-10-20 08:53:53 +00:00
init_grp.h subsystem/iscsi: remove legacy config support 2020-10-20 08:53:53 +00:00
iscsi_rpc.c iscsi: Set resource pool size to the predetermined values to run with little memory 2021-06-17 08:59:18 +00:00
iscsi_subsystem.c iscsi: Fix data digest degradation by restoring the original code 2021-07-07 07:26:23 +00:00
iscsi.c iscsi: Merge immediate data into the following R2T data 2021-11-16 09:08:27 +00:00
iscsi.h iscsi: Set resource pool size to the predetermined values to run with little memory 2021-06-17 08:59:18 +00:00
Makefile so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
md5.c lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in md5.h 2020-04-20 07:38:29 +00:00
md5.h lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in md5.h 2020-04-20 07:38:29 +00:00
param.c lib/iscsi: add a comment for iscsi_parse_params() 2021-03-26 21:06:15 +00:00
param.h lib/iscsi: Remove the "spdk_" prefix from internal APIs declared in param.h 2020-04-20 07:38:29 +00:00
portal_grp.c lib/iscsi: Add portal_group_resume() and add pause parameter to portal_group_open() 2020-11-24 08:20:37 +00:00
portal_grp.h lib/iscsi: Add portal_group_resume() and add pause parameter to portal_group_open() 2020-11-24 08:20:37 +00:00
spdk_iscsi.map subsystem/iscsi: remove legacy config support 2020-10-20 08:53:53 +00:00
task.c lib/iscsi: Merge multiple Data-OUT PDUs up to 64KB in a sequence 2021-04-19 12:47:40 +00:00
task.h lib/iscsi: Merge multiple Data-OUT PDUs up to 64KB in a sequence 2021-04-19 12:47:40 +00:00
tgt_node.c iscsi: iSCSI target uses spdk_scsi_dev_get_first/next_lun() to iterate LUNs 2021-10-11 10:08:22 +00:00
tgt_node.h subsystem/iscsi: remove legacy config support 2020-10-20 08:53:53 +00:00