[PATCH 3/5] [TCM]: Add TPG parameter to struct target_core_fabric_ops->tpg_parse_pr_out_transport_id()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx>

This patch adds the missing se_portal_group_t * parameter to
struct target_core_fabric_ops->tpg_parse_pr_out_transport_id() so TCM fabric modules
can locate internal TPG state to determine which Target Endpoint SCSI protocol logic
should be followed when the TCM fabric module is supporting for more than a single
SCSI protocol.

The patch updates TCM -> tpg_parse_pr_out_transport_id() usage in target_core_pr.c
for SPEC_I_PT=1 + REGISTER_AND_MOVE ops.

It also updates the individual fabric module usages for TCM_Loop, TCM_FC and LIO-Target.

Signed-off-by: Nicholas A. Bellinger <nab@xxxxxxxxxxxxxxx>
---
 drivers/target/lio-target/iscsi_target_tpg.c |    1 +
 drivers/target/lio-target/iscsi_target_tpg.h |    3 ++-
 drivers/target/target_core_pr.c              |    4 ++--
 drivers/target/tcm_fc/tfc_conf.c             |    3 ++-
 drivers/target/tcm_loop/tcm_loop_fabric.c    |    1 +
 drivers/target/tcm_loop/tcm_loop_fabric.h    |    3 ++-
 include/target/target_core_fabric_ops.h      |    3 ++-
 7 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/target/lio-target/iscsi_target_tpg.c b/drivers/target/lio-target/iscsi_target_tpg.c
index 670d6b7..c729043 100644
--- a/drivers/target/lio-target/iscsi_target_tpg.c
+++ b/drivers/target/lio-target/iscsi_target_tpg.c
@@ -234,6 +234,7 @@ u32 lio_tpg_get_pr_transport_id_len(
 }
 
 char *lio_tpg_parse_pr_out_transport_id(
+	se_portal_group_t *se_tpg,
 	const char *buf,
 	u32 *out_tid_len,
 	char **port_nexus_ptr)
