Commit 2144f0b4 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

lib/scsi: Separate pending task and outstanding (submitted) task into different functions



This is a preparation to the following patches to optimize task
submission and remove the spdk_prefix from internal or private
functions.

To avoid using double underscores as the prefix of the function name,
separate pending task check and outstanding task check into
different functions.

Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ieda54507bf4c781b60fa05d03cd32ca25948e430
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1826


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 30e42bce
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -64,8 +64,7 @@ scsi_lun_complete_mgmt_task(struct spdk_scsi_lun *lun, struct spdk_scsi_task *ta
static bool
scsi_lun_has_pending_mgmt_tasks(const struct spdk_scsi_lun *lun)
{
	return !TAILQ_EMPTY(&lun->pending_mgmt_tasks) ||
	       !TAILQ_EMPTY(&lun->mgmt_tasks);
	return !TAILQ_EMPTY(&lun->pending_mgmt_tasks);
}

static bool
@@ -74,16 +73,14 @@ scsi_lun_has_outstanding_mgmt_tasks(const struct spdk_scsi_lun *lun)
	return !TAILQ_EMPTY(&lun->mgmt_tasks);
}

/* This check includes both pending and submitted (outstanding) tasks. */
static bool
scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun)
{
	return !TAILQ_EMPTY(&lun->pending_tasks) ||
	       !TAILQ_EMPTY(&lun->tasks);
	return !TAILQ_EMPTY(&lun->pending_tasks);
}

static bool
scsi_lun_has_outstanding_tasks(struct spdk_scsi_lun *lun)
scsi_lun_has_outstanding_tasks(const struct spdk_scsi_lun *lun)
{
	return !TAILQ_EMPTY(&lun->tasks);
}
@@ -242,7 +239,8 @@ scsi_lun_execute_tasks(struct spdk_scsi_lun *lun)
void
spdk_scsi_lun_execute_tasks(struct spdk_scsi_lun *lun)
{
	if (scsi_lun_has_pending_mgmt_tasks(lun)) {
	if (scsi_lun_has_pending_mgmt_tasks(lun) ||
	    scsi_lun_has_outstanding_mgmt_tasks(lun)) {
		/* Pending IO tasks will wait for completion of existing mgmt tasks.
		 */
		return;
@@ -550,7 +548,8 @@ spdk_scsi_lun_has_pending_mgmt_tasks(const struct spdk_scsi_lun *lun,
	struct spdk_scsi_task *task;

	if (initiator_port == NULL) {
		return scsi_lun_has_pending_mgmt_tasks(lun);
		return scsi_lun_has_pending_mgmt_tasks(lun) ||
		       scsi_lun_has_outstanding_mgmt_tasks(lun);
	}

	TAILQ_FOREACH(task, &lun->pending_mgmt_tasks, scsi_link) {
@@ -567,7 +566,7 @@ spdk_scsi_lun_has_pending_mgmt_tasks(const struct spdk_scsi_lun *lun,

	return false;
}

/* This check includes both pending and submitted (outstanding) tasks. */
bool
spdk_scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun,
				const struct spdk_scsi_port *initiator_port)
@@ -575,7 +574,8 @@ spdk_scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun,
	struct spdk_scsi_task *task;

	if (initiator_port == NULL) {
		return scsi_lun_has_pending_tasks(lun);
		return scsi_lun_has_pending_tasks(lun) ||
		       scsi_lun_has_outstanding_tasks(lun);
	}

	TAILQ_FOREACH(task, &lun->pending_tasks, scsi_link) {
+3 −2
Original line number Diff line number Diff line
@@ -615,7 +615,7 @@ lun_check_pending_tasks_only_for_specific_initiator(void)
	TAILQ_INSERT_TAIL(&lun->tasks, &task1, scsi_link);
	TAILQ_INSERT_TAIL(&lun->tasks, &task2, scsi_link);
	CU_ASSERT(scsi_lun_has_outstanding_tasks(lun) == true);
	CU_ASSERT(scsi_lun_has_pending_tasks(lun) == true);
	CU_ASSERT(scsi_lun_has_pending_tasks(lun) == false);
	CU_ASSERT(spdk_scsi_lun_has_pending_tasks(lun, NULL) == true);
	CU_ASSERT(spdk_scsi_lun_has_pending_tasks(lun, &initiator_port1) == true);
	CU_ASSERT(spdk_scsi_lun_has_pending_tasks(lun, &initiator_port2) == true);
@@ -640,7 +640,8 @@ lun_check_pending_tasks_only_for_specific_initiator(void)

	TAILQ_INSERT_TAIL(&lun->mgmt_tasks, &task1, scsi_link);
	TAILQ_INSERT_TAIL(&lun->mgmt_tasks, &task2, scsi_link);
	CU_ASSERT(scsi_lun_has_pending_mgmt_tasks(lun) == true);
	CU_ASSERT(scsi_lun_has_outstanding_mgmt_tasks(lun) == true);
	CU_ASSERT(scsi_lun_has_pending_mgmt_tasks(lun) == false);
	CU_ASSERT(spdk_scsi_lun_has_pending_mgmt_tasks(lun, NULL) == true);
	CU_ASSERT(spdk_scsi_lun_has_pending_mgmt_tasks(lun, &initiator_port1) == true);
	CU_ASSERT(spdk_scsi_lun_has_pending_mgmt_tasks(lun, &initiator_port2) == true);