• A
    qla2xxx: Wait for all conflicts before ack'ing PLOGI · b7bd104e
    Alexei Potashnik 提交于
    Until now ack'ing of a new PLOGI has only been delayed if there
    was an existing session for the same WWN. Ack was released when
    the session deletion completed.
    
    If there was another WWN session with the same fc_id/loop_id pair
    (aka "conflicting session"), PLOGI was still ack'ed immediately.
    This potentially caused a problem when old session deletion logged
    fc_id/loop_id out of FW after new session has been established.
    
    Two work-arounds were attempted before:
    1. Dropping PLOGIs until conflicting session goes away.
    2. Detecting initiator being logged out of FW and issuing LOGO
    to force re-login.
    
    This patch introduces proper solution to the problem where PLOGI
    is held until either existing session with same WWN or any
    conflicting session goes away. Mechanism supports one session holding
    two PLOGI acks as well as one PLOGI ack being held by many sessions.
    Signed-off-by: NAlexei Potashnik <alexei@purestorage.com>
    Acked-by: NQuinn Tran <quinn.tran@qlogic.com>
    Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com>
    Reviewed-by: NHannes Reinecke <hare@suse.com>
    Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
    b7bd104e
qla_os.c 163.1 KB