|
@@ -53,16 +53,15 @@ struct pr_transport_id_holder {
|
|
|
struct list_head dest_list;
|
|
|
};
|
|
|
|
|
|
-int core_pr_dump_initiator_port(
|
|
|
+void core_pr_dump_initiator_port(
|
|
|
struct t10_pr_registration *pr_reg,
|
|
|
char *buf,
|
|
|
u32 size)
|
|
|
{
|
|
|
if (!pr_reg->isid_present_at_reg)
|
|
|
- return 0;
|
|
|
+ buf[0] = '\0';
|
|
|
|
|
|
- snprintf(buf, size, ",i,0x%s", &pr_reg->pr_reg_isid[0]);
|
|
|
- return 1;
|
|
|
+ snprintf(buf, size, ",i,0x%s", pr_reg->pr_reg_isid);
|
|
|
}
|
|
|
|
|
|
enum register_type {
|
|
@@ -859,11 +858,9 @@ static void core_scsi3_aptpl_reserve(
|
|
|
struct t10_pr_registration *pr_reg)
|
|
|
{
|
|
|
char i_buf[PR_REG_ISID_ID_LEN];
|
|
|
- int prf_isid;
|
|
|
|
|
|
memset(i_buf, 0, PR_REG_ISID_ID_LEN);
|
|
|
- prf_isid = core_pr_dump_initiator_port(pr_reg, &i_buf[0],
|
|
|
- PR_REG_ISID_ID_LEN);
|
|
|
+ core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN);
|
|
|
|
|
|
spin_lock(&dev->dev_reservation_lock);
|
|
|
dev->dev_pr_res_holder = pr_reg;
|
|
@@ -876,7 +873,7 @@ static void core_scsi3_aptpl_reserve(
|
|
|
(pr_reg->pr_reg_all_tg_pt) ? 1 : 0);
|
|
|
pr_debug("SPC-3 PR [%s] RESERVE Node: %s%s\n",
|
|
|
tpg->se_tpg_tfo->get_fabric_name(), node_acl->initiatorname,
|
|
|
- (prf_isid) ? &i_buf[0] : "");
|
|
|
+ i_buf);
|
|
|
}
|
|
|
|
|
|
static void __core_scsi3_add_registration(struct se_device *, struct se_node_acl *,
|
|
@@ -977,17 +974,15 @@ static void __core_scsi3_dump_registration(
|
|
|
{
|
|
|
struct se_portal_group *se_tpg = nacl->se_tpg;
|
|
|
char i_buf[PR_REG_ISID_ID_LEN];
|
|
|
- int prf_isid;
|
|
|
|
|
|
memset(&i_buf[0], 0, PR_REG_ISID_ID_LEN);
|
|
|
- prf_isid = core_pr_dump_initiator_port(pr_reg, &i_buf[0],
|
|
|
- PR_REG_ISID_ID_LEN);
|
|
|
+ core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN);
|
|
|
|
|
|
pr_debug("SPC-3 PR [%s] Service Action: REGISTER%s Initiator"
|
|
|
" Node: %s%s\n", tfo->get_fabric_name(), (register_type == REGISTER_AND_MOVE) ?
|
|
|
"_AND_MOVE" : (register_type == REGISTER_AND_IGNORE_EXISTING_KEY) ?
|
|
|
"_AND_IGNORE_EXISTING_KEY" : "", nacl->initiatorname,
|
|
|
- (prf_isid) ? i_buf : "");
|
|
|
+ i_buf);
|
|
|
pr_debug("SPC-3 PR [%s] registration on Target Port: %s,0x%04x\n",
|
|
|
tfo->get_fabric_name(), tfo->tpg_get_wwn(se_tpg),
|
|
|
tfo->tpg_get_tag(se_tpg));
|
|
@@ -1236,11 +1231,9 @@ static void __core_scsi3_free_registration(
|
|
|
pr_reg->pr_reg_nacl->se_tpg->se_tpg_tfo;
|
|
|
struct t10_reservation *pr_tmpl = &dev->t10_pr;
|
|
|
char i_buf[PR_REG_ISID_ID_LEN];
|
|
|
- int prf_isid;
|
|
|
|
|
|
memset(i_buf, 0, PR_REG_ISID_ID_LEN);
|
|
|
- prf_isid = core_pr_dump_initiator_port(pr_reg, &i_buf[0],
|
|
|
- PR_REG_ISID_ID_LEN);
|
|
|
+ core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN);
|
|
|
|
|
|
pr_reg->pr_reg_deve->def_pr_registered = 0;
|
|
|
pr_reg->pr_reg_deve->pr_res_key = 0;
|
|
@@ -1268,7 +1261,7 @@ static void __core_scsi3_free_registration(
|
|
|
pr_debug("SPC-3 PR [%s] Service Action: UNREGISTER Initiator"
|
|
|
" Node: %s%s\n", tfo->get_fabric_name(),
|
|
|
pr_reg->pr_reg_nacl->initiatorname,
|
|
|
- (prf_isid) ? &i_buf[0] : "");
|
|
|
+ i_buf);
|
|
|
pr_debug("SPC-3 PR [%s] for %s TCM Subsystem %s Object Target"
|
|
|
" Port(s)\n", tfo->get_fabric_name(),
|
|
|
(pr_reg->pr_reg_all_tg_pt) ? "ALL" : "SINGLE",
|
|
@@ -1464,7 +1457,7 @@ core_scsi3_decode_spec_i_port(
|
|
|
char *iport_ptr = NULL, dest_iport[64], i_buf[PR_REG_ISID_ID_LEN];
|
|
|
sense_reason_t ret;
|
|
|
u32 tpdl, tid_len = 0;
|
|
|
- int dest_local_nexus, prf_isid;
|
|
|
+ int dest_local_nexus;
|
|
|
u32 dest_rtpi = 0;
|
|
|
|
|
|
memset(dest_iport, 0, 64);
|
|
@@ -1775,8 +1768,7 @@ core_scsi3_decode_spec_i_port(
|
|
|
kfree(tidh);
|
|
|
|
|
|
memset(i_buf, 0, PR_REG_ISID_ID_LEN);
|
|
|
- prf_isid = core_pr_dump_initiator_port(dest_pr_reg, &i_buf[0],
|
|
|
- PR_REG_ISID_ID_LEN);
|
|
|
+ core_pr_dump_initiator_port(dest_pr_reg, i_buf, PR_REG_ISID_ID_LEN);
|
|
|
|
|
|
__core_scsi3_add_registration(cmd->se_dev, dest_node_acl,
|
|
|
dest_pr_reg, 0, 0);
|
|
@@ -1784,8 +1776,7 @@ core_scsi3_decode_spec_i_port(
|
|
|
pr_debug("SPC-3 PR [%s] SPEC_I_PT: Successfully"
|
|
|
" registered Transport ID for Node: %s%s Mapped LUN:"
|
|
|
" %u\n", dest_tpg->se_tpg_tfo->get_fabric_name(),
|
|
|
- dest_node_acl->initiatorname, (prf_isid) ?
|
|
|
- &i_buf[0] : "", dest_se_deve->mapped_lun);
|
|
|
+ dest_node_acl->initiatorname, i_buf, dest_se_deve->mapped_lun);
|
|
|
|
|
|
if (dest_local_nexus)
|
|
|
continue;
|
|
@@ -2351,7 +2342,6 @@ core_scsi3_pro_reserve(struct se_cmd *cmd, int type, int scope, u64 res_key)
|
|
|
struct t10_reservation *pr_tmpl = &dev->t10_pr;
|
|
|
char i_buf[PR_REG_ISID_ID_LEN];
|
|
|
sense_reason_t ret;
|
|
|
- int prf_isid;
|
|
|
|
|
|
memset(i_buf, 0, PR_REG_ISID_ID_LEN);
|
|
|
|
|
@@ -2477,8 +2467,7 @@ core_scsi3_pro_reserve(struct se_cmd *cmd, int type, int scope, u64 res_key)
|
|
|
pr_reg->pr_res_type = type;
|
|
|
pr_reg->pr_res_holder = 1;
|
|
|
dev->dev_pr_res_holder = pr_reg;
|
|
|
- prf_isid = core_pr_dump_initiator_port(pr_reg, &i_buf[0],
|
|
|
- PR_REG_ISID_ID_LEN);
|
|
|
+ core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN);
|
|
|
|
|
|
pr_debug("SPC-3 PR [%s] Service Action: RESERVE created new"
|
|
|
" reservation holder TYPE: %s ALL_TG_PT: %d\n",
|
|
@@ -2487,7 +2476,7 @@ core_scsi3_pro_reserve(struct se_cmd *cmd, int type, int scope, u64 res_key)
|
|
|
pr_debug("SPC-3 PR [%s] RESERVE Node: %s%s\n",
|
|
|
cmd->se_tfo->get_fabric_name(),
|
|
|
se_sess->se_node_acl->initiatorname,
|
|
|
- (prf_isid) ? &i_buf[0] : "");
|
|
|
+ i_buf);
|
|
|
spin_unlock(&dev->dev_reservation_lock);
|
|
|
|
|
|
if (pr_tmpl->pr_aptpl_active) {
|
|
@@ -2535,11 +2524,9 @@ static void __core_scsi3_complete_pro_release(
|
|
|
{
|
|
|
struct target_core_fabric_ops *tfo = se_nacl->se_tpg->se_tpg_tfo;
|
|
|
char i_buf[PR_REG_ISID_ID_LEN];
|
|
|
- int prf_isid;
|
|
|
|
|
|
memset(i_buf, 0, PR_REG_ISID_ID_LEN);
|
|
|
- prf_isid = core_pr_dump_initiator_port(pr_reg, &i_buf[0],
|
|
|
- PR_REG_ISID_ID_LEN);
|
|
|
+ core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN);
|
|
|
/*
|
|
|
* Go ahead and release the current PR reservation holder.
|
|
|
*/
|
|
@@ -2552,7 +2539,7 @@ static void __core_scsi3_complete_pro_release(
|
|
|
(pr_reg->pr_reg_all_tg_pt) ? 1 : 0);
|
|
|
pr_debug("SPC-3 PR [%s] RELEASE Node: %s%s\n",
|
|
|
tfo->get_fabric_name(), se_nacl->initiatorname,
|
|
|
- (prf_isid) ? &i_buf[0] : "");
|
|
|
+ i_buf);
|
|
|
/*
|
|
|
* Clear TYPE and SCOPE for the next PROUT Service Action: RESERVE
|
|
|
*/
|
|
@@ -2826,11 +2813,9 @@ static void __core_scsi3_complete_pro_preempt(
|
|
|
struct se_node_acl *nacl = pr_reg->pr_reg_nacl;
|
|
|
struct target_core_fabric_ops *tfo = nacl->se_tpg->se_tpg_tfo;
|
|
|
char i_buf[PR_REG_ISID_ID_LEN];
|
|
|
- int prf_isid;
|
|
|
|
|
|
memset(i_buf, 0, PR_REG_ISID_ID_LEN);
|
|
|
- prf_isid = core_pr_dump_initiator_port(pr_reg, &i_buf[0],
|
|
|
- PR_REG_ISID_ID_LEN);
|
|
|
+ core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN);
|
|
|
/*
|
|
|
* Do an implict RELEASE of the existing reservation.
|
|
|
*/
|
|
@@ -2850,7 +2835,7 @@ static void __core_scsi3_complete_pro_preempt(
|
|
|
(pr_reg->pr_reg_all_tg_pt) ? 1 : 0);
|
|
|
pr_debug("SPC-3 PR [%s] PREEMPT%s from Node: %s%s\n",
|
|
|
tfo->get_fabric_name(), (preempt_type == PREEMPT_AND_ABORT) ? "_AND_ABORT" : "",
|
|
|
- nacl->initiatorname, (prf_isid) ? &i_buf[0] : "");
|
|
|
+ nacl->initiatorname, i_buf);
|
|
|
/*
|
|
|
* For PREEMPT_AND_ABORT, add the preempting reservation's
|
|
|
* struct t10_pr_registration to the list that will be compared
|
|
@@ -3231,7 +3216,7 @@ core_scsi3_emulate_pro_register_and_move(struct se_cmd *cmd, u64 res_key,
|
|
|
unsigned char *initiator_str;
|
|
|
char *iport_ptr = NULL, dest_iport[64], i_buf[PR_REG_ISID_ID_LEN];
|
|
|
u32 tid_len, tmp_tid_len;
|
|
|
- int new_reg = 0, type, scope, matching_iname, prf_isid;
|
|
|
+ int new_reg = 0, type, scope, matching_iname;
|
|
|
sense_reason_t ret;
|
|
|
unsigned short rtpi;
|
|
|
unsigned char proto_ident;
|
|
@@ -3575,8 +3560,7 @@ after_iport_check:
|
|
|
dest_pr_reg->pr_res_holder = 1;
|
|
|
dest_pr_reg->pr_res_type = type;
|
|
|
pr_reg->pr_res_scope = scope;
|
|
|
- prf_isid = core_pr_dump_initiator_port(pr_reg, &i_buf[0],
|
|
|
- PR_REG_ISID_ID_LEN);
|
|
|
+ core_pr_dump_initiator_port(pr_reg, i_buf, PR_REG_ISID_ID_LEN);
|
|
|
/*
|
|
|
* Increment PRGeneration for existing registrations..
|
|
|
*/
|
|
@@ -3592,7 +3576,7 @@ after_iport_check:
|
|
|
pr_debug("SPC-3 PR Successfully moved reservation from"
|
|
|
" %s Fabric Node: %s%s -> %s Fabric Node: %s %s\n",
|
|
|
tf_ops->get_fabric_name(), pr_reg_nacl->initiatorname,
|
|
|
- (prf_isid) ? &i_buf[0] : "", dest_tf_ops->get_fabric_name(),
|
|
|
+ i_buf, dest_tf_ops->get_fabric_name(),
|
|
|
dest_node_acl->initiatorname, (iport_ptr != NULL) ?
|
|
|
iport_ptr : "");
|
|
|
/*
|