• Nicholas Bellinger's avatar
    target: Allow AllRegistrants to re-RESERVE existing reservation · 84d0034c
    Nicholas Bellinger authored
    commit ae450e24 upstream.
    
    This patch changes core_scsi3_pro_release() logic to allow an
    existing AllRegistrants type reservation to be re-reserved by
    any registered I_T nexus.
    
    This addresses a issue where AllRegistrants type RESERVE was
    receiving RESERVATION_CONFLICT status if dev_pr_res_holder did
    not match the same I_T nexus, instead of just returning GOOD
    status following spc4r34 Section 5.9.9:
    
    "If the device server receives a PERSISTENT RESERVE OUT command
     with RESERVE service action where the TYPE field and the SCOPE
     field contain the same values as the existing type and scope
     from a persistent reservation holder, it shall not make any
     change to the existing persistent reservation and shall complete
     the command with GOOD status."
    Reported-by: default avatarIlias Tsitsimpis <i.tsitsimpis@gmail.com>
    Cc: Ilias Tsitsimpis <i.tsitsimpis@gmail.com>
    Cc: Lee Duncan <lduncan@suse.com>
    Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
    84d0034c
target_core_pr.c 124 KB