ae7019417e
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> |
||
---|---|---|
.. | ||
conn.c | ||
conn.h | ||
init_grp.c | ||
init_grp.h | ||
iscsi_rpc.c | ||
iscsi_subsystem.c | ||
iscsi.c | ||
iscsi.h | ||
Makefile | ||
md5.c | ||
md5.h | ||
param.c | ||
param.h | ||
portal_grp.c | ||
portal_grp.h | ||
spdk_iscsi.map | ||
task.c | ||
task.h | ||
tgt_node.c | ||
tgt_node.h |