• Roland Dreier's avatar
    target: Convert acl_node_lock to be IRQ-disabling · 28638887
    Roland Dreier authored
    With qla2xxx, acl_node_lock is taken inside qla2xxx's hardware_lock,
    which is taken in hardirq context.  This means acl_node_lock must become
    an IRQ-disabling lock; in particular this fixes lockdep warnings along
    the lines of
    
        ======================================================
        [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ]
    
         (&(&se_tpg->acl_node_lock)->rlock){+.....}, at: [<ffffffffa026f872>] transport_deregister_session+0x92/0x140 [target_core_mod]
    
        and this task is already holding:
         (&(&ha->hardware_lock)->rlock){-.-...}, at: [<ffffffffa017c5e7>] qla_tgt_stop_phase1+0x57/0x2c0 [qla2xxx]
        which would create a new lock dependency:
         (&(&ha->hardware_lock)->rlock){-.-...} -> (&(&se_tpg->acl_node_lock)->rlock){+.....}
    
        but this new dependency connects a HARDIRQ-irq-safe lock:
         (&(&ha->hardware_lock)->rlock){-.-...}
    
        to a HARDIRQ-irq-unsafe lock:
         (&(&se_tpg->acl_node_lock)->rlock){+.....}
    Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    28638887
Name
Last commit
Last update
..
iscsi Loading commit data...
loopback Loading commit data...
tcm_fc Loading commit data...
Kconfig Loading commit data...
Makefile Loading commit data...
target_core_alua.c Loading commit data...
target_core_alua.h Loading commit data...
target_core_cdb.c Loading commit data...
target_core_configfs.c Loading commit data...
target_core_device.c Loading commit data...
target_core_fabric_configfs.c Loading commit data...
target_core_fabric_lib.c Loading commit data...
target_core_file.c Loading commit data...
target_core_file.h Loading commit data...
target_core_hba.c Loading commit data...
target_core_hba.h Loading commit data...
target_core_iblock.c Loading commit data...
target_core_iblock.h Loading commit data...
target_core_pr.c Loading commit data...
target_core_pr.h Loading commit data...
target_core_pscsi.c Loading commit data...
target_core_pscsi.h Loading commit data...
target_core_rd.c Loading commit data...
target_core_rd.h Loading commit data...
target_core_scdb.c Loading commit data...
target_core_scdb.h Loading commit data...
target_core_stat.c Loading commit data...
target_core_stat.h Loading commit data...
target_core_tmr.c Loading commit data...
target_core_tpg.c Loading commit data...
target_core_transport.c Loading commit data...
target_core_ua.c Loading commit data...
target_core_ua.h Loading commit data...