OSDN Git Service

scsi: target: qla2xxx: Replace enable attr with ops.enable
authorDmitry Bogdanov <d.bogdanov@yadro.com>
Fri, 10 Sep 2021 08:41:29 +0000 (11:41 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 5 Oct 2021 03:27:38 +0000 (23:27 -0400)
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>
drivers/scsi/qla2xxx/tcm_qla2xxx.c

index 03de1bc..8fa0056 100644 (file)
@@ -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)
-{
-       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)
+static int tcm_qla2xxx_enable_tpg(struct se_portal_group *se_tpg,
+                                 bool enable)
 {
-       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)
-{
-       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)
+static int tcm_qla2xxx_npiv_enable_tpg(struct se_portal_group *se_tpg,
+                                   bool enable)
 {
-       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)