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: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ieda54507bf4c781b60fa05d03cd32ca25948e430
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1826
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Shuhei Matsumoto 2020-04-14 01:41:30 +09:00 committed by Tomasz Zawadzki
parent 30e42bcecf
commit 2144f0b4c3
2 changed files with 13 additions and 12 deletions

View File

@ -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) {

View File

@ -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);