diff options
Diffstat (limited to 'drivers/target/loopback/tcm_loop.c')
-rw-r--r-- | drivers/target/loopback/tcm_loop.c | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/drivers/target/loopback/tcm_loop.c b/drivers/target/loopback/tcm_loop.c index 5bc85ffed720..999b6eba52e8 100644 --- a/drivers/target/loopback/tcm_loop.c +++ b/drivers/target/loopback/tcm_loop.c | |||
@@ -34,7 +34,6 @@ | |||
34 | 34 | ||
35 | #include <target/target_core_base.h> | 35 | #include <target/target_core_base.h> |
36 | #include <target/target_core_fabric.h> | 36 | #include <target/target_core_fabric.h> |
37 | #include <target/target_core_fabric_configfs.h> | ||
38 | 37 | ||
39 | #include "tcm_loop.h" | 38 | #include "tcm_loop.h" |
40 | 39 | ||
@@ -763,21 +762,20 @@ static void tcm_loop_port_unlink( | |||
763 | 762 | ||
764 | /* End items for tcm_loop_port_cit */ | 763 | /* End items for tcm_loop_port_cit */ |
765 | 764 | ||
766 | static ssize_t tcm_loop_tpg_attrib_show_fabric_prot_type( | 765 | static ssize_t tcm_loop_tpg_attrib_fabric_prot_type_show( |
767 | struct se_portal_group *se_tpg, | 766 | struct config_item *item, char *page) |
768 | char *page) | ||
769 | { | 767 | { |
768 | struct se_portal_group *se_tpg = attrib_to_tpg(item); | ||
770 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, struct tcm_loop_tpg, | 769 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, struct tcm_loop_tpg, |
771 | tl_se_tpg); | 770 | tl_se_tpg); |
772 | 771 | ||
773 | return sprintf(page, "%d\n", tl_tpg->tl_fabric_prot_type); | 772 | return sprintf(page, "%d\n", tl_tpg->tl_fabric_prot_type); |
774 | } | 773 | } |
775 | 774 | ||
776 | static ssize_t tcm_loop_tpg_attrib_store_fabric_prot_type( | 775 | static ssize_t tcm_loop_tpg_attrib_fabric_prot_type_store( |
777 | struct se_portal_group *se_tpg, | 776 | struct config_item *item, const char *page, size_t count) |
778 | const char *page, | ||
779 | size_t count) | ||
780 | { | 777 | { |
778 | struct se_portal_group *se_tpg = attrib_to_tpg(item); | ||
781 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, struct tcm_loop_tpg, | 779 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, struct tcm_loop_tpg, |
782 | tl_se_tpg); | 780 | tl_se_tpg); |
783 | unsigned long val; | 781 | unsigned long val; |
@@ -796,10 +794,10 @@ static ssize_t tcm_loop_tpg_attrib_store_fabric_prot_type( | |||
796 | return count; | 794 | return count; |
797 | } | 795 | } |
798 | 796 | ||
799 | TF_TPG_ATTRIB_ATTR(tcm_loop, fabric_prot_type, S_IRUGO | S_IWUSR); | 797 | CONFIGFS_ATTR(tcm_loop_tpg_attrib_, fabric_prot_type); |
800 | 798 | ||
801 | static struct configfs_attribute *tcm_loop_tpg_attrib_attrs[] = { | 799 | static struct configfs_attribute *tcm_loop_tpg_attrib_attrs[] = { |
802 | &tcm_loop_tpg_attrib_fabric_prot_type.attr, | 800 | &tcm_loop_tpg_attrib_attr_fabric_prot_type, |
803 | NULL, | 801 | NULL, |
804 | }; | 802 | }; |
805 | 803 | ||
@@ -894,10 +892,9 @@ static int tcm_loop_drop_nexus( | |||
894 | 892 | ||
895 | /* End items for tcm_loop_nexus_cit */ | 893 | /* End items for tcm_loop_nexus_cit */ |
896 | 894 | ||
897 | static ssize_t tcm_loop_tpg_show_nexus( | 895 | static ssize_t tcm_loop_tpg_nexus_show(struct config_item *item, char *page) |
898 | struct se_portal_group *se_tpg, | ||
899 | char *page) | ||
900 | { | 896 | { |
897 | struct se_portal_group *se_tpg = to_tpg(item); | ||
901 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, | 898 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, |
902 | struct tcm_loop_tpg, tl_se_tpg); | 899 | struct tcm_loop_tpg, tl_se_tpg); |
903 | struct tcm_loop_nexus *tl_nexus; | 900 | struct tcm_loop_nexus *tl_nexus; |
@@ -913,11 +910,10 @@ static ssize_t tcm_loop_tpg_show_nexus( | |||
913 | return ret; | 910 | return ret; |
914 | } | 911 | } |
915 | 912 | ||
916 | static ssize_t tcm_loop_tpg_store_nexus( | 913 | static ssize_t tcm_loop_tpg_nexus_store(struct config_item *item, |
917 | struct se_portal_group *se_tpg, | 914 | const char *page, size_t count) |
918 | const char *page, | ||
919 | size_t count) | ||
920 | { | 915 | { |
916 | struct se_portal_group *se_tpg = to_tpg(item); | ||
921 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, | 917 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, |
922 | struct tcm_loop_tpg, tl_se_tpg); | 918 | struct tcm_loop_tpg, tl_se_tpg); |
923 | struct tcm_loop_hba *tl_hba = tl_tpg->tl_hba; | 919 | struct tcm_loop_hba *tl_hba = tl_tpg->tl_hba; |
@@ -992,12 +988,10 @@ check_newline: | |||
992 | return count; | 988 | return count; |
993 | } | 989 | } |
994 | 990 | ||
995 | TF_TPG_BASE_ATTR(tcm_loop, nexus, S_IRUGO | S_IWUSR); | 991 | static ssize_t tcm_loop_tpg_transport_status_show(struct config_item *item, |
996 | 992 | char *page) | |
997 | static ssize_t tcm_loop_tpg_show_transport_status( | ||
998 | struct se_portal_group *se_tpg, | ||
999 | char *page) | ||
1000 | { | 993 | { |
994 | struct se_portal_group *se_tpg = to_tpg(item); | ||
1001 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, | 995 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, |
1002 | struct tcm_loop_tpg, tl_se_tpg); | 996 | struct tcm_loop_tpg, tl_se_tpg); |
1003 | const char *status = NULL; | 997 | const char *status = NULL; |
@@ -1020,11 +1014,10 @@ static ssize_t tcm_loop_tpg_show_transport_status( | |||
1020 | return ret; | 1014 | return ret; |
1021 | } | 1015 | } |
1022 | 1016 | ||
1023 | static ssize_t tcm_loop_tpg_store_transport_status( | 1017 | static ssize_t tcm_loop_tpg_transport_status_store(struct config_item *item, |
1024 | struct se_portal_group *se_tpg, | 1018 | const char *page, size_t count) |
1025 | const char *page, | ||
1026 | size_t count) | ||
1027 | { | 1019 | { |
1020 | struct se_portal_group *se_tpg = to_tpg(item); | ||
1028 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, | 1021 | struct tcm_loop_tpg *tl_tpg = container_of(se_tpg, |
1029 | struct tcm_loop_tpg, tl_se_tpg); | 1022 | struct tcm_loop_tpg, tl_se_tpg); |
1030 | 1023 | ||
@@ -1044,11 +1037,12 @@ static ssize_t tcm_loop_tpg_store_transport_status( | |||
1044 | return -EINVAL; | 1037 | return -EINVAL; |
1045 | } | 1038 | } |
1046 | 1039 | ||
1047 | TF_TPG_BASE_ATTR(tcm_loop, transport_status, S_IRUGO | S_IWUSR); | 1040 | CONFIGFS_ATTR(tcm_loop_tpg_, nexus); |
1041 | CONFIGFS_ATTR(tcm_loop_tpg_, transport_status); | ||
1048 | 1042 | ||
1049 | static struct configfs_attribute *tcm_loop_tpg_attrs[] = { | 1043 | static struct configfs_attribute *tcm_loop_tpg_attrs[] = { |
1050 | &tcm_loop_tpg_nexus.attr, | 1044 | &tcm_loop_tpg_attr_nexus, |
1051 | &tcm_loop_tpg_transport_status.attr, | 1045 | &tcm_loop_tpg_attr_transport_status, |
1052 | NULL, | 1046 | NULL, |
1053 | }; | 1047 | }; |
1054 | 1048 | ||
@@ -1216,17 +1210,15 @@ static void tcm_loop_drop_scsi_hba( | |||
1216 | } | 1210 | } |
1217 | 1211 | ||
1218 | /* Start items for tcm_loop_cit */ | 1212 | /* Start items for tcm_loop_cit */ |
1219 | static ssize_t tcm_loop_wwn_show_attr_version( | 1213 | static ssize_t tcm_loop_wwn_version_show(struct config_item *item, char *page) |
1220 | struct target_fabric_configfs *tf, | ||
1221 | char *page) | ||
1222 | { | 1214 | { |
1223 | return sprintf(page, "TCM Loopback Fabric module %s\n", TCM_LOOP_VERSION); | 1215 | return sprintf(page, "TCM Loopback Fabric module %s\n", TCM_LOOP_VERSION); |
1224 | } | 1216 | } |
1225 | 1217 | ||
1226 | TF_WWN_ATTR_RO(tcm_loop, version); | 1218 | CONFIGFS_ATTR_RO(tcm_loop_wwn_, version); |
1227 | 1219 | ||
1228 | static struct configfs_attribute *tcm_loop_wwn_attrs[] = { | 1220 | static struct configfs_attribute *tcm_loop_wwn_attrs[] = { |
1229 | &tcm_loop_wwn_version.attr, | 1221 | &tcm_loop_wwn_attr_version, |
1230 | NULL, | 1222 | NULL, |
1231 | }; | 1223 | }; |
1232 | 1224 | ||