diff --git a/drivers/target/lio-target/iscsi_target_tpg.h b/drivers/target/lio-target/iscsi_target_tpg.h
index e3bdb78..46b8518 100644
--- a/drivers/target/lio-target/iscsi_target_tpg.h
+++ b/drivers/target/lio-target/iscsi_target_tpg.h
@@ -10,7 +10,8 @@ extern u32 lio_tpg_get_pr_transport_id(struct se_portal_group_s *,
 extern u32 lio_tpg_get_pr_transport_id_len(struct se_portal_group_s *,
 			struct se_node_acl_s *, struct t10_pr_registration_s *,
 			int *);
-extern char *lio_tpg_parse_pr_out_transport_id(const char *, u32 *, char **);
+extern char *lio_tpg_parse_pr_out_transport_id(struct se_portal_group_s *,
+			const char *, u32 *, char **);
 extern int lio_tpg_check_demo_mode(struct se_portal_group_s *);
 extern int lio_tpg_check_demo_mode_cache(struct se_portal_group_s *);
 extern int lio_tpg_check_demo_mode_write_protect(struct se_portal_group_s *);
diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
index f78d279..2136e89 100644
--- a/drivers/target/target_core_pr.c
+++ b/drivers/target/target_core_pr.c
@@ -1581,7 +1581,7 @@ static int core_scsi3_decode_spec_i_port(
 			dest_rtpi = tmp_port->sep_rtpi;
 
 			i_str = tmp_tf_ops->tpg_parse_pr_out_transport_id(
-					(const char *)ptr, &tid_len,
+					tmp_tpg, (const char *)ptr, &tid_len,
 					&iport_ptr);
 			if (!(i_str))
 				continue;
@@ -3442,7 +3442,7 @@ static int core_scsi3_emulate_pro_register_and_move(
 		ret = PYX_TRANSPORT_LU_COMM_FAILURE;
 		goto out;
 	}
-	initiator_str = dest_tf_ops->tpg_parse_pr_out_transport_id(
+	initiator_str = dest_tf_ops->tpg_parse_pr_out_transport_id(dest_se_tpg,
 			(const char *)&buf[24], &tmp_tid_len, &iport_ptr);
 	if (!(initiator_str)) {
 		printk(KERN_ERR "SPC-3 PR REGISTER_AND_MOVE: Unable to locate"
diff --git a/drivers/target/tcm_fc/tfc_conf.c b/drivers/target/tcm_fc/tfc_conf.c
index 69b0092..1315df6 100644
--- a/drivers/target/tcm_fc/tfc_conf.c
+++ b/drivers/target/tcm_fc/tfc_conf.c
@@ -536,7 +536,8 @@ static u32 ft_get_pr_transport_id(se_portal_group_t *se_tpg,
 	return ft_get_pr_transport_id_len(se_tpg, se_nacl, pr_reg, format_code);
 }
 
-static char *ft_parse_pr_out_transport_id(const char *buf, u32 *out_tid_len,
+static char *ft_parse_pr_out_transport_id(se_portal_group_t *se_tpg,
+				          const char *buf, u32 *out_tid_len,
 					  char **port_nexus_ptr)
 {
 	struct ft_transport_id *id = (struct ft_transport_id *)buf;
diff --git a/drivers/target/tcm_loop/tcm_loop_fabric.c b/drivers/target/tcm_loop/tcm_loop_fabric.c
index 11cf196..30a90ec 100644
--- a/drivers/target/tcm_loop/tcm_loop_fabric.c
+++ b/drivers/target/tcm_loop/tcm_loop_fabric.c
@@ -144,6 +144,7 @@ u32 tcm_loop_get_pr_transport_id_len(
  * Persistent Reservation SPEC_I_PT=1 and PROUT REGISTER_AND_MOVE operations.
  */
 char *tcm_loop_parse_pr_out_transport_id(
+	se_portal_group_t *se_tpg,
 	const char *buf,
 	u32 *out_tid_len,
 	char **port_nexus_ptr)
diff --git a/drivers/target/tcm_loop/tcm_loop_fabric.h b/drivers/target/tcm_loop/tcm_loop_fabric.h
index 676c33a..d412b4a 100644
--- a/drivers/target/tcm_loop/tcm_loop_fabric.h
+++ b/drivers/target/tcm_loop/tcm_loop_fabric.h
@@ -9,7 +9,8 @@ extern u32 tcm_loop_get_pr_transport_id(se_portal_group_t *, se_node_acl_t *,
 extern u32 tcm_loop_get_pr_transport_id_len(se_portal_group_t *,
 				se_node_acl_t *, t10_pr_registration_t *,
 				int *);
-extern char *tcm_loop_parse_pr_out_transport_id(const char *, u32 *, char **);
+extern char *tcm_loop_parse_pr_out_transport_id(se_portal_group_t *,
+				const char *, u32 *, char **);
 extern int tcm_loop_check_demo_mode(se_portal_group_t *);
 extern int tcm_loop_check_demo_mode_cache(se_portal_group_t *);
 extern int tcm_loop_check_demo_mode_write_protect(se_portal_group_t *);
diff --git a/include/target/target_core_fabric_ops.h b/include/target/target_core_fabric_ops.h
index 4b4d5c6..ebc5a03 100644
--- a/include/target/target_core_fabric_ops.h
+++ b/include/target/target_core_fabric_ops.h
@@ -15,7 +15,8 @@ struct target_core_fabric_ops {
 	u32 (*tpg_get_pr_transport_id_len)(struct se_portal_group_s *,
 				struct se_node_acl_s *,
 				struct t10_pr_registration_s *, int *);
-	char *(*tpg_parse_pr_out_transport_id)(const char *, u32 *, char **);
+	char *(*tpg_parse_pr_out_transport_id)(struct se_portal_group_s *,
+				const char *, u32 *, char **);
 	int (*tpg_check_demo_mode)(struct se_portal_group_s *);
 	int (*tpg_check_demo_mode_cache)(struct se_portal_group_s *);
 	int (*tpg_check_demo_mode_write_protect)(struct se_portal_group_s *);
-- 
1.5.6.5

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux