Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51d9c41d authored by Andy Grover's avatar Andy Grover Committed by Nicholas Bellinger
Browse files

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: default avatarAndy Grover <agrover@redhat.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 459f213b
Loading
Loading
Loading
Loading
+21 −21
Original line number Diff line number Diff line
@@ -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) {
		/*
		 * 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.
		 */
	if (!sa_res_key) {
		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: