This is a note to let you know that I've just added the patch titled target: Allow AllRegistrants to re-RESERVE existing reservation to the 3.14-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: target-allow-allregistrants-to-re-reserve-existing-reservation.patch and it can be found in the queue-3.14 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From ae450e246e8540300699480a3780a420a028b73f Mon Sep 17 00:00:00 2001 From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> Date: Fri, 19 Dec 2014 00:49:23 +0000 Subject: target: Allow AllRegistrants to re-RESERVE existing reservation From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> commit ae450e246e8540300699480a3780a420a028b73f 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: Ilias Tsitsimpis <i.tsitsimpis@xxxxxxxxx> Cc: Ilias Tsitsimpis <i.tsitsimpis@xxxxxxxxx> Cc: Lee Duncan <lduncan@xxxxxxxx> Cc: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Signed-off-by: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/target/target_core_pr.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c @@ -2297,6 +2297,7 @@ core_scsi3_pro_reserve(struct se_cmd *cm spin_lock(&dev->dev_reservation_lock); pr_res_holder = dev->dev_pr_res_holder; if (pr_res_holder) { + int pr_res_type = pr_res_holder->pr_res_type; /* * From spc4r17 Section 5.7.9: Reserving: * @@ -2307,7 +2308,9 @@ core_scsi3_pro_reserve(struct se_cmd *cm * the logical unit, then the command shall be completed with * RESERVATION CONFLICT status. */ - if (pr_res_holder != pr_reg) { + if ((pr_res_holder != pr_reg) && + (pr_res_type != PR_TYPE_WRITE_EXCLUSIVE_ALLREG) && + (pr_res_type != PR_TYPE_EXCLUSIVE_ACCESS_ALLREG)) { struct se_node_acl *pr_res_nacl = pr_res_holder->pr_reg_nacl; pr_err("SPC-3 PR: Attempted RESERVE from" " [%s]: %s while reservation already held by" Patches currently in stable-queue which might be from nab@xxxxxxxxxxxxxxx are queue-3.14/iscsi-target-avoid-early-conn_logout_comp-for-iser-connections.patch queue-3.14/target-pscsi-fix-null-pointer-dereference-in-get_device_type.patch queue-3.14/target-fix-virtual-lun-0-target_configure_device-failure-oops.patch queue-3.14/target-allow-write-exclusive-non-reservation-holders-to-read.patch queue-3.14/target-avoid-dropping-allregistrants-reservation-during-unregister.patch queue-3.14/target-fix-reference-leak-in-target_get_sess_cmd-error-path.patch queue-3.14/target-allow-allregistrants-to-re-reserve-existing-reservation.patch queue-3.14/target-fix-r_holder-bit-usage-for-allregistrants.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html