Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 72f4ba1e authored by Nicholas Bellinger's avatar Nicholas Bellinger
Browse files

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: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 12850626
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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;
	/*
	 * 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;
}