scsi: simplify lun task mgmt path

1) Consolidate the checks for a null LUN
2) Eliminate a bunch of static functions that are no
   longer needed due to #1

This prepares for some upcoming bdev reset changes.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I38475581b69ba4a034fc7b9e133cfcdfc535a5d3

Reviewed-on: https://review.gerrithub.io/362262
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Jim Harris 2017-05-23 13:11:49 -07:00 committed by Daniel Verkamp
parent fa1429ba02
commit 1a2cd90c98

View File

@ -89,86 +89,35 @@ spdk_scsi_lun_clear_all(struct spdk_scsi_lun *lun)
} }
} }
static int
spdk_scsi_lun_abort_all(struct spdk_scsi_task *mtask,
struct spdk_scsi_lun *lun,
struct spdk_scsi_port *initiator_port)
{
if (!lun) {
mtask->response = SPDK_SCSI_TASK_MGMT_RESP_INVALID_LUN;
return -1;
}
mtask->response = SPDK_SCSI_TASK_MGMT_RESP_REJECT_FUNC_NOT_SUPPORTED;
return -1;
}
static int
spdk_scsi_lun_abort_task(struct spdk_scsi_task *mtask,
struct spdk_scsi_lun *lun,
struct spdk_scsi_port *initiator_port,
uint32_t task_tag)
{
if (!lun) {
/* LUN does not exist */
mtask->response = SPDK_SCSI_TASK_MGMT_RESP_INVALID_LUN;
return -1;
}
mtask->response = SPDK_SCSI_TASK_MGMT_RESP_REJECT_FUNC_NOT_SUPPORTED;
return -1;
}
static int
spdk_scsi_lun_reset(struct spdk_scsi_task *mtask, struct spdk_scsi_lun *lun)
{
if (!lun) {
/* LUN does not exist */
mtask->response = SPDK_SCSI_TASK_MGMT_RESP_INVALID_LUN;
spdk_scsi_lun_complete_mgmt_task(NULL, mtask);
return -1;
}
spdk_bdev_scsi_reset(lun->bdev, mtask);
return 0;
}
int 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) enum spdk_scsi_task_func func)
{ {
int rc;
if (!task) { if (!task) {
return -1; return -1;
} }
if (!task->lun) {
/* LUN does not exist */
task->response = SPDK_SCSI_TASK_MGMT_RESP_INVALID_LUN;
spdk_scsi_lun_complete_mgmt_task(NULL, task);
return -1;
}
switch (func) { switch (func) {
case SPDK_SCSI_TASK_FUNC_ABORT_TASK: case SPDK_SCSI_TASK_FUNC_ABORT_TASK:
rc = spdk_scsi_lun_abort_task(task, task->lun, task->response = SPDK_SCSI_TASK_MGMT_RESP_REJECT_FUNC_NOT_SUPPORTED;
task->initiator_port, SPDK_ERRLOG("ABORT_TASK failed\n");
task->abort_id);
if (rc < 0) {
SPDK_ERRLOG("ABORT_TASK failed\n");
}
break; break;
case SPDK_SCSI_TASK_FUNC_ABORT_TASK_SET: case SPDK_SCSI_TASK_FUNC_ABORT_TASK_SET:
rc = spdk_scsi_lun_abort_all(task, task->lun, task->response = SPDK_SCSI_TASK_MGMT_RESP_REJECT_FUNC_NOT_SUPPORTED;
task->initiator_port); SPDK_ERRLOG("ABORT_TASK_SET failed\n");
if (rc < 0) {
SPDK_ERRLOG("ABORT_TASK_SET failed\n");
}
break; break;
case SPDK_SCSI_TASK_FUNC_LUN_RESET: case SPDK_SCSI_TASK_FUNC_LUN_RESET:
rc = spdk_scsi_lun_reset(task, task->lun); spdk_bdev_scsi_reset(task->lun->bdev, task);
if (rc < 0) { return 0;
SPDK_ERRLOG("LUN_RESET failed\n");
}
return rc;
default: default:
SPDK_ERRLOG("Unknown Task Management Function!\n"); SPDK_ERRLOG("Unknown Task Management Function!\n");
@ -178,13 +127,12 @@ spdk_scsi_lun_task_mgmt_execute(struct spdk_scsi_task *task,
* the task as being unsupported. * the task as being unsupported.
*/ */
task->response = SPDK_SCSI_TASK_MGMT_RESP_REJECT_FUNC_NOT_SUPPORTED; task->response = SPDK_SCSI_TASK_MGMT_RESP_REJECT_FUNC_NOT_SUPPORTED;
rc = -1;
break; break;
} }
spdk_scsi_lun_complete_mgmt_task(task->lun, task); spdk_scsi_lun_complete_mgmt_task(task->lun, task);
return rc; return -1;
} }
void void