forked from Minki/linux
scsi: target: qla2xxx: Replace enable attr with ops.enable
Remove tpg/enable attribute. Add fabric ops enable_tpg implementation instead. Link: https://lore.kernel.org/r/20210910084133.17956-4-d.bogdanov@yadro.com Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com> 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>
This commit is contained in:
parent
382731ec01
commit
cb8717a720
@ -915,40 +915,17 @@ static struct configfs_attribute *tcm_qla2xxx_tpg_attrib_attrs[] = {
|
||||
|
||||
/* End items for tcm_qla2xxx_tpg_attrib_cit */
|
||||
|
||||
static ssize_t tcm_qla2xxx_tpg_enable_show(struct config_item *item,
|
||||
char *page)
|
||||
static int tcm_qla2xxx_enable_tpg(struct se_portal_group *se_tpg,
|
||||
bool enable)
|
||||
{
|
||||
struct se_portal_group *se_tpg = to_tpg(item);
|
||||
struct tcm_qla2xxx_tpg *tpg = container_of(se_tpg,
|
||||
struct tcm_qla2xxx_tpg, se_tpg);
|
||||
|
||||
return snprintf(page, PAGE_SIZE, "%d\n",
|
||||
atomic_read(&tpg->lport_tpg_enabled));
|
||||
}
|
||||
|
||||
static ssize_t tcm_qla2xxx_tpg_enable_store(struct config_item *item,
|
||||
const char *page, size_t count)
|
||||
{
|
||||
struct se_portal_group *se_tpg = to_tpg(item);
|
||||
struct se_wwn *se_wwn = se_tpg->se_tpg_wwn;
|
||||
struct tcm_qla2xxx_lport *lport = container_of(se_wwn,
|
||||
struct tcm_qla2xxx_lport, lport_wwn);
|
||||
struct scsi_qla_host *vha = lport->qla_vha;
|
||||
struct tcm_qla2xxx_tpg *tpg = container_of(se_tpg,
|
||||
struct tcm_qla2xxx_tpg, se_tpg);
|
||||
unsigned long op;
|
||||
int rc;
|
||||
|
||||
rc = kstrtoul(page, 0, &op);
|
||||
if (rc < 0) {
|
||||
pr_err("kstrtoul() returned %d\n", rc);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((op != 1) && (op != 0)) {
|
||||
pr_err("Illegal value for tpg_enable: %lu\n", op);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (op) {
|
||||
if (enable) {
|
||||
if (atomic_read(&tpg->lport_tpg_enabled))
|
||||
return -EEXIST;
|
||||
|
||||
@ -956,14 +933,14 @@ static ssize_t tcm_qla2xxx_tpg_enable_store(struct config_item *item,
|
||||
qlt_enable_vha(vha);
|
||||
} else {
|
||||
if (!atomic_read(&tpg->lport_tpg_enabled))
|
||||
return count;
|
||||
return 0;
|
||||
|
||||
atomic_set(&tpg->lport_tpg_enabled, 0);
|
||||
qlt_stop_phase1(vha->vha_tgt.qla_tgt);
|
||||
qlt_stop_phase2(vha->vha_tgt.qla_tgt);
|
||||
}
|
||||
|
||||
return count;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t tcm_qla2xxx_tpg_dynamic_sessions_show(struct config_item *item,
|
||||
@ -1004,12 +981,10 @@ static ssize_t tcm_qla2xxx_tpg_fabric_prot_type_show(struct config_item *item,
|
||||
return sprintf(page, "%d\n", tpg->tpg_attrib.fabric_prot_type);
|
||||
}
|
||||
|
||||
CONFIGFS_ATTR(tcm_qla2xxx_tpg_, enable);
|
||||
CONFIGFS_ATTR_RO(tcm_qla2xxx_tpg_, dynamic_sessions);
|
||||
CONFIGFS_ATTR(tcm_qla2xxx_tpg_, fabric_prot_type);
|
||||
|
||||
static struct configfs_attribute *tcm_qla2xxx_tpg_attrs[] = {
|
||||
&tcm_qla2xxx_tpg_attr_enable,
|
||||
&tcm_qla2xxx_tpg_attr_dynamic_sessions,
|
||||
&tcm_qla2xxx_tpg_attr_fabric_prot_type,
|
||||
NULL,
|
||||
@ -1083,35 +1058,17 @@ static void tcm_qla2xxx_drop_tpg(struct se_portal_group *se_tpg)
|
||||
kfree(tpg);
|
||||
}
|
||||
|
||||
static ssize_t tcm_qla2xxx_npiv_tpg_enable_show(struct config_item *item,
|
||||
char *page)
|
||||
static int tcm_qla2xxx_npiv_enable_tpg(struct se_portal_group *se_tpg,
|
||||
bool enable)
|
||||
{
|
||||
return tcm_qla2xxx_tpg_enable_show(item, page);
|
||||
}
|
||||
|
||||
static ssize_t tcm_qla2xxx_npiv_tpg_enable_store(struct config_item *item,
|
||||
const char *page, size_t count)
|
||||
{
|
||||
struct se_portal_group *se_tpg = to_tpg(item);
|
||||
struct se_wwn *se_wwn = se_tpg->se_tpg_wwn;
|
||||
struct tcm_qla2xxx_lport *lport = container_of(se_wwn,
|
||||
struct tcm_qla2xxx_lport, lport_wwn);
|
||||
struct scsi_qla_host *vha = lport->qla_vha;
|
||||
struct tcm_qla2xxx_tpg *tpg = container_of(se_tpg,
|
||||
struct tcm_qla2xxx_tpg, se_tpg);
|
||||
unsigned long op;
|
||||
int rc;
|
||||
|
||||
rc = kstrtoul(page, 0, &op);
|
||||
if (rc < 0) {
|
||||
pr_err("kstrtoul() returned %d\n", rc);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((op != 1) && (op != 0)) {
|
||||
pr_err("Illegal value for tpg_enable: %lu\n", op);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (op) {
|
||||
if (enable) {
|
||||
if (atomic_read(&tpg->lport_tpg_enabled))
|
||||
return -EEXIST;
|
||||
|
||||
@ -1119,23 +1076,16 @@ static ssize_t tcm_qla2xxx_npiv_tpg_enable_store(struct config_item *item,
|
||||
qlt_enable_vha(vha);
|
||||
} else {
|
||||
if (!atomic_read(&tpg->lport_tpg_enabled))
|
||||
return count;
|
||||
return 0;
|
||||
|
||||
atomic_set(&tpg->lport_tpg_enabled, 0);
|
||||
qlt_stop_phase1(vha->vha_tgt.qla_tgt);
|
||||
qlt_stop_phase2(vha->vha_tgt.qla_tgt);
|
||||
}
|
||||
|
||||
return count;
|
||||
return 0;
|
||||
}
|
||||
|
||||
CONFIGFS_ATTR(tcm_qla2xxx_npiv_tpg_, enable);
|
||||
|
||||
static struct configfs_attribute *tcm_qla2xxx_npiv_tpg_attrs[] = {
|
||||
&tcm_qla2xxx_npiv_tpg_attr_enable,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static struct se_portal_group *tcm_qla2xxx_npiv_make_tpg(struct se_wwn *wwn,
|
||||
const char *name)
|
||||
{
|
||||
@ -1878,6 +1828,7 @@ static const struct target_core_fabric_ops tcm_qla2xxx_ops = {
|
||||
.fabric_make_wwn = tcm_qla2xxx_make_lport,
|
||||
.fabric_drop_wwn = tcm_qla2xxx_drop_lport,
|
||||
.fabric_make_tpg = tcm_qla2xxx_make_tpg,
|
||||
.fabric_enable_tpg = tcm_qla2xxx_enable_tpg,
|
||||
.fabric_drop_tpg = tcm_qla2xxx_drop_tpg,
|
||||
.fabric_init_nodeacl = tcm_qla2xxx_init_nodeacl,
|
||||
|
||||
@ -1918,11 +1869,11 @@ static const struct target_core_fabric_ops tcm_qla2xxx_npiv_ops = {
|
||||
.fabric_make_wwn = tcm_qla2xxx_npiv_make_lport,
|
||||
.fabric_drop_wwn = tcm_qla2xxx_npiv_drop_lport,
|
||||
.fabric_make_tpg = tcm_qla2xxx_npiv_make_tpg,
|
||||
.fabric_enable_tpg = tcm_qla2xxx_npiv_enable_tpg,
|
||||
.fabric_drop_tpg = tcm_qla2xxx_drop_tpg,
|
||||
.fabric_init_nodeacl = tcm_qla2xxx_init_nodeacl,
|
||||
|
||||
.tfc_wwn_attrs = tcm_qla2xxx_wwn_attrs,
|
||||
.tfc_tpg_base_attrs = tcm_qla2xxx_npiv_tpg_attrs,
|
||||
};
|
||||
|
||||
static int tcm_qla2xxx_register_configfs(void)
|
||||
|
Loading…
Reference in New Issue
Block a user