Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

target: Add se_portal_group->tpg_auth_group

This patch adds an optional /auth/ configfs group to TPG context that
can be used by fabrics like iscsi-target for TPG demo-mode
authentication.

Cc: Dax Kelson <dkelson@gurulabs.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>

+33 -3
+19 -2
drivers/target/target_core_fabric_configfs.c
··· 965 965 966 966 /* End of tfc_tpg_attrib_cit */ 967 967 968 + /* Start of tfc_tpg_auth_cit */ 969 + 970 + CONFIGFS_EATTR_OPS(target_fabric_tpg_auth, se_portal_group, tpg_auth_group); 971 + 972 + static struct configfs_item_operations target_fabric_tpg_auth_item_ops = { 973 + .show_attribute = target_fabric_tpg_auth_attr_show, 974 + .store_attribute = target_fabric_tpg_auth_attr_store, 975 + }; 976 + 977 + TF_CIT_SETUP(tpg_auth, &target_fabric_tpg_auth_item_ops, NULL, NULL); 978 + 979 + /* End of tfc_tpg_attrib_cit */ 980 + 968 981 /* Start of tfc_tpg_param_cit */ 969 982 970 983 CONFIGFS_EATTR_OPS(target_fabric_tpg_param, se_portal_group, tpg_param_group); ··· 1043 1030 se_tpg->tpg_group.default_groups[1] = &se_tpg->tpg_np_group; 1044 1031 se_tpg->tpg_group.default_groups[2] = &se_tpg->tpg_acl_group; 1045 1032 se_tpg->tpg_group.default_groups[3] = &se_tpg->tpg_attrib_group; 1046 - se_tpg->tpg_group.default_groups[4] = &se_tpg->tpg_param_group; 1047 - se_tpg->tpg_group.default_groups[5] = NULL; 1033 + se_tpg->tpg_group.default_groups[4] = &se_tpg->tpg_auth_group; 1034 + se_tpg->tpg_group.default_groups[5] = &se_tpg->tpg_param_group; 1035 + se_tpg->tpg_group.default_groups[6] = NULL; 1048 1036 1049 1037 config_group_init_type_name(&se_tpg->tpg_group, name, 1050 1038 &TF_CIT_TMPL(tf)->tfc_tpg_base_cit); ··· 1057 1043 &TF_CIT_TMPL(tf)->tfc_tpg_nacl_cit); 1058 1044 config_group_init_type_name(&se_tpg->tpg_attrib_group, "attrib", 1059 1045 &TF_CIT_TMPL(tf)->tfc_tpg_attrib_cit); 1046 + config_group_init_type_name(&se_tpg->tpg_auth_group, "auth", 1047 + &TF_CIT_TMPL(tf)->tfc_tpg_auth_cit); 1060 1048 config_group_init_type_name(&se_tpg->tpg_param_group, "param", 1061 1049 &TF_CIT_TMPL(tf)->tfc_tpg_param_cit); 1062 1050 ··· 1218 1202 target_fabric_setup_tpg_np_cit(tf); 1219 1203 target_fabric_setup_tpg_np_base_cit(tf); 1220 1204 target_fabric_setup_tpg_attrib_cit(tf); 1205 + target_fabric_setup_tpg_auth_cit(tf); 1221 1206 target_fabric_setup_tpg_param_cit(tf); 1222 1207 target_fabric_setup_tpg_nacl_cit(tf); 1223 1208 target_fabric_setup_tpg_nacl_base_cit(tf);
+2 -1
include/target/target_core_base.h
··· 795 795 struct target_core_fabric_ops *se_tpg_tfo; 796 796 struct se_wwn *se_tpg_wwn; 797 797 struct config_group tpg_group; 798 - struct config_group *tpg_default_groups[6]; 798 + struct config_group *tpg_default_groups[7]; 799 799 struct config_group tpg_lun_group; 800 800 struct config_group tpg_np_group; 801 801 struct config_group tpg_acl_group; 802 802 struct config_group tpg_attrib_group; 803 + struct config_group tpg_auth_group; 803 804 struct config_group tpg_param_group; 804 805 }; 805 806
+1
include/target/target_core_configfs.h
··· 23 23 struct config_item_type tfc_tpg_np_cit; 24 24 struct config_item_type tfc_tpg_np_base_cit; 25 25 struct config_item_type tfc_tpg_attrib_cit; 26 + struct config_item_type tfc_tpg_auth_cit; 26 27 struct config_item_type tfc_tpg_param_cit; 27 28 struct config_item_type tfc_tpg_nacl_cit; 28 29 struct config_item_type tfc_tpg_nacl_base_cit;
+11
include/target/target_core_fabric_configfs.h
··· 62 62 _fabric##_tpg_attrib_show_##_name, \ 63 63 _fabric##_tpg_attrib_store_##_name); 64 64 65 + CONFIGFS_EATTR_STRUCT(target_fabric_tpg_auth, se_portal_group); 66 + #define TF_TPG_AUTH_ATTR(_fabric, _name, _mode) \ 67 + static struct target_fabric_tpg_auth_attribute _fabric##_tpg_auth_##_name = \ 68 + __CONFIGFS_EATTR(_name, _mode, \ 69 + _fabric##_tpg_auth_show_##_name, \ 70 + _fabric##_tpg_auth_store_##_name); 71 + 72 + #define TF_TPG_AUTH_ATTR_RO(_fabric, _name) \ 73 + static struct target_fabric_tpg_auth_attribute _fabric##_tpg_auth_##_name = \ 74 + __CONFIGFS_EATTR_RO(_name, \ 75 + _fabric##_tpg_auth_show_##_name); 65 76 66 77 CONFIGFS_EATTR_STRUCT(target_fabric_tpg_param, se_portal_group); 67 78 #define TF_TPG_PARAM_ATTR(_fabric, _name, _mode) \