diff options
author | Thomas Glanzmann <thomas@glanzmann.de> | 2013-10-07 17:12:11 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2013-10-24 00:29:49 -0400 |
commit | 4c54b6cf28bcd942d53d8504c4fb45bb3637f7da (patch) | |
tree | 4e052c4c70608ea50e12826e3acf91185a303879 /drivers/target | |
parent | 8f4a1fb0d029feef385986f320c7b4c13d9fce40 (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/target')
-rw-r--r-- | drivers/target/iscsi/iscsi_target_configfs.c | 6 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_core.h | 2 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_tpg.c | 20 | ||||
-rw-r--r-- | drivers/target/iscsi/iscsi_target_tpg.h | 1 |
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 | */ |
1042 | DEF_TPG_ATTRIB(prod_mode_write_protect); | 1042 | DEF_TPG_ATTRIB(prod_mode_write_protect); |
1043 | TPG_ATTR(prod_mode_write_protect, S_IRUGO | S_IWUSR); | 1043 | TPG_ATTR(prod_mode_write_protect, S_IRUGO | S_IWUSR); |
1044 | /* | ||
1045 | * Define iscsi_tpg_attrib_s_demo_mode_discovery, | ||
1046 | */ | ||
1047 | DEF_TPG_ATTRIB(demo_mode_discovery); | ||
1048 | TPG_ATTR(demo_mode_discovery, S_IRUGO | S_IWUSR); | ||
1044 | 1049 | ||
1045 | static struct configfs_attribute *lio_target_tpg_attrib_attrs[] = { | 1050 | static 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 | ||
228 | int iscsit_tpg_add_portal_group(struct iscsi_tiqn *tiqn, struct iscsi_portal_group *tpg) | 229 | int 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 | |||
825 | int 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); | |||
37 | extern int iscsit_ta_cache_dynamic_acls(struct iscsi_portal_group *, u32); | 37 | extern int iscsit_ta_cache_dynamic_acls(struct iscsi_portal_group *, u32); |
38 | extern int iscsit_ta_demo_mode_write_protect(struct iscsi_portal_group *, u32); | 38 | extern int iscsit_ta_demo_mode_write_protect(struct iscsi_portal_group *, u32); |
39 | extern int iscsit_ta_prod_mode_write_protect(struct iscsi_portal_group *, u32); | 39 | extern int iscsit_ta_prod_mode_write_protect(struct iscsi_portal_group *, u32); |
40 | extern 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 */ |