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
|
static bool
|
||||||
scsi_lun_has_pending_mgmt_tasks(const struct spdk_scsi_lun *lun)
|
scsi_lun_has_pending_mgmt_tasks(const struct spdk_scsi_lun *lun)
|
||||||
{
|
{
|
||||||
return !TAILQ_EMPTY(&lun->pending_mgmt_tasks) ||
|
return !TAILQ_EMPTY(&lun->pending_mgmt_tasks);
|
||||||
!TAILQ_EMPTY(&lun->mgmt_tasks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
@ -74,16 +73,14 @@ scsi_lun_has_outstanding_mgmt_tasks(const struct spdk_scsi_lun *lun)
|
|||||||
return !TAILQ_EMPTY(&lun->mgmt_tasks);
|
return !TAILQ_EMPTY(&lun->mgmt_tasks);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This check includes both pending and submitted (outstanding) tasks. */
|
|
||||||
static bool
|
static bool
|
||||||
scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun)
|
scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun)
|
||||||
{
|
{
|
||||||
return !TAILQ_EMPTY(&lun->pending_tasks) ||
|
return !TAILQ_EMPTY(&lun->pending_tasks);
|
||||||
!TAILQ_EMPTY(&lun->tasks);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
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);
|
return !TAILQ_EMPTY(&lun->tasks);
|
||||||
}
|
}
|
||||||
@ -242,7 +239,8 @@ scsi_lun_execute_tasks(struct spdk_scsi_lun *lun)
|
|||||||
void
|
void
|
||||||
spdk_scsi_lun_execute_tasks(struct spdk_scsi_lun *lun)
|
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.
|
/* Pending IO tasks will wait for completion of existing mgmt tasks.
|
||||||
*/
|
*/
|
||||||
return;
|
return;
|
||||||
@ -550,7 +548,8 @@ spdk_scsi_lun_has_pending_mgmt_tasks(const struct spdk_scsi_lun *lun,
|
|||||||
struct spdk_scsi_task *task;
|
struct spdk_scsi_task *task;
|
||||||
|
|
||||||
if (initiator_port == NULL) {
|
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) {
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
/* This check includes both pending and submitted (outstanding) tasks. */
|
||||||
bool
|
bool
|
||||||
spdk_scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun,
|
spdk_scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun,
|
||||||
const struct spdk_scsi_port *initiator_port)
|
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;
|
struct spdk_scsi_task *task;
|
||||||
|
|
||||||
if (initiator_port == NULL) {
|
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) {
|
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, &task1, scsi_link);
|
||||||
TAILQ_INSERT_TAIL(&lun->tasks, &task2, scsi_link);
|
TAILQ_INSERT_TAIL(&lun->tasks, &task2, scsi_link);
|
||||||
CU_ASSERT(scsi_lun_has_outstanding_tasks(lun) == true);
|
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, NULL) == true);
|
||||||
CU_ASSERT(spdk_scsi_lun_has_pending_tasks(lun, &initiator_port1) == 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);
|
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, &task1, scsi_link);
|
||||||
TAILQ_INSERT_TAIL(&lun->mgmt_tasks, &task2, 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, 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_port1) == true);
|
||||||
CU_ASSERT(spdk_scsi_lun_has_pending_mgmt_tasks(lun, &initiator_port2) == true);
|
CU_ASSERT(spdk_scsi_lun_has_pending_mgmt_tasks(lun, &initiator_port2) == true);
|
||||||
|
Loading…
Reference in New Issue
Block a user