summaryrefslogtreecommitdiffstats
path: root/drivers/target
diff options
context:
space:
mode:
authorDavid Disseldorp <ddiss@suse.de>2018-11-23 12:36:13 -0500
committerMartin K. Petersen <martin.petersen@oracle.com>2018-11-28 18:50:59 -0500
commit59a206b4499edf4c54fd53983f0e366eef052b05 (patch)
tree9d061ba893687adc27341123794ae89fb74fd960 /drivers/target
parent30c7ca9350048486ab32fdb9f5f6ed0603bba39a (diff)
scsi: target: replace fabric_ops.name with fabric_alias
iscsi_target_mod is the only LIO fabric where fabric_ops.name differs from the fabric_ops.fabric_name string. fabric_ops.name is used when matching target/$fabric ConfigFS create paths, so rename it .fabric_alias and fallback to target/$fabric vs .fabric_name comparison if .fabric_alias isn't initialised. iscsi_target_mod is the only fabric module to set .fabric_alias . All other fabric modules rely on .fabric_name matching and can drop the duplicate string. Signed-off-by: David Disseldorp <ddiss@suse.de> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/iscsi/iscsi_target_configfs.c2
-rw-r--r--drivers/target/loopback/tcm_loop.c1
-rw-r--r--drivers/target/sbp/sbp_target.c1
-rw-r--r--drivers/target/target_core_configfs.c30
-rw-r--r--drivers/target/tcm_fc/tfc_conf.c1
5 files changed, 19 insertions, 16 deletions
diff --git a/drivers/target/iscsi/iscsi_target_configfs.c b/drivers/target/iscsi/iscsi_target_configfs.c
index 5c9e98ee42de..39a700a41f6e 100644
--- a/drivers/target/iscsi/iscsi_target_configfs.c
+++ b/drivers/target/iscsi/iscsi_target_configfs.c
@@ -1544,7 +1544,7 @@ static void lio_release_cmd(struct se_cmd *se_cmd)
1544 1544
1545const struct target_core_fabric_ops iscsi_ops = { 1545const struct target_core_fabric_ops iscsi_ops = {
1546 .module = THIS_MODULE, 1546 .module = THIS_MODULE,
1547 .name = "iscsi", 1547 .fabric_alias = "iscsi",
1548 .fabric_name = "iSCSI", 1548 .fabric_name = "iSCSI",
1549 .node_acl_size = sizeof(struct iscsi_node_acl), 1549 .node_acl_size = sizeof(struct iscsi_node_acl),
1550 .tpg_get_wwn = lio_tpg_get_endpoint_wwn, 1550 .tpg_get_wwn = lio_tpg_get_endpoint_wwn,
diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c
index 962845224c19..b0991e86587f 100644
--- a/drivers/target/loopback/tcm_loop.c
+++ b/drivers/target/loopback/tcm_loop.c
@@ -1144,7 +1144,6 @@ static struct configfs_attribute *tcm_loop_wwn_attrs[] = {
1144 1144
1145static const struct target_core_fabric_ops loop_ops = { 1145static const struct target_core_fabric_ops loop_ops = {
1146 .module = THIS_MODULE, 1146 .module = THIS_MODULE,
1147 .name = "loopback",
1148 .fabric_name = "loopback", 1147 .fabric_name = "loopback",
1149 .tpg_get_wwn = tcm_loop_get_endpoint_wwn, 1148 .tpg_get_wwn = tcm_loop_get_endpoint_wwn,
1150 .tpg_get_tag = tcm_loop_get_tag, 1149 .tpg_get_tag = tcm_loop_get_tag,
diff --git a/drivers/target/sbp/sbp_target.c b/drivers/target/sbp/sbp_target.c
index f5830bb4ef5a..08cee13dfb9a 100644
--- a/drivers/target/sbp/sbp_target.c
+++ b/drivers/target/sbp/sbp_target.c
@@ -2318,7 +2318,6 @@ static struct configfs_attribute *sbp_tpg_attrib_attrs[] = {
2318 2318
2319static const struct target_core_fabric_ops sbp_ops = { 2319static const struct target_core_fabric_ops sbp_ops = {
2320 .module = THIS_MODULE, 2320 .module = THIS_MODULE,
2321 .name = "sbp",
2322 .fabric_name = "sbp", 2321 .fabric_name = "sbp",
2323 .tpg_get_wwn = sbp_get_fabric_wwn, 2322 .tpg_get_wwn = sbp_get_fabric_wwn,
2324 .tpg_get_tag = sbp_get_tag, 2323 .tpg_get_tag = sbp_get_tag,
diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c
index ae6c44c48f75..0e8449be5115 100644
--- a/drivers/target/target_core_configfs.c
+++ b/drivers/target/target_core_configfs.c
@@ -172,7 +172,10 @@ static struct target_fabric_configfs *target_core_get_fabric(
172 172
173 mutex_lock(&g_tf_lock); 173 mutex_lock(&g_tf_lock);
174 list_for_each_entry(tf, &g_tf_list, tf_list) { 174 list_for_each_entry(tf, &g_tf_list, tf_list) {
175 if (!strcmp(tf->tf_ops->name, name)) { 175 const char *cmp_name = tf->tf_ops->fabric_alias;
176 if (!cmp_name)
177 cmp_name = tf->tf_ops->fabric_name;
178 if (!strcmp(cmp_name, name)) {
176 atomic_inc(&tf->tf_access_cnt); 179 atomic_inc(&tf->tf_access_cnt);
177 mutex_unlock(&g_tf_lock); 180 mutex_unlock(&g_tf_lock);
178 return tf; 181 return tf;
@@ -249,7 +252,7 @@ static struct config_group *target_core_register_fabric(
249 return ERR_PTR(-EINVAL); 252 return ERR_PTR(-EINVAL);
250 } 253 }
251 pr_debug("Target_Core_ConfigFS: REGISTER -> Located fabric:" 254 pr_debug("Target_Core_ConfigFS: REGISTER -> Located fabric:"
252 " %s\n", tf->tf_ops->name); 255 " %s\n", tf->tf_ops->fabric_name);
253 /* 256 /*
254 * On a successful target_core_get_fabric() look, the returned 257 * On a successful target_core_get_fabric() look, the returned
255 * struct target_fabric_configfs *tf will contain a usage reference. 258 * struct target_fabric_configfs *tf will contain a usage reference.
@@ -282,7 +285,7 @@ static void target_core_deregister_fabric(
282 " tf list\n", config_item_name(item)); 285 " tf list\n", config_item_name(item));
283 286
284 pr_debug("Target_Core_ConfigFS: DEREGISTER -> located fabric:" 287 pr_debug("Target_Core_ConfigFS: DEREGISTER -> located fabric:"
285 " %s\n", tf->tf_ops->name); 288 " %s\n", tf->tf_ops->fabric_name);
286 atomic_dec(&tf->tf_access_cnt); 289 atomic_dec(&tf->tf_access_cnt);
287 290
288 pr_debug("Target_Core_ConfigFS: DEREGISTER -> Releasing ci" 291 pr_debug("Target_Core_ConfigFS: DEREGISTER -> Releasing ci"
@@ -342,19 +345,22 @@ EXPORT_SYMBOL(target_undepend_item);
342 345
343static int target_fabric_tf_ops_check(const struct target_core_fabric_ops *tfo) 346static int target_fabric_tf_ops_check(const struct target_core_fabric_ops *tfo)
344{ 347{
345 if (!tfo->name) { 348 if (tfo->fabric_alias) {
346 pr_err("Missing tfo->name\n"); 349 if (strlen(tfo->fabric_alias) >= TARGET_FABRIC_NAME_SIZE) {
347 return -EINVAL; 350 pr_err("Passed alias: %s exceeds "
348 } 351 "TARGET_FABRIC_NAME_SIZE\n", tfo->fabric_alias);
349 if (strlen(tfo->name) >= TARGET_FABRIC_NAME_SIZE) { 352 return -EINVAL;
350 pr_err("Passed name: %s exceeds TARGET_FABRIC" 353 }
351 "_NAME_SIZE\n", tfo->name);
352 return -EINVAL;
353 } 354 }
354 if (!tfo->fabric_name) { 355 if (!tfo->fabric_name) {
355 pr_err("Missing tfo->fabric_name\n"); 356 pr_err("Missing tfo->fabric_name\n");
356 return -EINVAL; 357 return -EINVAL;
357 } 358 }
359 if (strlen(tfo->fabric_name) >= TARGET_FABRIC_NAME_SIZE) {
360 pr_err("Passed name: %s exceeds "
361 "TARGET_FABRIC_NAME_SIZE\n", tfo->fabric_name);
362 return -EINVAL;
363 }
358 if (!tfo->tpg_get_wwn) { 364 if (!tfo->tpg_get_wwn) {
359 pr_err("Missing tfo->tpg_get_wwn()\n"); 365 pr_err("Missing tfo->tpg_get_wwn()\n");
360 return -EINVAL; 366 return -EINVAL;
@@ -486,7 +492,7 @@ void target_unregister_template(const struct target_core_fabric_ops *fo)
486 492
487 mutex_lock(&g_tf_lock); 493 mutex_lock(&g_tf_lock);
488 list_for_each_entry(t, &g_tf_list, tf_list) { 494 list_for_each_entry(t, &g_tf_list, tf_list) {
489 if (!strcmp(t->tf_ops->name, fo->name)) { 495 if (!strcmp(t->tf_ops->fabric_name, fo->fabric_name)) {
490 BUG_ON(atomic_read(&t->tf_access_cnt)); 496 BUG_ON(atomic_read(&t->tf_access_cnt));
491 list_del(&t->tf_list); 497 list_del(&t->tf_list);
492 mutex_unlock(&g_tf_lock); 498 mutex_unlock(&g_tf_lock);
diff --git a/drivers/target/tcm_fc/tfc_conf.c b/drivers/target/tcm_fc/tfc_conf.c
index 8b884246a9be..1ce49518d440 100644
--- a/drivers/target/tcm_fc/tfc_conf.c
+++ b/drivers/target/tcm_fc/tfc_conf.c
@@ -422,7 +422,6 @@ static u32 ft_tpg_get_inst_index(struct se_portal_group *se_tpg)
422 422
423static const struct target_core_fabric_ops ft_fabric_ops = { 423static const struct target_core_fabric_ops ft_fabric_ops = {
424 .module = THIS_MODULE, 424 .module = THIS_MODULE,
425 .name = "fc",
426 .fabric_name = "fc", 425 .fabric_name = "fc",
427 .node_acl_size = sizeof(struct ft_node_acl), 426 .node_acl_size = sizeof(struct ft_node_acl),
428 .tpg_get_wwn = ft_get_fabric_wwn, 427 .tpg_get_wwn = ft_get_fabric_wwn,