Commit 03a52d0d authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Jim Harris
Browse files

iscsi: Factor out copy scsi status when it is not good

parent d817d6a7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -221,6 +221,7 @@ void spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int as
				     int ascq);
void spdk_scsi_task_set_status(struct spdk_scsi_task *task, int sc, int sk, int asc,
			       int ascq);
void spdk_scsi_task_copy_status(struct spdk_scsi_task *dst, struct spdk_scsi_task *src);
void spdk_scsi_task_process_null_lun(struct spdk_scsi_task *task);

#ifdef __cplusplus
+2 −8
Original line number Diff line number Diff line
@@ -792,10 +792,7 @@ process_read_task_completion(struct spdk_iscsi_conn *conn,

	if (task->scsi.status != SPDK_SCSI_STATUS_GOOD) {
		TAILQ_FOREACH(tmp, &primary->subtask_list, subtask_link) {
			memcpy(tmp->scsi.sense_data, task->scsi.sense_data,
			       task->scsi.sense_data_len);
			tmp->scsi.sense_data_len = task->scsi.sense_data_len;
			tmp->scsi.status = task->scsi.status;
			spdk_scsi_task_copy_status(&tmp->scsi, &task->scsi);
		}
	}

@@ -843,10 +840,7 @@ spdk_iscsi_task_cpl(struct spdk_scsi_task *scsi_task)
		primary->bytes_completed += task->scsi.length;
		if ((task != primary) &&
		    (task->scsi.status != SPDK_SCSI_STATUS_GOOD)) {
			memcpy(primary->scsi.sense_data, task->scsi.sense_data,
			       task->scsi.sense_data_len);
			primary->scsi.sense_data_len = task->scsi.sense_data_len;
			primary->scsi.status = task->scsi.status;
			spdk_scsi_task_copy_status(&primary->scsi, &task->scsi);
		}

		if (primary->bytes_completed == primary->scsi.transfer_len) {
+9 −0
Original line number Diff line number Diff line
@@ -245,3 +245,12 @@ spdk_scsi_task_set_status(struct spdk_scsi_task *task, int sc, int sk,
	}
	task->status = sc;
}

void
spdk_scsi_task_copy_status(struct spdk_scsi_task *dst,
			   struct spdk_scsi_task *src)
{
	memcpy(dst->sense_data, src->sense_data, src->sense_data_len);
	dst->sense_data_len = src->sense_data_len;
	dst->status = src->status;
}
+6 −0
Original line number Diff line number Diff line
@@ -174,6 +174,12 @@ spdk_scsi_port_get_name(const struct spdk_scsi_port *port)
	return NULL;
}

void
spdk_scsi_task_copy_status(struct spdk_scsi_task *dst,
			   struct spdk_scsi_task *src)
{
}

void
spdk_put_pdu(struct spdk_iscsi_pdu *pdu)
{