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 13/18] target_core_alua: store old and pending ALUA state
Date: Tue, 19 Nov 2013 09:07:58 +0100 [thread overview]
Message-ID: <1384848483-3771-14-git-send-email-hare@suse.de> (raw)
In-Reply-To: <1384848483-3771-1-git-send-email-hare@suse.de>
During state transition we should be storing both the original
and the pending state.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
drivers/target/target_core_alua.c | 15 ++++++++++-----
include/target/target_core_base.h | 6 ++++--
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
index 3fa535c..5de2ea1 100644
--- a/drivers/target/target_core_alua.c
+++ b/drivers/target/target_core_alua.c
@@ -820,12 +820,15 @@ static int core_alua_do_transition_tg_pt(
struct se_lun_acl *lacl;
struct se_port *port;
struct t10_alua_tg_pt_gp_member *mem;
- int old_state = 0;
+
/*
* Save the old primary ALUA access state, and set the current state
* to ALUA_ACCESS_STATE_TRANSITION.
*/
- old_state = atomic_read(&tg_pt_gp->tg_pt_gp_alua_access_state);
+ tg_pt_gp->tg_pt_gp_alua_previous_state =
+ atomic_read(&tg_pt_gp->tg_pt_gp_alua_access_state);
+ tg_pt_gp->tg_pt_gp_alua_pending_state = new_state;
+
atomic_set(&tg_pt_gp->tg_pt_gp_alua_access_state,
ALUA_ACCESS_STATE_TRANSITION);
tg_pt_gp->tg_pt_gp_alua_status_modification = (explicit) ?
@@ -906,13 +909,15 @@ static int core_alua_do_transition_tg_pt(
/*
* Set the current primary ALUA access state to the requested new state
*/
- atomic_set(&tg_pt_gp->tg_pt_gp_alua_access_state, new_state);
+ atomic_set(&tg_pt_gp->tg_pt_gp_alua_access_state,
+ tg_pt_gp->tg_pt_gp_alua_pending_state);
pr_debug("Successful %s ALUA transition TG PT Group: %s ID: %hu"
" from primary access state %s to %s\n", (explicit) ? "explicit" :
"implicit", config_item_name(&tg_pt_gp->tg_pt_gp_group.cg_item),
- tg_pt_gp->tg_pt_gp_id, core_alua_dump_state(old_state),
- core_alua_dump_state(new_state));
+ tg_pt_gp->tg_pt_gp_id,
+ core_alua_dump_state(tg_pt_gp->tg_pt_gp_alua_previous_state),
+ core_alua_dump_state(tg_pt_gp->tg_pt_gp_alua_pending_state));
return 0;
}
diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h
index faf7de0..b8b7ec8 100644
--- a/include/target/target_core_base.h
+++ b/include/target/target_core_base.h
@@ -283,8 +283,10 @@ struct t10_alua_lu_gp_member {
struct t10_alua_tg_pt_gp {
u16 tg_pt_gp_id;
int tg_pt_gp_valid_id;
- int tg_pt_gp_alua_supported_states;
- int tg_pt_gp_alua_status_modification;
+ u8 tg_pt_gp_alua_pending_state;
+ u8 tg_pt_gp_alua_previous_state;
+ u8 tg_pt_gp_alua_supported_states;
+ u8 tg_pt_gp_alua_status_modification;
int tg_pt_gp_alua_mgmt_type;
int tg_pt_gp_nonop_delay_msecs;
int tg_pt_gp_trans_delay_msecs;
--
1.7.12.4
next prev parent reply other threads:[~2013-11-19 8:08 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 ` [PATCH 08/18] target_core_configfs: Split up ALUA access type Hannes Reinecke
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 ` Hannes Reinecke [this message]
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-14-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).