Roman,
[...]
So, as a summary, it seems that the existing code mostly keeps sessions until:
- a conflict of N_Port_ID, N_Port_Name or N_Port handle detected;
- the session is in the middle of refresh/rescan and RSCN arrives;
- there's an explicit process or port logout from the session, i.e. PRLO, TPRLO, LOGO
- there's a new port or process login from the same session, i.e. PLOGI, PRLI;
- target is shut down;
- target port link is reset;
And if a session of an initiator is deleted when driver works in target mode, new session won't be established until a PLOGI and PRLI come from the initiator.
The assumption is used qlt_handle_cmd_for_atio() and qlt_handle_task_mgmt() to discard commands and TMFs from initiators that are not logged in.
thank you for this incredibly extensive response. I'll bookmark it, I guess it can serve as a reference for future qla2xxx work. I hope you didn't do all this work just for my little question.
Forgive me that I won't immediately try to review this document in detail. You've studied and understood this driver in much more depth than I probably ever will.
Thanks again, Martin
Thanks, Roman