* Target opensolaris (192.168.1.1) :
# uname -a
SunOS stocklog-stock 5.11 snv_72 i86pc i386 i86pc
# iscsitadm list target
Target: stocklog/stock1
iSCSI Name: iqn.1986-03.com.sun:02:12715be9-b96d-cc27-
f885-80d9f648d431
Connections: 0
Target: stocklog/stock2
iSCSI Name: iqn.1986-03.com.sun:02:2c822f74-c44c-6a96-bbea-
a9d840667a42
Connections: 0
The iscsi targets are ZFS volumes with "shareiscsi = on".
* Initiator debian/etch (192.168.1.2) :
# uname -a
Linux stocklog 2.6.18-5-686 #1 SMP Wed Sep 26 17:54:59 UTC 2007 i686
GNU/Linux
# /sbin/iscsid -v
iscsid version 2.0-865
# cat /sys/module/scsi_transport_iscsi/version
1.1-646
The kernel version is the stock debian/etch kernel
When trying to login to the target, the debian kernel oops, here is
the situation :
debian# modprobe ib_iser
iscsi: registered transport (iser)
# modprobe iscsi_tcp
iscsi: registered transport (tcp)
debian# /sbin/iscsid -c /etc/iscsid.conf -i /etc/initiatorname.iscsi -
f -d 3
iscsid: transport class version 1.1-646. iscsid version 2.0-865
iscsid: InitiatorName=iqn.1993-08.org.debian:01.bd32b7fb4db4
iscsid: InitiatorAlias=stocklog
iscsid: iscsid_exit
debian# /sbin/iscsiadm -m discovery -t st -p 192.168.1.1
192.168.1.1:3260,1 iqn.1986-03.com.sun:02:2c822f74-c44c-6a96-bbea-
a9d840667a42
192.168.1.1:3260,1 iqn.1986-03.com.sun:02:12715be9-b96d-cc27-
f885-80d9f648d431
debian# /sbin/iscsiadm -m node -T iqn.1986-03.com.sun:02:2c822f74-
c44c-6a96-bbea-a9d840667a42 -p 192.168.1.1 -l
Login session [iface: default, target: iqn.1986-03.com.sun:02:2c822f74-
c44c-6a96-bbea-a9d840667a42, portal: 192.168.1.1,3260]
iscsid: Allocted session 0x8079898
iscsid: connecting to 192.168.1.1:3260
iscsid: connected local port 36440 to 192.168.1.1:3260
iscsid: deleting a scheduled/waiting thread!
And then the kernel oops :
kernel BUG at drivers/scsi/iscsi_tcp.c:947!
invalid opcode: 0000 [#1]
SMP
Modules linked in: iscsi_tcp ib_iser libiscsi rdma_cm ib_addr ib_cm
ib_sa ib_man
CPU: 0
EIP: 0060:[<f8b407de>] Not tainted VLI
EFLAGS: 00010202 (2.6.18-5-686 #1)
EIP is at iscsi_tcp_data_recv+0x103a/0x1164 [iscsi_tcp]
eax: 0000016c ebx: d4f83840 ecx: f7af46dc edx: d4f83840
esi: d4f83840 edi: d4f83840 ebp: d4f83840 esp: dc2a5d48
ds: 007b es: 007b ss: 0068
Process udevd (pid: 15362, ti=dc2a4000 task=f7b01000 task.ti=dc2a4000)
Stack: ea712480 dc2a5dec d7c3c0a4 d7c3c080 00000000 f7af417c d4f83840
da3c8380
7fffffff c022238e f6b49654 f6b49668 f7860edc c19f8280 c02473d2
f6b49640
c19f8280 f7860edc f7c58500 0000016b 00000000 c0246c4e 00000000
c19f8280
Call Trace:
[<c022238e>] sock_alloc_send_skb+0x68/0x198
[<c02473d2>] ip_output+0x1c3/0x1fd
[<c0246c4e>] ip_queue_xmit+0x371/0x3b3
[<c02590f7>] tcp_v4_send_check+0x72/0xb8
[<c024c638>] tcp_read_sock+0x5e/0x163
[<f8b3f7a4>] iscsi_tcp_data_recv+0x0/0x1164 [iscsi_tcp]
[<f8b40d10>] iscsi_tcp_data_ready+0x32/0x3f [iscsi_tcp]
[<c02536c8>] tcp_rcv_established+0x523/0x7b7
[<c025883c>] tcp_v4_do_rcv+0x25/0x2b4
[<c025ac69>] tcp_v4_rcv+0x8d2/0x925
[<c0242ca4>] ip_local_deliver+0x15b/0x207
[<c0242b0f>] ip_rcv+0x3e3/0x41d
[<c0228f60>] netif_receive_skb+0x2c5/0x33d
[<f887cf6e>] tg3_poll+0x5c6/0x816 [tg3]
[<c022a923>] net_rx_action+0x92/0x17f
[<c0121838>] __do_softirq+0x5a/0xbb
[<c01218cf>] do_softirq+0x36/0x3a
[<c01050ea>] do_IRQ+0x48/0x52
[<c01036b6>] common_interrupt+0x1a/0x20
Code: 00 00 00 03 00 00 00 eb 0e 8b 7c 24 18 c7 87 88 00 00 00 00 00
00 00 8b 5
EIP: [<f8b407de>] iscsi_tcp_data_recv+0x103a/0x1164 [iscsi_tcp] SS:ESP
0068:dc28
<0>Kernel panic - not syncing: Fatal exception in interrupt
The kernel panic message was obtained by a serial console on the
debian server.
I am not familiar with the the debian kernel and what they backport, but
it probably does not have a fix for open solaris that was done after
2.6.18 was out.
I would use the kernel modules from open-iscsi-2.0-865.13.tar.gz if you
can. It has a fix for open solaris where the iscsi_tcp module was not
handling data and padding coming in two different skbs.
And from the kernel :
ib_iser: disagrees about version of symbol iscsi_conn_setup
ib_iser: Unknown symbol iscsi_conn_setup
ib_iser: disagrees about version of symbol iscsi_verify_itt
ib_iser: Unknown symbol iscsi_verify_itt
ib_iser: disagrees about version of symbol
iscsi_session_recovery_timedout
ib_iser: Unknown symbol iscsi_session_recovery_timedout
ib_iser: disagrees about version of symbol iscsi_conn_bind
ib_iser: Unknown symbol iscsi_conn_bind
ib_iser: disagrees about version of symbol iscsi_session_setup
ib_iser: Unknown symbol iscsi_session_setup
ib_iser: disagrees about version of symbol class_to_transport_session
ib_iser: Unknown symbol class_to_transport_session
ib_iser: disagrees about version of symbol iscsi_conn_failure
ib_iser: Unknown symbol iscsi_conn_failure
ib_iser: disagrees about version of symbol iscsi_complete_pdu
ib_iser: Unknown symbol iscsi_complete_pdu
ib_iser: disagrees about version of symbol iscsi_register_transport
ib_iser: Unknown symbol iscsi_register_transport
ib_iser: disagrees about version of symbol iscsi_set_param
ib_iser: Unknown symbol iscsi_set_param
ib_iser: disagrees about version of symbol iscsi_conn_get_param
ib_iser: Unknown symbol iscsi_conn_get_param
ib_iser: disagrees about version of symbol iscsi_conn_teardown
ib_iser: Unknown symbol iscsi_conn_teardown
ib_iser: disagrees about version of symbol iscsi_session_get_param
ib_iser: Unknown symbol iscsi_session_get_param
ib_iser: disagrees about version of symbol iscsi_conn_send_pdu
ib_iser: Unknown symbol iscsi_conn_send_pdu
ib_iser: disagrees about version of symbol iscsi_conn_start
ib_iser: Unknown symbol iscsi_conn_start
ib_iser: disagrees about version of symbol
iscsi_prep_unsolicit_data_pdu
ib_iser: Unknown symbol iscsi_prep_unsolicit_data_pdu
ib_iser: disagrees about version of symbol iscsi_session_teardown
ib_iser: Unknown symbol iscsi_session_teardown
ib_iser: disagrees about version of symbol iscsi_unregister_transport
ib_iser: Unknown symbol iscsi_unregister_transport
ib_iser: disagrees about version of symbol iscsi_conn_stop
ib_iser: Unknown symbol iscsi_conn_stop
So how should I do ?
The problem is that ib_iser was compiled against other open-iscsi
symbols (probably the open-iscsi version that came with Debian). Now,
you're using another version of open-iscsi, and ib_iser cannot be
loaded. If you don't need iSER, the quickest solution is to remove it
from the init script (i.e. /etc/init.d/iscsi or whatever it is). If you
need iSER, I can try to help you in a different way.
Erez
On Oct 16, 11:03 am, Erez Zilber <er...@Voltaire.COM> wrote:
Maybe the good question is then what is ib_iser used for ? ::)
Stefan