diff mbox series

[4/4] target: core: new key must be used for moved PR

Message ID 20220907135851.3756-5-d.bogdanov@yadro.com (mailing list archive)
State Superseded
Headers show
Series target: fix bugs in Persistent Reservations | expand

Commit Message

Dmitry Bogdanov Sept. 7, 2022, 1:58 p.m. UTC
According to SPC4 5.12.8:
e) Retain the reservation key specified in the SERVICE ACTION
RESERVATION KEY field and associated information;

But currently sa_res_key is only used for the not existing I_T nexus.
The patch adds an updating of the key for the existing I_T nexus the PR
moved to.

Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com>
---
 drivers/target/target_core_pr.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Bart Van Assche Sept. 7, 2022, 4:19 p.m. UTC | #1
On 9/7/22 06:58, Dmitry Bogdanov wrote:
> +	} else {
> +	/*
> +	 * e) Retain the reservation key specified in the SERVICE ACTION
> +	 *    RESERVATION KEY field and associated information;
> +	 */
> +		dest_pr_reg->pr_res_key = sa_res_key;
>   	}

The indentation of the new comment looks wrong to me. Please fix.

Thanks,

Bart.
Dmitry Bogdanov Sept. 8, 2022, 8:39 a.m. UTC | #2
On Wed, Sep 07, 2022 at 09:19:46AM -0700, Bart Van Assche wrote:
> 
> On 9/7/22 06:58, Dmitry Bogdanov wrote:
> > +     } else {
> > +     /*
> > +      * e) Retain the reservation key specified in the SERVICE ACTION
> > +      *    RESERVATION KEY field and associated information;
> > +      */
> > +             dest_pr_reg->pr_res_key = sa_res_key;
> >       }
> 
> The indentation of the new comment looks wrong to me. Please fix.
Oh, yes, forgot to add a tab there.

BR,
 Dmitry
diff mbox series

Patch

diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
index 8c83c5530536..fc7b2e2c17a5 100644
--- a/drivers/target/target_core_pr.c
+++ b/drivers/target/target_core_pr.c
@@ -3440,8 +3440,6 @@  core_scsi3_emulate_pro_register_and_move(struct se_cmd *cmd, u64 res_key,
 	 *       transport protocols where port names are not required;
 	 * d) Register the reservation key specified in the SERVICE ACTION
 	 *    RESERVATION KEY field;
-	 * e) Retain the reservation key specified in the SERVICE ACTION
-	 *    RESERVATION KEY field and associated information;
 	 *
 	 * Also, It is not an error for a REGISTER AND MOVE service action to
 	 * register an I_T nexus that is already registered with the same
@@ -3463,6 +3461,12 @@  core_scsi3_emulate_pro_register_and_move(struct se_cmd *cmd, u64 res_key,
 		dest_pr_reg = __core_scsi3_locate_pr_reg(dev, dest_node_acl,
 						iport_ptr);
 		new_reg = 1;
+	} else {
+	/*
+	 * e) Retain the reservation key specified in the SERVICE ACTION
+	 *    RESERVATION KEY field and associated information;
+	 */
+		dest_pr_reg->pr_res_key = sa_res_key;
 	}
 	/*
 	 * f) Release the persistent reservation for the persistent reservation