iscsi: Use TAILQ_FOREACH_SAFE instead of TAILQ_EMPTY + FIRST

This will simplify remove operation a little.

Besides a few unnecessary blank lines are deleted.

Change-Id: Ifd312e5a94ba0668d884dd5baf1ef1f2ebd4417c
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/414562
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Shuhei Matsumoto 2018-06-11 13:43:39 +09:00 committed by Jim Harris
parent 03a52d0d32
commit 919252ce5e

View File

@ -359,11 +359,10 @@ spdk_iscsi_conn_free_pdu(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pd
static int spdk_iscsi_conn_free_tasks(struct spdk_iscsi_conn *conn) static int spdk_iscsi_conn_free_tasks(struct spdk_iscsi_conn *conn)
{ {
struct spdk_iscsi_pdu *pdu; struct spdk_iscsi_pdu *pdu, *tmp_pdu;
struct spdk_iscsi_task *iscsi_task; struct spdk_iscsi_task *iscsi_task, *tmp_iscsi_task;
while (!TAILQ_EMPTY(&conn->write_pdu_list)) { TAILQ_FOREACH_SAFE(pdu, &conn->write_pdu_list, tailq, tmp_pdu) {
pdu = TAILQ_FIRST(&conn->write_pdu_list);
TAILQ_REMOVE(&conn->write_pdu_list, pdu, tailq); TAILQ_REMOVE(&conn->write_pdu_list, pdu, tailq);
if (pdu->task) { if (pdu->task) {
spdk_iscsi_task_put(pdu->task); spdk_iscsi_task_put(pdu->task);
@ -371,8 +370,7 @@ static int spdk_iscsi_conn_free_tasks(struct spdk_iscsi_conn *conn)
spdk_put_pdu(pdu); spdk_put_pdu(pdu);
} }
while (!TAILQ_EMPTY(&conn->snack_pdu_list)) { TAILQ_FOREACH_SAFE(pdu, &conn->snack_pdu_list, tailq, tmp_pdu) {
pdu = TAILQ_FIRST(&conn->snack_pdu_list);
TAILQ_REMOVE(&conn->snack_pdu_list, pdu, tailq); TAILQ_REMOVE(&conn->snack_pdu_list, pdu, tailq);
if (pdu->task) { if (pdu->task) {
spdk_iscsi_task_put(pdu->task); spdk_iscsi_task_put(pdu->task);
@ -380,8 +378,7 @@ static int spdk_iscsi_conn_free_tasks(struct spdk_iscsi_conn *conn)
spdk_put_pdu(pdu); spdk_put_pdu(pdu);
} }
while (!TAILQ_EMPTY(&conn->queued_datain_tasks)) { TAILQ_FOREACH_SAFE(iscsi_task, &conn->queued_datain_tasks, link, tmp_iscsi_task) {
iscsi_task = TAILQ_FIRST(&conn->queued_datain_tasks);
TAILQ_REMOVE(&conn->queued_datain_tasks, iscsi_task, link); TAILQ_REMOVE(&conn->queued_datain_tasks, iscsi_task, link);
pdu = iscsi_task->pdu; pdu = iscsi_task->pdu;
spdk_iscsi_task_put(iscsi_task); spdk_iscsi_task_put(iscsi_task);
@ -393,12 +390,10 @@ static int spdk_iscsi_conn_free_tasks(struct spdk_iscsi_conn *conn)
} }
return 0; return 0;
} }
static void spdk_iscsi_conn_free(struct spdk_iscsi_conn *conn) static void spdk_iscsi_conn_free(struct spdk_iscsi_conn *conn)
{ {
if (conn == NULL) { if (conn == NULL) {
return; return;
} }
@ -463,7 +458,6 @@ static void spdk_iscsi_remove_conn(struct spdk_iscsi_conn *conn)
spdk_free_sess(sess); spdk_free_sess(sess);
} }
SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "cleanup free conn\n"); SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "cleanup free conn\n");
spdk_iscsi_conn_free(conn); spdk_iscsi_conn_free(conn);
} }
@ -767,15 +761,14 @@ static void
process_completed_read_subtask_list(struct spdk_iscsi_conn *conn, process_completed_read_subtask_list(struct spdk_iscsi_conn *conn,
struct spdk_iscsi_task *primary) struct spdk_iscsi_task *primary)
{ {
struct spdk_iscsi_task *tmp; struct spdk_iscsi_task *subtask, *tmp;
while (!TAILQ_EMPTY(&primary->subtask_list)) { TAILQ_FOREACH_SAFE(subtask, &primary->subtask_list, subtask_link, tmp) {
tmp = TAILQ_FIRST(&primary->subtask_list); if (subtask->scsi.offset == primary->bytes_completed) {
if (tmp->scsi.offset == primary->bytes_completed) { TAILQ_REMOVE(&primary->subtask_list, subtask, subtask_link);
TAILQ_REMOVE(&primary->subtask_list, tmp, subtask_link); primary->bytes_completed += subtask->scsi.length;
primary->bytes_completed += tmp->scsi.length; spdk_iscsi_task_response(conn, subtask);
spdk_iscsi_task_response(conn, tmp); spdk_iscsi_task_put(subtask);
spdk_iscsi_task_put(tmp);
} else { } else {
break; break;
} }
@ -788,7 +781,6 @@ process_read_task_completion(struct spdk_iscsi_conn *conn,
struct spdk_iscsi_task *primary) struct spdk_iscsi_task *primary)
{ {
struct spdk_iscsi_task *tmp; struct spdk_iscsi_task *tmp;
bool flag = false;
if (task->scsi.status != SPDK_SCSI_STATUS_GOOD) { if (task->scsi.status != SPDK_SCSI_STATUS_GOOD) {
TAILQ_FOREACH(tmp, &primary->subtask_list, subtask_link) { TAILQ_FOREACH(tmp, &primary->subtask_list, subtask_link) {
@ -801,13 +793,11 @@ process_read_task_completion(struct spdk_iscsi_conn *conn,
TAILQ_FOREACH(tmp, &primary->subtask_list, subtask_link) { TAILQ_FOREACH(tmp, &primary->subtask_list, subtask_link) {
if (task->scsi.offset < tmp->scsi.offset) { if (task->scsi.offset < tmp->scsi.offset) {
TAILQ_INSERT_BEFORE(tmp, task, subtask_link); TAILQ_INSERT_BEFORE(tmp, task, subtask_link);
flag = true; return;
break;
} }
} }
if (!flag) {
TAILQ_INSERT_TAIL(&primary->subtask_list, task, subtask_link); TAILQ_INSERT_TAIL(&primary->subtask_list, task, subtask_link);
}
return; return;
} }