Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
soc:2009:pravin:journal:bkodebianiscsi [2009/07/18 11:29]
less1
soc:2009:pravin:journal:bkodebianiscsi [2009/09/25 19:37] (current)
less1
Line 179: Line 179:
 So, the tools do work. but may be they are able to use other files, tools and modules which are not present in initrd.\\ So, the tools do work. but may be they are able to use other files, tools and modules which are not present in initrd.\\
 How to find those dependencies?​ How to find those dependencies?​
 +
 +===== Debugging v2 =====
 +Finally, added the ''​strace''​ to initramfs, and now trying find what is the problem because of which iscsiadm is dying\\
 +<​code>​
 +socket(PF_FILE,​ SOCK_STREAM,​ 0)         = 3
 +connect(3, {sa_family=AF_FILE,​ path=@"​ISCSIADM_ABSTRACT_NAMESPACE"​...},​ 110) = 0
 +write(3, "​\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"​...,​ 5244) = -1 EPIPE (Broken pipe)
 +</​code>​
 +This is what killing the iscsiadm imatuarly.
 +
 +==== Checking the code of open-iscsi ====
 +With help of stephana, the likely problem is located at following location
 +<​code>​
 +stefanha: http://​git.kernel.org/?​p=linux/​kernel/​git/​mnc/​open-iscsi.git;​a=blob;​f=usr/​mgmt_ipc.c;​h=e784bcac019a84522e62beff1b49b1ca62e37f5a;​hb=HEAD
 +(07/19/2009 04:34:21 PM) stefanha: less1: Perhaps you're hitting this:
 +(07/19/2009 04:34:27 PM) stefanha: http://​git.kernel.org/?​p=linux/​kernel/​git/​mnc/​open-iscsi.git;​a=blob;​f=usr/​mgmt_ipc.c;​h=e784bcac019a84522e62beff1b49b1ca62e37f5a;​hb=HEAD#​l549
 +(07/19/2009 04:34:31 PM) stefanha: if (!mgmt_peeruser(fd,​ user) || strncmp(user,​ "​root",​ PEERUSER_MAX)) {
 +(07/19/2009 04:34:43 PM) stefanha: write(2) will return EPIPE if the UNIX domain socket was closed.
 +(07/19/2009 04:35:17 PM) stefanha: mgmt_peeruser() is defined here: http://​git.kernel.org/?​p=linux/​kernel/​git/​mnc/​open-iscsi.git;​a=blob;​f=usr/​mgmt_ipc.c;​h=e784bcac019a84522e62beff1b49b1ca62e37f5a;​hb=HEAD#​l342
 +(07/19/2009 04:38:15 PM) less1: stefanha: is it checking if I have root privilages? I am not sure if I understand which peeruser credential is it refering.
 +(07/19/2009 04:40:08 PM) stefanha: Your user name must be "​root"​.
 +(07/19/2009 04:40:25 PM) stefanha: Otherwise iscsid will not accept commands from the UNIX domain socket.
 +</​code>​
 +=== Possible solution : hacking open-iscsi ===
 +  ​
 +modified the ''​iscsiadm''​ code so that, it will not fail when username is not ''​root''​.\\
 +With is modification,​ the discovery part is working, but now there is error at login part. Following is the error.
 +<​code>​
 +connection2:​0:​ Could not create connection due to crc32c loading error. ​ Make sure the crc32c module is build as module into the kernel.
 +</​code>​
 +The first attempt will be to download the kernel module from Live CD of debian after booting it from CD.\\ 
 +--- Doing it
 +
 +===== Working Solution =====
 +There was need for two extra kernel modules
 +  - libcrc32c.ko
 +  - crc32c.ko
 +Fetched these modules from live-CD and added them.\\
 +There as also need for small sleep after ''​iscsiadm --login''​ as ''/​dev/​sda''​ was taking little time to appear.\\
 +This was handled by adding ''​sleep 2''​\\
 +
 +Two new parameters were introduced
 +  - ''​iscsifs=<​IP:​PORT>'' ​ iscsi server IP and port number
 +  - ''​target=<​targetname>''​ the iscsi target name of the disk (entire name is not needed, some part which can uniquely identify apart from other disks exported at same machine)
 +
 +===== Remote ISCSI =====
 +
 +Following are the errors that I get when connecting to remote iscsi
 +<​code>​
 +Connection1:​0:​ ping timeout of 5 secs expired, last rx 307737, last ping 308987, now 310237
 +Connection1:​0:​ detected conn error (1011)
 +SQUASHFS error : Unable to read page, block 0x1b392
 +Bus error
 +</​code>​
 +Most of these errors are related to timing, and I believe that 
 +these errors are there because of delays in accessing required data.
 +
 +===== Target behaviour =====
 +sometimes, you may get following error when logging in with iscsiadm
 +<​code> ​
 +iscsiadm -m node --targetname "​${targetname}"​ --portal "​${ISCSIFS}"​ --login ​
 +records not found!.
 +</​code>​
 +this is because the ${ISCSIFS} is not IP but dnsname.
 +Dnsname may work with ''​iscsiadm -m discovery -t st -p "​${ISCSIFS}"​ ''​
 +but it may verywell fail when same dnsname is given to login.
 +[[http://​groups.google.com/​group/​open-iscsi/​browse_thread/​thread/​c556508505ecc461|mailing list discussion]]
 +
 +==== Solution ====
 +Dont use ''​--portal "​${ISCSIFS}"''​ option, use
 +<​code> ​
 +iscsiadm -m node --targetname "​${targetname}"​ --login ​
 +</​code>​

QR Code
QR Code soc:2009:pravin:journal:bkodebianiscsi (generated for current page)