On 07/14/2010 08:23 PM, Mike Christie wrote:
> On 07/14/2010 10:49 AM, Boaz Harrosh wrote:
>> On 07/14/2010 05:52 PM, Mike Christie wrote:
>>> On 07/14/2010 05:30 AM, HIMANSHU wrote:
>>>> How can we know error status of iscsiadm commands like
>>>> discovery,login,logout.
>>>> I think,all of them directly returns corresponding success/failure
>>>> messages.
>>>> so mostly I can just fire the commands without checking any error
>>>> codes after it?
>>> If you run
>>> iscsiadm -m node .... -l
>>> iscsiadm should return a error code like other programs. If you wanted
>>> to see it you could do
>>> iscsiadm -m node .... -l
>>> echo $?
>> Speaking of which. When I want to completely run from a script file
>> I currently have two ugly loops
>> after starting the iscsi service and before I can iscsiadm I must do:
>> start_iscsi_intiator()
>> {
>>      if ! service $ISCSI status; then
>>              service iscsi start ;
>>              until cat /sys/class/iscsi_transport/tcp/handle 2>/dev/null ; do
>>                      sleep 1;
>>              done
>>      fi
>> }
>> Effectively wait for the /sys/class/iscsi_transport/tcp/handle file to appear
>> And after login but before I can actually start banging on my scsi device I 
>> need:
>> login_iscsi()
>> {
>>      echo login into: $IP_ISCSI
>>      $iscsiadm -m discovery -t sendtargets -p $IP_ISCSI --login;
>>      until ls $DEV_ISCSI 2>/dev/null; do sleep 1; done
>> }
>> Effectively wait for the device to appear. This one is particularly nasty
>> because it assumes that I know what $DEV_ISCSI will be.
>> Would we want to add a --wait-server and --wait switches to iscsiadm
>> --wait-server        - will wait for the iscsi-kernel-modules and iscsid 
>> server
>>                    to stabilize. (until some timeout)
> Not sure. When service iscsi start is run, it will eventually load the 
> modules. The script does not return until modprobe has returned and 
> modprobe does not return until the kernel module module_init function 
> and those do not return until it has run the sysfs functions that create 
> the files you are waiting on. So are you saying that once module_init 
> has completed the files are not accessible right away?

OK, so I just got lucky here probably, since I'm doing a sleep 1;
so the first iteration fails then a 1 sec wait is good enough. I think
what happens is that the iscsid server is not yet ready for communication
with iscsiadm. I'll remove the wait and run with debug-on see what actually

>> --wait               - with a --login will wait (with timeout) until the 
>> loggedin
>>                    device is available.
> For this one, the --login command returns once the scsi kernel scan is 
> completed (the tools just do write(/sys/class/scsi_host/hostX/scan). So 
> the kernel inquiries and report luns and scsi_device struct stuff is 
> done, and the kernel has sent hotplug events to notify userspace. So the 
> problem you are hitting is that things like udev have not handled the 
> hotplug event and created the /dev links right?
> We could just add a wait in iscsiadm or the iscsi init scripts for this. 
> It would basically do
> iscsiadm -m ... --login
> iscsiadm -m session -P 3 | grep some_string_to_get_devices
>       wait on each device

Yes something like this, which is what I do. Perhaps just give
an example script with the recommended way to do it. (or add the --wait)

init scripts with auto-login work fine. It's only if I run the complete
lot from script as above .ie 

Then I need these two waits above. otherwise it fails.

It's not urgent just if you can think about it a bit

You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to open-is...@googlegroups.com.
To unsubscribe from this group, send email to 
For more options, visit this group at 

Reply via email to