| From: Dmitry Bogdanov <d.bogdanov@yadro.com> |
| Date: Fri, 10 Sep 2021 11:41:30 +0300 |
| Subject: scsi: target: sbp: Replace enable attr with ops.enable |
| Patch-mainline: v5.16-rc1 |
| Git-commit: fb00af92e5db24f69bba8c05a2c1926bf4a5cdc6 |
| References: bsc#1191649 |
| |
| Remove tpg/enable attribute. Add fabric ops enable_tpg implementation |
| instead. |
| |
| Link: https://lore.kernel.org/r/20210910084133.17956-5-d.bogdanov@yadro.com |
| Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com> |
| Reviewed-by: Bart Van Assche <bvanassche@acm.org> |
| Reviewed-by: Mike Christie <michael.christie@oracle.com> |
| Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Acked-by: Daniel Wagner <dwagner@suse.de> |
| |
| drivers/target/sbp/sbp_target.c | 30 +++++------------------------- |
| 1 file changed, 5 insertions(+), 25 deletions(-) |
| |
| |
| |
| @@ -2125,32 +2125,13 @@ static ssize_t sbp_tpg_directory_id_stor |
| return count; |
| } |
| |
| -static ssize_t sbp_tpg_enable_show(struct config_item *item, char *page) |
| +static int sbp_enable_tpg(struct se_portal_group *se_tpg, bool enable) |
| { |
| - struct se_portal_group *se_tpg = to_tpg(item); |
| struct sbp_tpg *tpg = container_of(se_tpg, struct sbp_tpg, se_tpg); |
| struct sbp_tport *tport = tpg->tport; |
| - return sprintf(page, "%d\n", tport->enable); |
| -} |
| - |
| -static ssize_t sbp_tpg_enable_store(struct config_item *item, |
| - const char *page, size_t count) |
| -{ |
| - struct se_portal_group *se_tpg = to_tpg(item); |
| - struct sbp_tpg *tpg = container_of(se_tpg, struct sbp_tpg, se_tpg); |
| - struct sbp_tport *tport = tpg->tport; |
| - unsigned long val; |
| int ret; |
| |
| - if (kstrtoul(page, 0, &val) < 0) |
| - return -EINVAL; |
| - if ((val != 0) && (val != 1)) |
| - return -EINVAL; |
| - |
| - if (tport->enable == val) |
| - return count; |
| - |
| - if (val) { |
| + if (enable) { |
| if (sbp_count_se_tpg_luns(&tpg->se_tpg) == 0) { |
| pr_err("Cannot enable a target with no LUNs!\n"); |
| return -EINVAL; |
| @@ -2165,7 +2146,7 @@ static ssize_t sbp_tpg_enable_store(stru |
| spin_unlock_bh(&se_tpg->session_lock); |
| } |
| |
| - tport->enable = val; |
| + tport->enable = enable; |
| |
| ret = sbp_update_unit_directory(tport); |
| if (ret < 0) { |
| @@ -2173,15 +2154,13 @@ static ssize_t sbp_tpg_enable_store(stru |
| return ret; |
| } |
| |
| - return count; |
| + return 0; |
| } |
| |
| CONFIGFS_ATTR(sbp_tpg_, directory_id); |
| -CONFIGFS_ATTR(sbp_tpg_, enable); |
| |
| static struct configfs_attribute *sbp_tpg_base_attrs[] = { |
| &sbp_tpg_attr_directory_id, |
| - &sbp_tpg_attr_enable, |
| NULL, |
| }; |
| |
| @@ -2319,6 +2298,7 @@ static const struct target_core_fabric_o |
| .fabric_make_wwn = sbp_make_tport, |
| .fabric_drop_wwn = sbp_drop_tport, |
| .fabric_make_tpg = sbp_make_tpg, |
| + .fabric_enable_tpg = sbp_enable_tpg, |
| .fabric_drop_tpg = sbp_drop_tpg, |
| .fabric_post_link = sbp_post_link_lun, |
| .fabric_pre_unlink = sbp_pre_unlink_lun, |