aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorThomas Glanzmann <thomas@glanzmann.de>2013-10-07 17:12:11 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2013-10-24 00:29:49 -0400
commit4c54b6cf28bcd942d53d8504c4fb45bb3637f7da (patch)
tree4e052c4c70608ea50e12826e3acf91185a303879 /drivers
parent8f4a1fb0d029feef385986f320c7b4c13d9fce40 (diff)
iscsi-target: Add new TPG attribute
Add a new TPG attribute demo_mode_discovery which is enabled by default. Signed-off-by: Thomas Glanzmann <thomas@glanzmann.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/target/iscsi/iscsi_target_configfs.c6
-rw-r--r--drivers/target/iscsi/iscsi_target_core.h2
-rw-r--r--drivers/target/iscsi/iscsi_target_tpg.c20
-rw-r--r--drivers/target/iscsi/iscsi_target_tpg.h1
4 files changed, 29 insertions, 0 deletions
diff --git a/drivers/target/iscsi/iscsi_target_configfs.c b/drivers/target/iscsi/iscsi_target_configfs.c
index 59a0241a016d..1eec37c47662 100644
--- a/drivers/target/iscsi/iscsi_target_configfs.c
+++ b/drivers/target/iscsi/iscsi_target_configfs.c
@@ -1041,6 +1041,11 @@ 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);
1044 1049
1045static struct configfs_attribute *lio_target_tpg_attrib_attrs[] = { 1050static struct configfs_attribute *lio_target_tpg_attrib_attrs[] = {
1046 &iscsi_tpg_attrib_authentication.attr, 1051 &iscsi_tpg_attrib_authentication.attr,
@@ -1051,6 +1056,7 @@ static struct configfs_attribute *lio_target_tpg_attrib_attrs[] = {
1051 &iscsi_tpg_attrib_cache_dynamic_acls.attr, 1056 &iscsi_tpg_attrib_cache_dynamic_acls.attr,
1052 &iscsi_tpg_attrib_demo_mode_write_protect.attr, 1057 &iscsi_tpg_attrib_demo_mode_write_protect.attr,
1053 &iscsi_tpg_attrib_prod_mode_write_protect.attr, 1058 &iscsi_tpg_attrib_prod_mode_write_protect.attr,
1059 &iscsi_tpg_attrib_demo_mode_discovery.attr,
1054 NULL, 1060 NULL,
1055}; 1061};
1056 1062
diff --git a/drivers/target/iscsi/iscsi_target_core.h b/drivers/target/iscsi/iscsi_target_core.h
index cf8a1921a392..b03ee2ff31e5 100644
--- a/drivers/target/iscsi/iscsi_target_core.h
+++ b/drivers/target/iscsi/iscsi_target_core.h
@@ -58,6 +58,7 @@
58#define TA_DEMO_MODE_WRITE_PROTECT 1 58#define TA_DEMO_MODE_WRITE_PROTECT 1
59/* Disabled by default in production mode w/ explict ACLs */ 59/* Disabled by default in production mode w/ explict ACLs */
60#define TA_PROD_MODE_WRITE_PROTECT 0 60#define TA_PROD_MODE_WRITE_PROTECT 0
61#define TA_DEMO_MODE_DISCOVERY 1
61#define TA_CACHE_CORE_NPS 0 62#define TA_CACHE_CORE_NPS 0
62 63
63 64
@@ -764,6 +765,7 @@ struct iscsi_tpg_attrib {
764 u32 default_cmdsn_depth; 765 u32 default_cmdsn_depth;
765 u32 demo_mode_write_protect; 766 u32 demo_mode_write_protect;
766 u32 prod_mode_write_protect; 767 u32 prod_mode_write_protect;
768 u32 demo_mode_discovery;
767 struct iscsi_portal_group *tpg; 769 struct iscsi_portal_group *tpg;
768}; 770};
769 771
diff --git a/drivers/target/iscsi/iscsi_target_tpg.c b/drivers/target/iscsi/iscsi_target_tpg.c
index 1ef5df03ff5c..98ccf0bff546 100644
--- a/drivers/target/iscsi/iscsi_target_tpg.c
+++ b/drivers/target/iscsi/iscsi_target_tpg.c
@@ -223,6 +223,7 @@ static void iscsit_set_default_tpg_attribs(struct iscsi_portal_group *tpg)
223 a->cache_dynamic_acls = TA_CACHE_DYNAMIC_ACLS; 223 a->cache_dynamic_acls = TA_CACHE_DYNAMIC_ACLS;
224 a->demo_mode_write_protect = TA_DEMO_MODE_WRITE_PROTECT; 224 a->demo_mode_write_protect = TA_DEMO_MODE_WRITE_PROTECT;
225 a->prod_mode_write_protect = TA_PROD_MODE_WRITE_PROTECT; 225 a->prod_mode_write_protect = TA_PROD_MODE_WRITE_PROTECT;
226 a->demo_mode_discovery = TA_DEMO_MODE_DISCOVERY;
226} 227}
227 228
228int iscsit_tpg_add_portal_group(struct iscsi_tiqn *tiqn, struct iscsi_portal_group *tpg) 229int iscsit_tpg_add_portal_group(struct iscsi_tiqn *tiqn, struct iscsi_portal_group *tpg)
@@ -820,3 +821,22 @@ int iscsit_ta_prod_mode_write_protect(
820 821
821 return 0; 822 return 0;
822} 823}
824
825int iscsit_ta_demo_mode_discovery(
826 struct iscsi_portal_group *tpg,
827 u32 flag)
828{
829 struct iscsi_tpg_attrib *a = &tpg->tpg_attrib;
830
831 if ((flag != 0) && (flag != 1)) {
832 pr_err("Illegal value %d\n", flag);
833 return -EINVAL;
834 }
835
836 a->demo_mode_discovery = flag;
837 pr_debug("iSCSI_TPG[%hu] - Demo Mode Discovery bit:"
838 " %s\n", tpg->tpgt, (a->demo_mode_discovery) ?
839 "ON" : "OFF");
840
841 return 0;
842}
diff --git a/drivers/target/iscsi/iscsi_target_tpg.h b/drivers/target/iscsi/iscsi_target_tpg.h
index b77693e2c209..3e8ce8644082 100644
--- a/drivers/target/iscsi/iscsi_target_tpg.h
+++ b/drivers/target/iscsi/iscsi_target_tpg.h
@@ -37,5 +37,6 @@ extern int iscsit_ta_default_cmdsn_depth(struct iscsi_portal_group *, u32);
37extern int iscsit_ta_cache_dynamic_acls(struct iscsi_portal_group *, u32); 37extern int iscsit_ta_cache_dynamic_acls(struct iscsi_portal_group *, u32);
38extern int iscsit_ta_demo_mode_write_protect(struct iscsi_portal_group *, u32); 38extern int iscsit_ta_demo_mode_write_protect(struct iscsi_portal_group *, u32);
39extern int iscsit_ta_prod_mode_write_protect(struct iscsi_portal_group *, u32); 39extern int iscsit_ta_prod_mode_write_protect(struct iscsi_portal_group *, u32);
40extern int iscsit_ta_demo_mode_discovery(struct iscsi_portal_group *, u32);
40 41
41#endif /* ISCSI_TARGET_TPG_H */ 42#endif /* ISCSI_TARGET_TPG_H */