diff options
author | 2013-05-16 10:41:03 -0700 | |
---|---|---|
committer | 2013-06-14 00:05:43 -0700 | |
commit | 51d9c41d190b6645c69a279b0610aad8e4ed9d72 (patch) | |
tree | 16c154a7306b196acd301a967117350137d0729b /drivers/target | |
parent | target: Allocate aptpl_buf inside update_and_write_aptpl() (diff) | |
download | linux-51d9c41d190b6645c69a279b0610aad8e4ed9d72.tar.gz linux-51d9c41d190b6645c69a279b0610aad8e4ed9d72.tar.bz2 linux-51d9c41d190b6645c69a279b0610aad8e4ed9d72.zip |
target: Use if/else for sa_res_key conditional in emulate_pro_register()
Don't need goto, we can just do an if/else for sa_res_key behavior. Move
shorter case first. Slightly shorter b/c both cases can share a call to
update_and_write_aptpl() now.
Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target')
-rw-r--r-- | drivers/target/target_core_pr.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c index 915edaab1919..6eb0dabb4ac9 100644 --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c @@ -2107,11 +2107,27 @@ core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, } /* - * sa_res_key=0 Unregister Reservation Key for registered I_T - * Nexus sa_res_key=1 Change Reservation Key for registered I_T - * Nexus. + * sa_res_key=1 Change Reservation Key for registered I_T Nexus. */ - if (!sa_res_key) { + if (sa_res_key) { + /* + * Increment PRgeneration counter for struct se_device" + * upon a successful REGISTER, see spc4r17 section 6.3.2 + * READ_KEYS service action. + */ + pr_reg->pr_res_generation = core_scsi3_pr_generation(cmd->se_dev); + pr_reg->pr_res_key = sa_res_key; + pr_debug("SPC-3 PR [%s] REGISTER%s: Changed Reservation" + " Key for %s to: 0x%016Lx PRgeneration:" + " 0x%08x\n", cmd->se_tfo->get_fabric_name(), + (register_type == REGISTER_AND_IGNORE_EXISTING_KEY) ? "_AND_IGNORE_EXISTING_KEY" : "", + pr_reg->pr_reg_nacl->initiatorname, + pr_reg->pr_res_key, pr_reg->pr_res_generation); + + } else { + /* + * sa_res_key=0 Unregister Reservation Key for registered I_T Nexus. + */ pr_holder = core_scsi3_check_implict_release( cmd->se_dev, pr_reg); if (pr_holder < 0) { @@ -2174,26 +2190,10 @@ core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, ASCQ_2AH_RESERVATIONS_RELEASED); } } - spin_unlock(&pr_tmpl->registration_lock); - ret = core_scsi3_update_and_write_aptpl(dev, aptpl); - goto out_put_pr_reg; + spin_unlock(&pr_tmpl->registration_lock); } - /* - * Increment PRgeneration counter for struct se_device" - * upon a successful REGISTER, see spc4r17 section 6.3.2 - * READ_KEYS service action. - */ - pr_reg->pr_res_generation = core_scsi3_pr_generation(cmd->se_dev); - pr_reg->pr_res_key = sa_res_key; - pr_debug("SPC-3 PR [%s] REGISTER%s: Changed Reservation" - " Key for %s to: 0x%016Lx PRgeneration:" - " 0x%08x\n", cmd->se_tfo->get_fabric_name(), - (register_type == REGISTER_AND_IGNORE_EXISTING_KEY) ? "_AND_IGNORE_EXISTING_KEY" : "", - pr_reg->pr_reg_nacl->initiatorname, - pr_reg->pr_res_key, pr_reg->pr_res_generation); - ret = core_scsi3_update_and_write_aptpl(dev, aptpl); out_put_pr_reg: |