• Nicholas Bellinger's avatar
    target/pr: Use atomic bitop for se_dev_entry->deve_flags reservation check · 80bfdfa9
    Nicholas Bellinger authored
    This patch converts the core_scsi3_pr_seq_non_holder() check for non
    reservation holding registrations to use an atomic bitop in ->deve_flags
    to determine if a registration is currently active.
    
    It also includes associated a set_bit() in __core_scsi3_add_registration()
    and clear_bit() in __core_scsi3_free_registration(), if se_dev_entry still
    exists, and has not already been released via se_dev_entry shutdown path
    in core_disable_device_list_for_node().
    
    Also, clear_bit in core_disable_device_list_for_node as well to ensure
    the read-critical path in core_scsi3_pr_seq_non_holder() picks up the
    new state, preceeding the final kfree_rcu() call.
    Reported-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Cc: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    80bfdfa9
target_core_device.c 46.5 KB