Commit f66a0c9e authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

scsi: pass management function as a parameter



Specify the function as a parameter to spdk_scsi_dev_queue_mgmt_task.
This makes the API clearer by making it explicit that the management
function is required for management tasks.

Change-Id: I92d893aadb6faebea81dd79729894d2c2fddf088
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 1e7e6a61
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -167,7 +167,8 @@ int spdk_scsi_dev_get_id(const struct spdk_scsi_dev *dev);
int spdk_scsi_dev_get_max_lun(const struct spdk_scsi_dev *dev);
struct spdk_scsi_lun *spdk_scsi_dev_get_lun(struct spdk_scsi_dev *dev, int lun_id);
void spdk_scsi_dev_destruct(struct spdk_scsi_dev *dev);
void spdk_scsi_dev_queue_mgmt_task(struct spdk_scsi_dev *dev, struct spdk_scsi_task *task);
void spdk_scsi_dev_queue_mgmt_task(struct spdk_scsi_dev *dev, struct spdk_scsi_task *task,
				   enum spdk_scsi_task_func func);
void spdk_scsi_dev_queue_task(struct spdk_scsi_dev *dev, struct spdk_scsi_task *task);
int spdk_scsi_dev_add_port(struct spdk_scsi_dev *dev, uint64_t id, const char *name);
struct spdk_scsi_port *spdk_scsi_dev_find_port_by_id(struct spdk_scsi_dev *dev, uint64_t id);
+6 −9
Original line number Diff line number Diff line
@@ -2836,11 +2836,12 @@ static void spdk_iscsi_queue_task(struct spdk_iscsi_conn *conn,
}

static void spdk_iscsi_queue_mgmt_task(struct spdk_iscsi_conn *conn,
				       struct spdk_iscsi_task *task)
				       struct spdk_iscsi_task *task,
				       enum spdk_scsi_task_func func)
{
	task->scsi.cb_event = spdk_event_allocate(spdk_env_get_current_core(), process_task_mgmt_completion,
			      conn, task);
	spdk_scsi_dev_queue_mgmt_task(conn->dev, &task->scsi);
	spdk_scsi_dev_queue_mgmt_task(conn->dev, &task->scsi, func);
}

int spdk_iscsi_conn_handle_queued_tasks(struct spdk_iscsi_conn *conn)
@@ -3267,10 +3268,9 @@ spdk_iscsi_op_task(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu)
	case ISCSI_TASK_FUNC_ABORT_TASK:
		SPDK_NOTICELOG("ABORT_TASK\n");

		task->scsi.function = SPDK_SCSI_TASK_FUNC_ABORT_TASK;
		task->scsi.abort_id = ref_task_tag;

		spdk_iscsi_queue_mgmt_task(conn, task);
		spdk_iscsi_queue_mgmt_task(conn, task, SPDK_SCSI_TASK_FUNC_ABORT_TASK);
		spdk_del_transfer_task(conn, ref_task_tag);

		return SPDK_SUCCESS;
@@ -3279,9 +3279,7 @@ spdk_iscsi_op_task(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu)
	case ISCSI_TASK_FUNC_ABORT_TASK_SET:
		SPDK_NOTICELOG("ABORT_TASK_SET\n");

		task->scsi.function = SPDK_SCSI_TASK_FUNC_ABORT_TASK_SET;

		spdk_iscsi_queue_mgmt_task(conn, task);
		spdk_iscsi_queue_mgmt_task(conn, task, SPDK_SCSI_TASK_FUNC_ABORT_TASK_SET);
		spdk_clear_all_transfer_task(conn, task->scsi.lun);

		return SPDK_SUCCESS;
@@ -3298,9 +3296,8 @@ spdk_iscsi_op_task(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu)

	case ISCSI_TASK_FUNC_LOGICAL_UNIT_RESET:
		SPDK_NOTICELOG("LOGICAL_UNIT_RESET\n");
		task->scsi.function = SPDK_SCSI_TASK_FUNC_LUN_RESET;

		spdk_iscsi_queue_mgmt_task(conn, task);
		spdk_iscsi_queue_mgmt_task(conn, task, SPDK_SCSI_TASK_FUNC_LUN_RESET);
		spdk_clear_all_transfer_task(conn, task->scsi.lun);
		return SPDK_SUCCESS;

+1 −2
Original line number Diff line number Diff line
@@ -1067,11 +1067,10 @@ spdk_iscsi_tgt_node_cleanup_luns(struct spdk_iscsi_conn *conn,
		task->scsi.target_port = conn->target_port;
		task->scsi.initiator_port = conn->initiator_port;
		task->scsi.lun = lun;
		task->scsi.function = SPDK_SCSI_TASK_FUNC_LUN_RESET;

		task->scsi.cb_event = spdk_event_allocate(spdk_env_get_current_core(),
				      process_task_mgmt_completion, conn, task);
		spdk_scsi_dev_queue_mgmt_task(target->dev, &task->scsi);
		spdk_scsi_dev_queue_mgmt_task(target->dev, &task->scsi, SPDK_SCSI_TASK_FUNC_LUN_RESET);
	}

	return 0;
+4 −2
Original line number Diff line number Diff line
@@ -201,12 +201,14 @@ error:

void
spdk_scsi_dev_queue_mgmt_task(struct spdk_scsi_dev *dev,
			      struct spdk_scsi_task *task)
			      struct spdk_scsi_task *task,
			      enum spdk_scsi_task_func func)
{
	assert(task != NULL);

	task->type = SPDK_SCSI_TASK_TYPE_MANAGE;
	spdk_scsi_lun_task_mgmt_execute(task);
	task->function = func;
	spdk_scsi_lun_task_mgmt_execute(task, func);
}

void
+3 −2
Original line number Diff line number Diff line
@@ -134,7 +134,8 @@ spdk_scsi_lun_reset(struct spdk_scsi_task *mtask, struct spdk_scsi_lun *lun)
}

int
spdk_scsi_lun_task_mgmt_execute(struct spdk_scsi_task *task)
spdk_scsi_lun_task_mgmt_execute(struct spdk_scsi_task *task,
				enum spdk_scsi_task_func func)
{
	int rc;

@@ -142,7 +143,7 @@ spdk_scsi_lun_task_mgmt_execute(struct spdk_scsi_task *task)
		return -1;
	}

	switch (task->function) {
	switch (func) {
	case SPDK_SCSI_TASK_FUNC_ABORT_TASK:
		rc = spdk_scsi_lun_abort_task(task, task->lun,
					      task->initiator_port,
Loading