aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target/iscsi/iscsi_target_configfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/target/iscsi/iscsi_target_configfs.c')
-rw-r--r--drivers/target/iscsi/iscsi_target_configfs.c86
1 files changed, 53 insertions, 33 deletions
diff --git a/drivers/target/iscsi/iscsi_target_configfs.c b/drivers/target/iscsi/iscsi_target_configfs.c
index fd145259361d..e3318edb233d 100644
--- a/drivers/target/iscsi/iscsi_target_configfs.c
+++ b/drivers/target/iscsi/iscsi_target_configfs.c
@@ -372,7 +372,7 @@ static ssize_t iscsi_nacl_attrib_show_##name( \
372 struct iscsi_node_acl *nacl = container_of(se_nacl, struct iscsi_node_acl, \ 372 struct iscsi_node_acl *nacl = container_of(se_nacl, struct iscsi_node_acl, \
373 se_node_acl); \ 373 se_node_acl); \
374 \ 374 \
375 return sprintf(page, "%u\n", ISCSI_NODE_ATTRIB(nacl)->name); \ 375 return sprintf(page, "%u\n", nacl->node_attrib.name); \
376} \ 376} \
377 \ 377 \
378static ssize_t iscsi_nacl_attrib_store_##name( \ 378static ssize_t iscsi_nacl_attrib_store_##name( \
@@ -897,7 +897,7 @@ static struct se_node_acl *lio_target_make_nodeacl(
897 if (!se_nacl_new) 897 if (!se_nacl_new)
898 return ERR_PTR(-ENOMEM); 898 return ERR_PTR(-ENOMEM);
899 899
900 cmdsn_depth = ISCSI_TPG_ATTRIB(tpg)->default_cmdsn_depth; 900 cmdsn_depth = tpg->tpg_attrib.default_cmdsn_depth;
901 /* 901 /*
902 * se_nacl_new may be released by core_tpg_add_initiator_node_acl() 902 * se_nacl_new may be released by core_tpg_add_initiator_node_acl()
903 * when converting a NdoeACL from demo mode -> explict 903 * when converting a NdoeACL from demo mode -> explict
@@ -920,9 +920,9 @@ static struct se_node_acl *lio_target_make_nodeacl(
920 return ERR_PTR(-ENOMEM); 920 return ERR_PTR(-ENOMEM);
921 } 921 }
922 922
923 stats_cg->default_groups[0] = &NODE_STAT_GRPS(acl)->iscsi_sess_stats_group; 923 stats_cg->default_groups[0] = &acl->node_stat_grps.iscsi_sess_stats_group;
924 stats_cg->default_groups[1] = NULL; 924 stats_cg->default_groups[1] = NULL;
925 config_group_init_type_name(&NODE_STAT_GRPS(acl)->iscsi_sess_stats_group, 925 config_group_init_type_name(&acl->node_stat_grps.iscsi_sess_stats_group,
926 "iscsi_sess_stats", &iscsi_stat_sess_cit); 926 "iscsi_sess_stats", &iscsi_stat_sess_cit);
927 927
928 return se_nacl; 928 return se_nacl;
@@ -967,7 +967,7 @@ static ssize_t iscsi_tpg_attrib_show_##name( \
967 if (iscsit_get_tpg(tpg) < 0) \ 967 if (iscsit_get_tpg(tpg) < 0) \
968 return -EINVAL; \ 968 return -EINVAL; \
969 \ 969 \
970 rb = sprintf(page, "%u\n", ISCSI_TPG_ATTRIB(tpg)->name); \ 970 rb = sprintf(page, "%u\n", tpg->tpg_attrib.name); \
971 iscsit_put_tpg(tpg); \ 971 iscsit_put_tpg(tpg); \
972 return rb; \ 972 return rb; \
973} \ 973} \
@@ -1041,6 +1041,16 @@ TPG_ATTR(demo_mode_write_protect, S_IRUGO | S_IWUSR);
1041 */ 1041 */
1042DEF_TPG_ATTRIB(prod_mode_write_protect); 1042DEF_TPG_ATTRIB(prod_mode_write_protect);
1043TPG_ATTR(prod_mode_write_protect, S_IRUGO | S_IWUSR); 1043TPG_ATTR(prod_mode_write_protect, S_IRUGO | S_IWUSR);
1044/*
1045 * Define iscsi_tpg_attrib_s_demo_mode_discovery,
1046 */
1047DEF_TPG_ATTRIB(demo_mode_discovery);
1048TPG_ATTR(demo_mode_discovery, S_IRUGO | S_IWUSR);
1049/*
1050 * Define iscsi_tpg_attrib_s_default_erl
1051 */
1052DEF_TPG_ATTRIB(default_erl);
1053TPG_ATTR(default_erl, S_IRUGO | S_IWUSR);
1044 1054
1045static struct configfs_attribute *lio_target_tpg_attrib_attrs[] = { 1055static struct configfs_attribute *lio_target_tpg_attrib_attrs[] = {
1046 &iscsi_tpg_attrib_authentication.attr, 1056 &iscsi_tpg_attrib_authentication.attr,
@@ -1051,6 +1061,8 @@ static struct configfs_attribute *lio_target_tpg_attrib_attrs[] = {
1051 &iscsi_tpg_attrib_cache_dynamic_acls.attr, 1061 &iscsi_tpg_attrib_cache_dynamic_acls.attr,
1052 &iscsi_tpg_attrib_demo_mode_write_protect.attr, 1062 &iscsi_tpg_attrib_demo_mode_write_protect.attr,
1053 &iscsi_tpg_attrib_prod_mode_write_protect.attr, 1063 &iscsi_tpg_attrib_prod_mode_write_protect.attr,
1064 &iscsi_tpg_attrib_demo_mode_discovery.attr,
1065 &iscsi_tpg_attrib_default_erl.attr,
1054 NULL, 1066 NULL,
1055}; 1067};
1056 1068
@@ -1514,21 +1526,21 @@ static struct se_wwn *lio_target_call_coreaddtiqn(
1514 return ERR_PTR(-ENOMEM); 1526 return ERR_PTR(-ENOMEM);
1515 } 1527 }
1516 1528
1517 stats_cg->default_groups[0] = &WWN_STAT_GRPS(tiqn)->iscsi_instance_group; 1529 stats_cg->default_groups[0] = &tiqn->tiqn_stat_grps.iscsi_instance_group;
1518 stats_cg->default_groups[1] = &WWN_STAT_GRPS(tiqn)->iscsi_sess_err_group; 1530 stats_cg->default_groups[1] = &tiqn->tiqn_stat_grps.iscsi_sess_err_group;
1519 stats_cg->default_groups[2] = &WWN_STAT_GRPS(tiqn)->iscsi_tgt_attr_group; 1531 stats_cg->default_groups[2] = &tiqn->tiqn_stat_grps.iscsi_tgt_attr_group;
1520 stats_cg->default_groups[3] = &WWN_STAT_GRPS(tiqn)->iscsi_login_stats_group; 1532 stats_cg->default_groups[3] = &tiqn->tiqn_stat_grps.iscsi_login_stats_group;
1521 stats_cg->default_groups[4] = &WWN_STAT_GRPS(tiqn)->iscsi_logout_stats_group; 1533 stats_cg->default_groups[4] = &tiqn->tiqn_stat_grps.iscsi_logout_stats_group;
1522 stats_cg->default_groups[5] = NULL; 1534 stats_cg->default_groups[5] = NULL;
1523 config_group_init_type_name(&WWN_STAT_GRPS(tiqn)->iscsi_instance_group, 1535 config_group_init_type_name(&tiqn->tiqn_stat_grps.iscsi_instance_group,
1524 "iscsi_instance", &iscsi_stat_instance_cit); 1536 "iscsi_instance", &iscsi_stat_instance_cit);
1525 config_group_init_type_name(&WWN_STAT_GRPS(tiqn)->iscsi_sess_err_group, 1537 config_group_init_type_name(&tiqn->tiqn_stat_grps.iscsi_sess_err_group,
1526 "iscsi_sess_err", &iscsi_stat_sess_err_cit); 1538 "iscsi_sess_err", &iscsi_stat_sess_err_cit);
1527 config_group_init_type_name(&WWN_STAT_GRPS(tiqn)->iscsi_tgt_attr_group, 1539 config_group_init_type_name(&tiqn->tiqn_stat_grps.iscsi_tgt_attr_group,
1528 "iscsi_tgt_attr", &iscsi_stat_tgt_attr_cit); 1540 "iscsi_tgt_attr", &iscsi_stat_tgt_attr_cit);
1529 config_group_init_type_name(&WWN_STAT_GRPS(tiqn)->iscsi_login_stats_group, 1541 config_group_init_type_name(&tiqn->tiqn_stat_grps.iscsi_login_stats_group,
1530 "iscsi_login_stats", &iscsi_stat_login_cit); 1542 "iscsi_login_stats", &iscsi_stat_login_cit);
1531 config_group_init_type_name(&WWN_STAT_GRPS(tiqn)->iscsi_logout_stats_group, 1543 config_group_init_type_name(&tiqn->tiqn_stat_grps.iscsi_logout_stats_group,
1532 "iscsi_logout_stats", &iscsi_stat_logout_cit); 1544 "iscsi_logout_stats", &iscsi_stat_logout_cit);
1533 1545
1534 pr_debug("LIO_Target_ConfigFS: REGISTER -> %s\n", tiqn->tiqn); 1546 pr_debug("LIO_Target_ConfigFS: REGISTER -> %s\n", tiqn->tiqn);
@@ -1784,6 +1796,11 @@ static int lio_queue_status(struct se_cmd *se_cmd)
1784 struct iscsi_cmd *cmd = container_of(se_cmd, struct iscsi_cmd, se_cmd); 1796 struct iscsi_cmd *cmd = container_of(se_cmd, struct iscsi_cmd, se_cmd);
1785 1797
1786 cmd->i_state = ISTATE_SEND_STATUS; 1798 cmd->i_state = ISTATE_SEND_STATUS;
1799
1800 if (cmd->se_cmd.scsi_status || cmd->sense_reason) {
1801 iscsit_add_cmd_to_response_queue(cmd, cmd->conn, cmd->i_state);
1802 return 0;
1803 }
1787 cmd->conn->conn_transport->iscsit_queue_status(cmd->conn, cmd); 1804 cmd->conn->conn_transport->iscsit_queue_status(cmd->conn, cmd);
1788 1805
1789 return 0; 1806 return 0;
@@ -1815,21 +1832,21 @@ static u32 lio_tpg_get_default_depth(struct se_portal_group *se_tpg)
1815{ 1832{
1816 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr; 1833 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr;
1817 1834
1818 return ISCSI_TPG_ATTRIB(tpg)->default_cmdsn_depth; 1835 return tpg->tpg_attrib.default_cmdsn_depth;
1819} 1836}
1820 1837
1821static int lio_tpg_check_demo_mode(struct se_portal_group *se_tpg) 1838static int lio_tpg_check_demo_mode(struct se_portal_group *se_tpg)
1822{ 1839{
1823 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr; 1840 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr;
1824 1841
1825 return ISCSI_TPG_ATTRIB(tpg)->generate_node_acls; 1842 return tpg->tpg_attrib.generate_node_acls;
1826} 1843}
1827 1844
1828static int lio_tpg_check_demo_mode_cache(struct se_portal_group *se_tpg) 1845static int lio_tpg_check_demo_mode_cache(struct se_portal_group *se_tpg)
1829{ 1846{
1830 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr; 1847 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr;
1831 1848
1832 return ISCSI_TPG_ATTRIB(tpg)->cache_dynamic_acls; 1849 return tpg->tpg_attrib.cache_dynamic_acls;
1833} 1850}
1834 1851
1835static int lio_tpg_check_demo_mode_write_protect( 1852static int lio_tpg_check_demo_mode_write_protect(
@@ -1837,7 +1854,7 @@ static int lio_tpg_check_demo_mode_write_protect(
1837{ 1854{
1838 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr; 1855 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr;
1839 1856
1840 return ISCSI_TPG_ATTRIB(tpg)->demo_mode_write_protect; 1857 return tpg->tpg_attrib.demo_mode_write_protect;
1841} 1858}
1842 1859
1843static int lio_tpg_check_prod_mode_write_protect( 1860static int lio_tpg_check_prod_mode_write_protect(
@@ -1845,7 +1862,7 @@ static int lio_tpg_check_prod_mode_write_protect(
1845{ 1862{
1846 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr; 1863 struct iscsi_portal_group *tpg = se_tpg->se_tpg_fabric_ptr;
1847 1864
1848 return ISCSI_TPG_ATTRIB(tpg)->prod_mode_write_protect; 1865 return tpg->tpg_attrib.prod_mode_write_protect;
1849} 1866}
1850 1867
1851static void lio_tpg_release_fabric_acl( 1868static void lio_tpg_release_fabric_acl(
@@ -1908,9 +1925,12 @@ static void lio_set_default_node_attributes(struct se_node_acl *se_acl)
1908{ 1925{
1909 struct iscsi_node_acl *acl = container_of(se_acl, struct iscsi_node_acl, 1926 struct iscsi_node_acl *acl = container_of(se_acl, struct iscsi_node_acl,
1910 se_node_acl); 1927 se_node_acl);
1928 struct se_portal_group *se_tpg = se_acl->se_tpg;
1929 struct iscsi_portal_group *tpg = container_of(se_tpg,
1930 struct iscsi_portal_group, tpg_se_tpg);
1911 1931
1912 ISCSI_NODE_ATTRIB(acl)->nacl = acl; 1932 acl->node_attrib.nacl = acl;
1913 iscsit_set_default_node_attribues(acl); 1933 iscsit_set_default_node_attribues(acl, tpg);
1914} 1934}
1915 1935
1916static int lio_check_stop_free(struct se_cmd *se_cmd) 1936static int lio_check_stop_free(struct se_cmd *se_cmd)
@@ -1995,17 +2015,17 @@ int iscsi_target_register_configfs(void)
1995 * Setup default attribute lists for various fabric->tf_cit_tmpl 2015 * Setup default attribute lists for various fabric->tf_cit_tmpl
1996 * sturct config_item_type's 2016 * sturct config_item_type's
1997 */ 2017 */
1998 TF_CIT_TMPL(fabric)->tfc_discovery_cit.ct_attrs = lio_target_discovery_auth_attrs; 2018 fabric->tf_cit_tmpl.tfc_discovery_cit.ct_attrs = lio_target_discovery_auth_attrs;
1999 TF_CIT_TMPL(fabric)->tfc_wwn_cit.ct_attrs = lio_target_wwn_attrs; 2019 fabric->tf_cit_tmpl.tfc_wwn_cit.ct_attrs = lio_target_wwn_attrs;
2000 TF_CIT_TMPL(fabric)->tfc_tpg_base_cit.ct_attrs = lio_target_tpg_attrs; 2020 fabric->tf_cit_tmpl.tfc_tpg_base_cit.ct_attrs = lio_target_tpg_attrs;
2001 TF_CIT_TMPL(fabric)->tfc_tpg_attrib_cit.ct_attrs = lio_target_tpg_attrib_attrs; 2021 fabric->tf_cit_tmpl.tfc_tpg_attrib_cit.ct_attrs = lio_target_tpg_attrib_attrs;
2002 TF_CIT_TMPL(fabric)->tfc_tpg_auth_cit.ct_attrs = lio_target_tpg_auth_attrs; 2022 fabric->tf_cit_tmpl.tfc_tpg_auth_cit.ct_attrs = lio_target_tpg_auth_attrs;
2003 TF_CIT_TMPL(fabric)->tfc_tpg_param_cit.ct_attrs = lio_target_tpg_param_attrs; 2023 fabric->tf_cit_tmpl.tfc_tpg_param_cit.ct_attrs = lio_target_tpg_param_attrs;
2004 TF_CIT_TMPL(fabric)->tfc_tpg_np_base_cit.ct_attrs = lio_target_portal_attrs; 2024 fabric->tf_cit_tmpl.tfc_tpg_np_base_cit.ct_attrs = lio_target_portal_attrs;
2005 TF_CIT_TMPL(fabric)->tfc_tpg_nacl_base_cit.ct_attrs = lio_target_initiator_attrs; 2025 fabric->tf_cit_tmpl.tfc_tpg_nacl_base_cit.ct_attrs = lio_target_initiator_attrs;
2006 TF_CIT_TMPL(fabric)->tfc_tpg_nacl_attrib_cit.ct_attrs = lio_target_nacl_attrib_attrs; 2026 fabric->tf_cit_tmpl.tfc_tpg_nacl_attrib_cit.ct_attrs = lio_target_nacl_attrib_attrs;
2007 TF_CIT_TMPL(fabric)->tfc_tpg_nacl_auth_cit.ct_attrs = lio_target_nacl_auth_attrs; 2027 fabric->tf_cit_tmpl.tfc_tpg_nacl_auth_cit.ct_attrs = lio_target_nacl_auth_attrs;
2008 TF_CIT_TMPL(fabric)->tfc_tpg_nacl_param_cit.ct_attrs = lio_target_nacl_param_attrs; 2028 fabric->tf_cit_tmpl.tfc_tpg_nacl_param_cit.ct_attrs = lio_target_nacl_param_attrs;
2009 2029
2010 ret = target_fabric_configfs_register(fabric); 2030 ret = target_fabric_configfs_register(fabric);
2011 if (ret < 0) { 2031 if (ret < 0) {