target: Remove duplicate task completions in transport_emulate_control_cdb
This patch removes a duplicate set of transport_complete_task() calls in target_emulate_unmap() and target_emulate_write_same() as the completion call is already done within transport_emulate_control_cdb() This patch also adds a check in transport_emulate_control_cdb() for the existing SCF_EMULATE_CDB_ASYNC flag currently used by SYNCHRONIZE_CACHE in order to handle IMMEDIATE processing. Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
12850626e2
commit
72f4ba1e32
|
@ -1077,8 +1077,6 @@ target_emulate_unmap(struct se_task *task)
|
|||
size -= 16;
|
||||
}
|
||||
|
||||
task->task_scsi_status = GOOD;
|
||||
transport_complete_task(task, 1);
|
||||
err:
|
||||
transport_kunmap_first_data_page(cmd);
|
||||
|
||||
|
@ -1115,8 +1113,6 @@ target_emulate_write_same(struct se_task *task, u32 num_blocks)
|
|||
return ret;
|
||||
}
|
||||
|
||||
task->task_scsi_status = GOOD;
|
||||
transport_complete_task(task, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1228,8 +1224,14 @@ transport_emulate_control_cdb(struct se_task *task)
|
|||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
task->task_scsi_status = GOOD;
|
||||
transport_complete_task(task, 1);
|
||||
/*
|
||||
* Handle the successful completion here unless a caller
|
||||
* has explictly requested an asychronous completion.
|
||||
*/
|
||||
if (!(cmd->se_cmd_flags & SCF_EMULATE_CDB_ASYNC)) {
|
||||
task->task_scsi_status = GOOD;
|
||||
transport_complete_task(task, 1);
|
||||
}
|
||||
|
||||
return PYX_TRANSPORT_SENT_TO_TRANSPORT;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue