• Nicholas Bellinger's avatar
    target: Avoid dropping AllRegistrants reservation during unregister · a9fdc0b9
    Nicholas Bellinger authored
    commit 6c3c9baa upstream.
    
    This patch fixes an issue with AllRegistrants reservations where
    an unregister operation by the I_T nexus reservation holder would
    incorrectly drop the reservation, instead of waiting until the
    last active I_T nexus is unregistered as per SPC-4.
    
    This includes updating __core_scsi3_complete_pro_release() to reset
    dev->dev_pr_res_holder with another pr_reg for this special case,
    as well as a new 'unreg' parameter to determine when the release
    is occuring from an implicit unregister, vs. explicit RELEASE.
    
    It also adds special handling in core_scsi3_free_pr_reg_from_nacl()
    to release the left-over pr_res_holder, now that pr_reg is deleted
    from pr_reg_list within __core_scsi3_complete_pro_release().
    Reported-by: default avatarIlias Tsitsimpis <i.tsitsimpis@gmail.com>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
    a9fdc0b9
target_core_pr.c 124 KB