From: Hannes Reinecke <hare@suse.de>
To: Nic Bellinger <nab@linux-iscsi.org>
Cc: target-devel@vger.kernel.org, linux-scsi@vger.kernel.org,
Hannes Reinecke <hare@suse.de>
Subject: [PATCH 08/18] target_core_configfs: Split up ALUA access type
Date: Tue, 19 Nov 2013 09:07:53 +0100 [thread overview]
Message-ID: <1384848483-3771-9-git-send-email-hare@suse.de> (raw)
In-Reply-To: <1384848483-3771-1-git-send-email-hare@suse.de>
Instead of lumping two independent values into one attribute
we should be using on attribute per value.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
drivers/target/target_core_alua.c | 46 --------------------
drivers/target/target_core_alua.h | 3 --
drivers/target/target_core_configfs.c | 79 +++++++++++++++++------------------
3 files changed, 38 insertions(+), 90 deletions(-)
diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
index 26e3c6d..c4d73a4 100644
--- a/drivers/target/target_core_alua.c
+++ b/drivers/target/target_core_alua.c
@@ -1754,52 +1754,6 @@ ssize_t core_alua_store_tg_pt_gp_info(
return count;
}
-ssize_t core_alua_show_access_type(
- struct t10_alua_tg_pt_gp *tg_pt_gp,
- char *page)
-{
- if ((tg_pt_gp->tg_pt_gp_alua_access_type & TPGS_EXPLICIT_ALUA) &&
- (tg_pt_gp->tg_pt_gp_alua_access_type & TPGS_IMPLICIT_ALUA))
- return sprintf(page, "Implicit and Explicit\n");
- else if (tg_pt_gp->tg_pt_gp_alua_access_type & TPGS_IMPLICIT_ALUA)
- return sprintf(page, "Implicit\n");
- else if (tg_pt_gp->tg_pt_gp_alua_access_type & TPGS_EXPLICIT_ALUA)
- return sprintf(page, "Explicit\n");
- else
- return sprintf(page, "None\n");
-}
-
-ssize_t core_alua_store_access_type(
- struct t10_alua_tg_pt_gp *tg_pt_gp,
- const char *page,
- size_t count)
-{
- unsigned long tmp;
- int ret;
-
- ret = kstrtoul(page, 0, &tmp);
- if (ret < 0) {
- pr_err("Unable to extract alua_access_type\n");
- return ret;
- }
- if ((tmp != 0) && (tmp != 1) && (tmp != 2) && (tmp != 3)) {
- pr_err("Illegal value for alua_access_type:"
- " %lu\n", tmp);
- return -EINVAL;
- }
- if (tmp == 3)
- tg_pt_gp->tg_pt_gp_alua_access_type =
- TPGS_IMPLICIT_ALUA | TPGS_EXPLICIT_ALUA;
- else if (tmp == 2)
- tg_pt_gp->tg_pt_gp_alua_access_type = TPGS_EXPLICIT_ALUA;
- else if (tmp == 1)
- tg_pt_gp->tg_pt_gp_alua_access_type = TPGS_IMPLICIT_ALUA;
- else
- tg_pt_gp->tg_pt_gp_alua_access_type = 0;
-
- return count;
-}
-
ssize_t core_alua_show_nonop_delay_msecs(
struct t10_alua_tg_pt_gp *tg_pt_gp,
char *page)
diff --git a/drivers/target/target_core_alua.h b/drivers/target/target_core_alua.h
index 24ddf85..03955a9 100644
--- a/drivers/target/target_core_alua.h
+++ b/drivers/target/target_core_alua.h
@@ -115,9 +115,6 @@ extern void __core_alua_attach_tg_pt_gp_mem(struct t10_alua_tg_pt_gp_member *,
extern ssize_t core_alua_show_tg_pt_gp_info(struct se_port *, char *);
extern ssize_t core_alua_store_tg_pt_gp_info(struct se_port *, const char *,
size_t);
-extern ssize_t core_alua_show_access_type(struct t10_alua_tg_pt_gp *, char *);
-extern ssize_t core_alua_store_access_type(struct t10_alua_tg_pt_gp *,
- const char *, size_t);
extern ssize_t core_alua_show_nonop_delay_msecs(struct t10_alua_tg_pt_gp *,
char *);
extern ssize_t core_alua_store_nonop_delay_msecs(struct t10_alua_tg_pt_gp *,
diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c
index dcceecf..6f01a1e 100644
--- a/drivers/target/target_core_configfs.c
+++ b/drivers/target/target_core_configfs.c
@@ -2114,39 +2114,15 @@ static ssize_t target_core_alua_tg_pt_gp_store_attr_alua_access_status(
SE_DEV_ALUA_TG_PT_ATTR(alua_access_status, S_IRUGO | S_IWUSR);
-/*
- * alua_access_type
- */
-static ssize_t target_core_alua_tg_pt_gp_show_attr_alua_access_type(
- struct t10_alua_tg_pt_gp *tg_pt_gp,
- char *page)
-{
- return core_alua_show_access_type(tg_pt_gp, page);
-}
-
-static ssize_t target_core_alua_tg_pt_gp_store_attr_alua_access_type(
- struct t10_alua_tg_pt_gp *tg_pt_gp,
- const char *page,
- size_t count)
-{
- return core_alua_store_access_type(tg_pt_gp, page, count);
-}
-
-SE_DEV_ALUA_TG_PT_ATTR(alua_access_type, S_IRUGO | S_IWUSR);
-
-/*
- * alua_supported_states
- */
-
#define SE_DEV_ALUA_SUPPORT_STATE_SHOW(_name, _var, _bit) \
-static ssize_t target_core_alua_tg_pt_gp_show_attr_alua_support_##_name( \
+static ssize_t target_core_alua_tg_pt_gp_show_attr_alua_##_name( \
struct t10_alua_tg_pt_gp *t, char *p) \
{ \
return sprintf(p, "%d\n", !!(t->_var & _bit)); \
}
#define SE_DEV_ALUA_SUPPORT_STATE_STORE(_name, _var, _bit) \
-static ssize_t target_core_alua_tg_pt_gp_store_attr_alua_support_##_name(\
+static ssize_t target_core_alua_tg_pt_gp_store_attr_alua_##_name( \
struct t10_alua_tg_pt_gp *t, const char *p, size_t c) \
{ \
unsigned long tmp; \
@@ -2176,45 +2152,65 @@ static ssize_t target_core_alua_tg_pt_gp_store_attr_alua_support_##_name(\
return c; \
}
-SE_DEV_ALUA_SUPPORT_STATE_SHOW(transitioning,
+/*
+ * alua_access_type
+ */
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(access_implicit,
+ tg_pt_gp_alua_access_type, TPGS_IMPLICIT_ALUA);
+SE_DEV_ALUA_SUPPORT_STATE_STORE(access_implicit,
+ tg_pt_gp_alua_access_type, TPGS_IMPLICIT_ALUA);
+SE_DEV_ALUA_TG_PT_ATTR(alua_access_implicit, S_IRUGO | S_IWUSR);
+
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(access_explicit,
+ tg_pt_gp_alua_access_type, TPGS_EXPLICIT_ALUA);
+SE_DEV_ALUA_SUPPORT_STATE_STORE(access_explicit,
+ tg_pt_gp_alua_access_type, TPGS_EXPLICIT_ALUA);
+SE_DEV_ALUA_TG_PT_ATTR(alua_access_explicit, S_IRUGO | S_IWUSR);
+
+
+/*
+ * alua_supported_states
+ */
+
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(support_transitioning,
tg_pt_gp_alua_supported_states, ALUA_T_SUP);
-SE_DEV_ALUA_SUPPORT_STATE_STORE(transitioning,
+SE_DEV_ALUA_SUPPORT_STATE_STORE(support_transitioning,
tg_pt_gp_alua_supported_states, ALUA_T_SUP);
SE_DEV_ALUA_TG_PT_ATTR(alua_support_transitioning, S_IRUGO | S_IWUSR);
-SE_DEV_ALUA_SUPPORT_STATE_SHOW(offline,
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(support_offline,
tg_pt_gp_alua_supported_states, ALUA_O_SUP);
-SE_DEV_ALUA_SUPPORT_STATE_STORE(offline,
+SE_DEV_ALUA_SUPPORT_STATE_STORE(support_offline,
tg_pt_gp_alua_supported_states, ALUA_O_SUP);
SE_DEV_ALUA_TG_PT_ATTR(alua_support_offline, S_IRUGO | S_IWUSR);
-SE_DEV_ALUA_SUPPORT_STATE_SHOW(lba_dependent,
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(support_lba_dependent,
tg_pt_gp_alua_supported_states, ALUA_LBD_SUP);
-SE_DEV_ALUA_SUPPORT_STATE_STORE(lba_dependent,
+SE_DEV_ALUA_SUPPORT_STATE_STORE(support_lba_dependent,
tg_pt_gp_alua_supported_states, ALUA_LBD_SUP);
SE_DEV_ALUA_TG_PT_ATTR(alua_support_lba_dependent, S_IRUGO | S_IWUSR);
-SE_DEV_ALUA_SUPPORT_STATE_SHOW(unavailable,
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(support_unavailable,
tg_pt_gp_alua_supported_states, ALUA_U_SUP);
-SE_DEV_ALUA_SUPPORT_STATE_STORE(unavailable,
+SE_DEV_ALUA_SUPPORT_STATE_STORE(support_unavailable,
tg_pt_gp_alua_supported_states, ALUA_U_SUP);
SE_DEV_ALUA_TG_PT_ATTR(alua_support_unavailable, S_IRUGO | S_IWUSR);
-SE_DEV_ALUA_SUPPORT_STATE_SHOW(standby,
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(support_standby,
tg_pt_gp_alua_supported_states, ALUA_S_SUP);
-SE_DEV_ALUA_SUPPORT_STATE_STORE(standby,
+SE_DEV_ALUA_SUPPORT_STATE_STORE(support_standby,
tg_pt_gp_alua_supported_states, ALUA_S_SUP);
SE_DEV_ALUA_TG_PT_ATTR(alua_support_standby, S_IRUGO | S_IWUSR);
-SE_DEV_ALUA_SUPPORT_STATE_SHOW(active_optimized,
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(support_active_optimized,
tg_pt_gp_alua_supported_states, ALUA_AO_SUP);
-SE_DEV_ALUA_SUPPORT_STATE_STORE(active_optimized,
+SE_DEV_ALUA_SUPPORT_STATE_STORE(support_active_optimized,
tg_pt_gp_alua_supported_states, ALUA_AO_SUP);
SE_DEV_ALUA_TG_PT_ATTR(alua_support_active_optimized, S_IRUGO | S_IWUSR);
-SE_DEV_ALUA_SUPPORT_STATE_SHOW(active_nonoptimized,
+SE_DEV_ALUA_SUPPORT_STATE_SHOW(support_active_nonoptimized,
tg_pt_gp_alua_supported_states, ALUA_AN_SUP);
-SE_DEV_ALUA_SUPPORT_STATE_STORE(active_nonoptimized,
+SE_DEV_ALUA_SUPPORT_STATE_STORE(support_active_nonoptimized,
tg_pt_gp_alua_supported_states, ALUA_AN_SUP);
SE_DEV_ALUA_TG_PT_ATTR(alua_support_active_nonoptimized, S_IRUGO | S_IWUSR);
@@ -2437,7 +2433,8 @@ CONFIGFS_EATTR_OPS(target_core_alua_tg_pt_gp, t10_alua_tg_pt_gp,
static struct configfs_attribute *target_core_alua_tg_pt_gp_attrs[] = {
&target_core_alua_tg_pt_gp_alua_access_state.attr,
&target_core_alua_tg_pt_gp_alua_access_status.attr,
- &target_core_alua_tg_pt_gp_alua_access_type.attr,
+ &target_core_alua_tg_pt_gp_alua_access_implicit.attr,
+ &target_core_alua_tg_pt_gp_alua_access_explicit.attr,
&target_core_alua_tg_pt_gp_alua_support_transitioning.attr,
&target_core_alua_tg_pt_gp_alua_support_offline.attr,
&target_core_alua_tg_pt_gp_alua_support_lba_dependent.attr,
--
1.7.12.4
next prev parent reply other threads:[~2013-11-19 8:07 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-19 8:07 [PATCHv2 00/18] ALUA update and Referrals support Hannes Reinecke
2013-11-19 8:07 ` [PATCH 01/18] target core: rename (ex,im)plict -> (ex,im)plicit Hannes Reinecke
2013-11-20 19:29 ` Nicholas A. Bellinger
2013-11-19 8:07 ` [PATCH 02/18] target_core_alua: spellcheck Hannes Reinecke
2013-11-20 19:30 ` Nicholas A. Bellinger
2013-11-19 8:07 ` [PATCH 03/18] target_core_alua: Rename ALUA_ACCESS_STATE_OPTIMIZED Hannes Reinecke
2013-11-20 19:30 ` Nicholas A. Bellinger
2013-11-19 8:07 ` [PATCH 04/18] target_core_alua: Store supported ALUA states Hannes Reinecke
2013-11-20 19:31 ` Nicholas A. Bellinger
2013-11-19 8:07 ` [PATCH 05/18] target_core_alua: Make supported states configurable Hannes Reinecke
2013-11-20 19:36 ` Nicholas A. Bellinger
2013-11-19 8:07 ` [PATCH 06/18] target_core_configfs: split up ALUA supported states Hannes Reinecke
2013-11-20 19:39 ` Nicholas A. Bellinger
2013-11-19 8:07 ` [PATCH 07/18] target_core_configfs: Verbose ALUA state display Hannes Reinecke
2013-11-19 8:07 ` Hannes Reinecke [this message]
2013-11-19 8:07 ` [PATCH 09/18] target_core: Rename alua_access_type in alua_mgmt_type Hannes Reinecke
2013-11-19 8:07 ` [PATCH 10/18] target_core: Rename alua_access_status to alua_status_modification Hannes Reinecke
2013-11-19 8:07 ` [PATCH 11/18] target_core_alua: Validate ALUA state transition Hannes Reinecke
2013-11-19 8:07 ` [PATCH 12/18] target_core_alua: Allocate ALUA metadata on demand Hannes Reinecke
2013-11-19 8:07 ` [PATCH 13/18] target_core_alua: store old and pending ALUA state Hannes Reinecke
2013-11-19 8:07 ` [PATCH 14/18] target_core_alua: Use workqueue for ALUA transitioning Hannes Reinecke
2013-11-19 8:08 ` [PATCH 15/18] target_core: simplify scsi_name_len calculation Hannes Reinecke
2013-11-19 8:08 ` [PATCH 16/18] target_core_spc: Include target device descriptor in VPD page 83 Hannes Reinecke
2013-11-19 8:08 ` [PATCH 17/18] target_core_alua: Referrals infrastructure Hannes Reinecke
2013-11-19 8:08 ` [PATCH 18/18] target_core_alua: Referrals configfs integration Hannes Reinecke
2013-11-19 23:42 ` [PATCHv2 00/18] ALUA update and Referrals support Nicholas A. Bellinger
2013-11-20 0:06 ` Nicholas A. Bellinger
2013-11-20 7:44 ` Hannes Reinecke
2013-11-20 19:22 ` Nicholas A. Bellinger
2013-12-13 23:43 ` Nicholas A. Bellinger
2013-12-17 8:20 ` Hannes Reinecke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1384848483-3771-9-git-send-email-hare@suse.de \
--to=hare@suse.de \
--cc=linux-scsi@vger.kernel.org \
--cc=nab@linux-iscsi.org \
--cc=target-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.