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:
parent
30e42bcecf
commit
2144f0b4c3
@ -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) {
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user