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 */ |
