summaryrefslogtreecommitdiff
path: root/usr/io.c
diff options
context:
space:
mode:
authormnc <mnc@d7303112-9cec-0310-bdd2-e83a94d6c2b6>2006-04-27 22:46:37 +0000
committermnc <mnc@d7303112-9cec-0310-bdd2-e83a94d6c2b6>2006-04-27 22:46:37 +0000
commit7233036da02b5a42e6d33b11d244007040b7fe0f (patch)
tree259e51ce21d1a2cd7abc241d67a14fab8f5f89fb /usr/io.c
parent0b10f2f180a6da1b5c9b403fbbc098d9293bcb37 (diff)
downloadopen-iscsi-7233036da02b5a42e6d33b11d244007040b7fe0f.tar.gz
debugged by Ming and Rohan: for normal session logins we should be incrementing exp_statsn when successful. For connection reinstatement we should also be using the exp_statsn from the last connection
git-svn-id: svn://svn.berlios.de/open-iscsi@561 d7303112-9cec-0310-bdd2-e83a94d6c2b6
Diffstat (limited to 'usr/io.c')
-rw-r--r--usr/io.c148
1 files changed, 64 insertions, 84 deletions
diff --git a/usr/io.c b/usr/io.c
index 3044789..f7d5876 100644
--- a/usr/io.c
+++ b/usr/io.c
@@ -326,55 +326,43 @@ iscsi_io_send_pdu(iscsi_conn_t *conn, struct iscsi_hdr *hdr,
memset(&pad, 0, sizeof (pad));
memset(&vec, 0, sizeof (vec));
- if (log_level > 0) {
- switch (hdr->opcode & ISCSI_OPCODE_MASK) {
- case ISCSI_OP_LOGIN:{
- struct iscsi_login *login_hdr =
- (struct iscsi_login *) hdr;
-
- log_debug(4,
- "sending login PDU with current stage "
- "%d, next stage %d, transit 0x%x, isid"
- " 0x%02x%02x%02x%02x%02x%02x",
- ISCSI_LOGIN_CURRENT_STAGE(login_hdr->
- flags),
- ISCSI_LOGIN_NEXT_STAGE(login_hdr->
- flags),
- login_hdr->
- flags & ISCSI_FLAG_LOGIN_TRANSIT,
- login_hdr->isid[0], login_hdr->isid[1],
- login_hdr->isid[2], login_hdr->isid[3],
- login_hdr->isid[4],
- login_hdr->isid[5]);
- iscsi_log_text(hdr, data);
- break;
- }
- case ISCSI_OP_TEXT:{
- struct iscsi_text *text_hdr =
- (struct iscsi_text *) hdr;
-
- log_debug(4,
- "sending text pdu with CmdSN %x:",
- ntohl(text_hdr->cmdsn));
- iscsi_log_text(hdr, data);
- break;
- }
- case ISCSI_OP_NOOP_OUT:{
- struct iscsi_nopout *nopout_hdr =
- (struct iscsi_nopout *) hdr;
-
- log_debug(4,
- "sending Nop-out pdu with "
- "ttt %x, CmdSN %x:",
- ntohl(nopout_hdr->ttt),
- ntohl(nopout_hdr->cmdsn));
- iscsi_log_text(hdr, data);
- break;
- }
- default:
- log_debug(4, "sending pdu opcode 0x%x:", hdr->opcode);
- break;
- }
+ switch (hdr->opcode & ISCSI_OPCODE_MASK) {
+ case ISCSI_OP_LOGIN:{
+ struct iscsi_login *login_hdr = (struct iscsi_login *) hdr;
+
+ log_debug(4, "sending login PDU with current stage "
+ "%d, next stage %d, transit 0x%x, isid"
+ " 0x%02x%02x%02x%02x%02x%02x exp_statsn %u",
+ ISCSI_LOGIN_CURRENT_STAGE(login_hdr->flags),
+ ISCSI_LOGIN_NEXT_STAGE(login_hdr->flags),
+ login_hdr->flags & ISCSI_FLAG_LOGIN_TRANSIT,
+ login_hdr->isid[0], login_hdr->isid[1],
+ login_hdr->isid[2], login_hdr->isid[3],
+ login_hdr->isid[4], login_hdr->isid[5],
+ ntohl(login_hdr->exp_statsn));
+
+ iscsi_log_text(hdr, data);
+ break;
+ }
+ case ISCSI_OP_TEXT:{
+ struct iscsi_text *text_hdr = (struct iscsi_text *) hdr;
+
+ log_debug(4, "sending text pdu with CmdSN %x, exp_statsn %u",
+ ntohl(text_hdr->cmdsn), ntohl(text_hdr->cmdsn));
+ iscsi_log_text(hdr, data);
+ break;
+ }
+ case ISCSI_OP_NOOP_OUT:{
+ struct iscsi_nopout *nopout_hdr = (struct iscsi_nopout *) hdr;
+
+ log_debug(4, "sending Nop-out pdu with ttt %x, CmdSN %x:",
+ ntohl(nopout_hdr->ttt), ntohl(nopout_hdr->cmdsn));
+ iscsi_log_text(hdr, data);
+ break;
+ }
+ default:
+ log_debug(4, "sending pdu opcode 0x%x:", hdr->opcode);
+ break;
}
/* send the PDU header */
@@ -625,41 +613,33 @@ iscsi_io_recv_pdu(iscsi_conn_t *conn, struct iscsi_hdr *hdr,
}
}
- if (log_level > 0) {
- switch (hdr->opcode) {
- case ISCSI_OP_TEXT_RSP:
- log_debug(4,
- "finished reading text PDU, %u hdr, %u "
- "ah, %u data, %u pad",
- h_bytes, ahs_bytes, d_bytes, pad);
- iscsi_log_text(hdr, data);
- break;
- case ISCSI_OP_LOGIN_RSP:{
- struct iscsi_login_rsp *login_rsp =
- (struct iscsi_login_rsp *) hdr;
-
- log_debug(4,
- "finished reading login PDU, %u hdr, "
- "%u ah, %u data, %u pad",
- h_bytes, ahs_bytes, d_bytes, pad);
- log_debug(4,
- "login current stage %d, next stage "
- "%d, transit 0x%x",
- ISCSI_LOGIN_CURRENT_STAGE(login_rsp->
- flags),
- ISCSI_LOGIN_NEXT_STAGE(login_rsp->
- flags),
- login_rsp->
- flags & ISCSI_FLAG_LOGIN_TRANSIT);
- iscsi_log_text(hdr, data);
- break;
- }
- case ISCSI_OP_ASYNC_EVENT:
- /* FIXME: log the event info */
- break;
- default:
- break;
- }
+ switch (hdr->opcode) {
+ case ISCSI_OP_TEXT_RSP:
+ log_debug(4, "finished reading text PDU, %u hdr, %u "
+ "ah, %u data, %u pad",
+ h_bytes, ahs_bytes, d_bytes, pad);
+ iscsi_log_text(hdr, data);
+ break;
+ case ISCSI_OP_LOGIN_RSP:{
+ struct iscsi_login_rsp *login_rsp =
+ (struct iscsi_login_rsp *) hdr;
+
+ log_debug(4, "finished reading login PDU, %u hdr, "
+ "%u ah, %u data, %u pad",
+ h_bytes, ahs_bytes, d_bytes, pad);
+ log_debug(4, "login current stage %d, next stage "
+ "%d, transit 0x%x",
+ ISCSI_LOGIN_CURRENT_STAGE(login_rsp->flags),
+ ISCSI_LOGIN_NEXT_STAGE(login_rsp->flags),
+ login_rsp->flags & ISCSI_FLAG_LOGIN_TRANSIT);
+ iscsi_log_text(hdr, data);
+ break;
+ }
+ case ISCSI_OP_ASYNC_EVENT:
+ /* FIXME: log the event info */
+ break;
+ default:
+ break;
}
done: