target: Use if/else for sa_res_key conditional in emulate_pro_register()
authorAndy Grover <agrover@redhat.com>
Thu, 16 May 2013 17:41:03 +0000 (10:41 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Fri, 14 Jun 2013 07:05:43 +0000 (00:05 -0700)
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>
drivers/target/target_core_pr.c

index 915edaab191961892e0344aa7a6724119276faff..6eb0dabb4ac9f25c6e48d0bbd6fc994fd40e4fb9 100644 (file)
@@ -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: