Re: problems with scsi_transport_fc and qla2xxx

Andrew Vasquez
2006-03-06T21:28:38Z

On Mon, 06 Mar 2006, Maxim Kozover wrote:

> Unfortunately I don't have the directory /proc/scsi/qla2xxx.

The two stage discovery process has not been needed since FC transport
integration. Instead, the driver simply makes up-calls to signal
rport visiblity (add on PLOGI/PRLI; delete on LOGO/cable-pull/etc).

> However the target sees PRLI from the host again after reconnecting
> the cable between the initiator and the switch.
> Does it mean the rediscovering new devices on initiator side is
> already done?
>

Yes, after plugging the cable back in, the driver rediscovers ports:

Mar 3 01:07:22 multipath kernel: scsi(4): RSNN_NN exiting normally.
Mar 3 01:07:22 multipath kernel: scsi(4): GID_PT entry - nn 200000e08b079a69 pn 210000e08b079a69 portid=010700.
Mar 3 01:07:22 multipath kernel: scsi(4): GID_PT entry - nn 2000001738279c00 pn 1000001738279c11 portid=010200.
Mar 3 01:07:22 multipath kernel: scsi(4): device wrap (010200)

Initiates PLOGI/PRLI:

Mar 3 01:07:22 multipath kernel: scsi(4): Trying Fabric Login w/loop id 0x0081 for port 010200.

And upcall via fc_remote_port_add() is done.

Mar 3 01:07:22 multipath kernel: scsi(4): LOOP READY
Mar 3 01:07:22 multipath kernel: scsi(4): qla2x00_loop_resync - end

Firmware then notifies software that the port has logged out:

Mar 3 01:07:22 multipath kernel: scsi(4): Asynchronous PORT UPDATE ignored 0081/0007/7ee5.
Mar 3 01:07:22 multipath kernel: scsi(4:0:0): status_entry: Port Down pid=43, compl status=0x29, port state=0x4

A CDB also returns with a completion status of PORT_LOGGED_OUT. From
the driver's DPC routine (process-context), the upcall to
fc_remote_port_delete() is issued:

Driver attempts a relogin:

Mar 3 01:07:22 multipath kernel: scsi(4): Port login retry: 1000001738279c11, id = 0x0081 retry cnt=8
Mar 3 01:07:23 multipath kernel: scsi(4): fcport-0 - port retry count: 0 remaining
Mar 3 01:07:23 multipath kernel: scsi(4): qla2x00_port_login()
Mar 3 01:07:23 multipath kernel: scsi(4): Trying Fabric Login w/loop id 0x0081 for port 010200.

Relogin complete

Mar 3 01:07:23 multipath kernel: scsi(4): port login OK: logged in ID 0x81

Upcall to fc_remote_port_add() done.

Mar 3 01:07:23 multipath kernel: scsi(4): qla2x00_port_login - end
Mar 3 01:07:23 multipath kernel: scsi(4): Asynchronous PORT UPDATE ignored 0000/0006/0001.
Mar 3 01:07:23 multipath kernel: scsi(4): Asynchronous PORT UPDATE ignored 0000/0007/0001.
Mar 3 01:07:23 multipath kernel: scsi(4): Asynchronous PORT UPDATE ignored 0000/0004/0001.
Mar 3 01:07:24 multipath kernel: scsi(4): Asynchronous PORT UPDATE ignored 0081/0006/0001.

I also noticed that scsi_transport_fc.c::fc_user_scan() is not called
with the host_lock held... hmm.. could you try out the patch I sent
earlier and provide the results.

Also, could you send the "echo t > /proc/..." output after the cable
has been reinserted, but, before the 'echo "- - -" > /sys/class' scan
is initiated.

thanks,
av