iscsi endless conn error investigation
2016-09-12 15:21
260 查看
iscsi target removed without initiator logging out
symptom :
"detected conn error" error message from kernel
"conn 0 login rejected" error messages from iscsid
investigation:
From implementation point of view, the kernel iscsi driver noticed the loss of connection by means of a transport checking timer function - iscsi_check_transport_timeouts. It then sent out the event to iscsid through the ISCSI_NL_GRP_ISCSID multicast group.
iscsid received the event and tried to reopen the connection. But the session reopen failed because of the login failure and iscsid kept trying to reopen the session until the deletion of the iscsi session.
Kernel code path:
1. setup an iscsi connection
iscsi_sw_tcp_conn_create -> iscsi_tcp_conn_setup -> iscsi_conn_setup : sets up a transport_timer (iscsi_check_transport_timeouts)
2. ping to target timeout and send an event to iscsid
iscsi_check_transport_timeouts -> iscsi_conn_failure -> iscsi_conn_error_event -> iscsi_multicast_skb
Userspace code path:
1. receives the connection error event from kernel and tries to recover it the first time
krecv_pdu_begin -> ctldev_handle -> iscsi_sched_ev_context (async)-> session_conn_error -> __conn_error_handle -> session_conn_reopen
2. session connection reopen will eventually sent out login request to target portal group
session_conn_reopen -> iscsi_conn_connect (async)-> session_conn_poll -> iscsi_login_req
3. login response is received and the error is printed according to the status detail, then the error handling logic tries to reopen the session again, which causes the endless login retry, thus the error message.
iscsi_sched_ev_context (async)-> session_conn_recv_pdu -> iscsi_recv_login_rsp -> __check_iscsi_status_class: prints the error message
-> iscsi_login_eh -> session_conn_reopen
Spec:
ttps://tools.ietf.org/html/rfc7143#section-7.1.4.3 specifies. If the failed connection was the last or only connection in the session, a new connection establishment is mandatory.
symptom :
"detected conn error" error message from kernel
"conn 0 login rejected" error messages from iscsid
investigation:
From implementation point of view, the kernel iscsi driver noticed the loss of connection by means of a transport checking timer function - iscsi_check_transport_timeouts. It then sent out the event to iscsid through the ISCSI_NL_GRP_ISCSID multicast group.
iscsid received the event and tried to reopen the connection. But the session reopen failed because of the login failure and iscsid kept trying to reopen the session until the deletion of the iscsi session.
Kernel code path:
1. setup an iscsi connection
iscsi_sw_tcp_conn_create -> iscsi_tcp_conn_setup -> iscsi_conn_setup : sets up a transport_timer (iscsi_check_transport_timeouts)
2. ping to target timeout and send an event to iscsid
iscsi_check_transport_timeouts -> iscsi_conn_failure -> iscsi_conn_error_event -> iscsi_multicast_skb
Userspace code path:
1. receives the connection error event from kernel and tries to recover it the first time
krecv_pdu_begin -> ctldev_handle -> iscsi_sched_ev_context (async)-> session_conn_error -> __conn_error_handle -> session_conn_reopen
2. session connection reopen will eventually sent out login request to target portal group
session_conn_reopen -> iscsi_conn_connect (async)-> session_conn_poll -> iscsi_login_req
3. login response is received and the error is printed according to the status detail, then the error handling logic tries to reopen the session again, which causes the endless login retry, thus the error message.
iscsi_sched_ev_context (async)-> session_conn_recv_pdu -> iscsi_recv_login_rsp -> __check_iscsi_status_class: prints the error message
-> iscsi_login_eh -> session_conn_reopen
Spec:
ttps://tools.ietf.org/html/rfc7143#section-7.1.4.3 specifies. If the failed connection was the last or only connection in the session, a new connection establishment is mandatory.
相关文章推荐
- 第 5章 Jenkins – Maven Setup
- ubuntu设置DNS服务器 bind9
- Android HashMap循环遍历方式及其性能对比 (十一)
- C++ 读取文件/输入的方式总结
- java IO流读取保存图片文件
- 移动web适配之rem
- 网页设计中常用的19个Web安全字体
- 1060. 爱丁顿数(25)
- 利用servlet转发技术实现统计form表单中字母次数
- VisualStudio 2015 开启IIS Express可以调试X64项目
- sql server中批量插入与更新两种解决方案分享(存储过程)
- jQuery实现简单的tab标签页效果
- mongodb判空做统计的例子
- 作用域安全的构造函数以及js对象的创建步骤
- 初识AudioTrack
- leetCode练习(3)
- mysql 硬件环境优化
- 使用Eclipse开发Android报错:Project has no target set. Edit the project properties to set one.
- PHP html_entity_decode() 函数
- 单例模式