From 5ea834b540c81b7bf4128acbc9fdbb1b4d31eee8 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Wed, 29 Sep 2021 12:34:11 +0900 Subject: [PATCH] iscsi: Update task->current_data_offset always when submitting subtask Previously task->current_data_offset was updated by add_transfer_task(). However, the following patches will merge unsolicited data and solicited data into a single subtask. It will be possible that add_transfer_task() is called but subtask is not submitted. As a preparation, extract updating task->current_data_offset into iscsi_pdu_payload_op_scsi_write(). Signed-off-by: Shuhei Matsumoto Change-Id: I5262bb883fa2a081be1f087181de98d4c3c24d69 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9706 Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris Reviewed-by: Ben Walker --- lib/iscsi/iscsi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/iscsi/iscsi.c b/lib/iscsi/iscsi.c index 210a6781183..5aa7f4a5d31 100644 --- a/lib/iscsi/iscsi.c +++ b/lib/iscsi/iscsi.c @@ -2761,7 +2761,6 @@ add_transfer_task(struct spdk_iscsi_conn *conn, struct spdk_iscsi_task *task) conn->pending_r2t++; task->next_expected_r2t_offset = data_len; - task->current_data_offset = data_len; task->current_r2t_length = 0; task->R2TSN = 0; /* According to RFC3720 10.8.5, 0xffffffff is @@ -3326,6 +3325,8 @@ iscsi_pdu_payload_op_scsi_write(struct spdk_iscsi_conn *conn, struct spdk_iscsi_ subtask->scsi.length = pdu->data_segment_len; iscsi_task_associate_pdu(subtask, pdu); + task->current_data_offset = pdu->data_segment_len; + iscsi_queue_task(conn, subtask); } return 0;