iscsi: Factor out copy scsi status when it is not good
Change-Id: I5042df8c25a2d2f6591a2a922e22407904b04bab Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/414561 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
d817d6a766
commit
03a52d0d32
@ -221,6 +221,7 @@ void spdk_scsi_task_build_sense_data(struct spdk_scsi_task *task, int sk, int as
|
|||||||
int ascq);
|
int ascq);
|
||||||
void spdk_scsi_task_set_status(struct spdk_scsi_task *task, int sc, int sk, int asc,
|
void spdk_scsi_task_set_status(struct spdk_scsi_task *task, int sc, int sk, int asc,
|
||||||
int ascq);
|
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);
|
void spdk_scsi_task_process_null_lun(struct spdk_scsi_task *task);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -792,10 +792,7 @@ process_read_task_completion(struct spdk_iscsi_conn *conn,
|
|||||||
|
|
||||||
if (task->scsi.status != SPDK_SCSI_STATUS_GOOD) {
|
if (task->scsi.status != SPDK_SCSI_STATUS_GOOD) {
|
||||||
TAILQ_FOREACH(tmp, &primary->subtask_list, subtask_link) {
|
TAILQ_FOREACH(tmp, &primary->subtask_list, subtask_link) {
|
||||||
memcpy(tmp->scsi.sense_data, task->scsi.sense_data,
|
spdk_scsi_task_copy_status(&tmp->scsi, &task->scsi);
|
||||||
task->scsi.sense_data_len);
|
|
||||||
tmp->scsi.sense_data_len = task->scsi.sense_data_len;
|
|
||||||
tmp->scsi.status = task->scsi.status;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -843,10 +840,7 @@ spdk_iscsi_task_cpl(struct spdk_scsi_task *scsi_task)
|
|||||||
primary->bytes_completed += task->scsi.length;
|
primary->bytes_completed += task->scsi.length;
|
||||||
if ((task != primary) &&
|
if ((task != primary) &&
|
||||||
(task->scsi.status != SPDK_SCSI_STATUS_GOOD)) {
|
(task->scsi.status != SPDK_SCSI_STATUS_GOOD)) {
|
||||||
memcpy(primary->scsi.sense_data, task->scsi.sense_data,
|
spdk_scsi_task_copy_status(&primary->scsi, &task->scsi);
|
||||||
task->scsi.sense_data_len);
|
|
||||||
primary->scsi.sense_data_len = task->scsi.sense_data_len;
|
|
||||||
primary->scsi.status = task->scsi.status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (primary->bytes_completed == primary->scsi.transfer_len) {
|
if (primary->bytes_completed == primary->scsi.transfer_len) {
|
||||||
|
@ -245,3 +245,12 @@ spdk_scsi_task_set_status(struct spdk_scsi_task *task, int sc, int sk,
|
|||||||
}
|
}
|
||||||
task->status = sc;
|
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;
|
||||||
|
}
|
||||||
|
@ -174,6 +174,12 @@ spdk_scsi_port_get_name(const struct spdk_scsi_port *port)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
spdk_scsi_task_copy_status(struct spdk_scsi_task *dst,
|
||||||
|
struct spdk_scsi_task *src)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
spdk_put_pdu(struct spdk_iscsi_pdu *pdu)
|
spdk_put_pdu(struct spdk_iscsi_pdu *pdu)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user