diff options
author | David Disseldorp <ddiss@suse.de> | 2018-11-23 12:36:13 -0500 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2018-11-28 18:50:59 -0500 |
commit | 59a206b4499edf4c54fd53983f0e366eef052b05 (patch) | |
tree | 9d061ba893687adc27341123794ae89fb74fd960 /drivers/target | |
parent | 30c7ca9350048486ab32fdb9f5f6ed0603bba39a (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.c | 2 | ||||
-rw-r--r-- | drivers/target/loopback/tcm_loop.c | 1 | ||||
-rw-r--r-- | drivers/target/sbp/sbp_target.c | 1 | ||||
-rw-r--r-- | drivers/target/target_core_configfs.c | 30 | ||||
-rw-r--r-- | drivers/target/tcm_fc/tfc_conf.c | 1 |
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 | ||
1545 | const struct target_core_fabric_ops iscsi_ops = { | 1545 | const 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 | ||
1145 | static const struct target_core_fabric_ops loop_ops = { | 1145 | static 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 | ||
2319 | static const struct target_core_fabric_ops sbp_ops = { | 2319 | static 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 | ||
343 | static int target_fabric_tf_ops_check(const struct target_core_fabric_ops *tfo) | 346 | static 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 | ||
423 | static const struct target_core_fabric_ops ft_fabric_ops = { | 423 | static 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, |