On Tue, 2013-12-17 at 09:18 +0100, Hannes Reinecke wrote:
> During state transition we should be storing both the original
> and the pending state.
> 
> Signed-off-by: Hannes Reinecke <[email protected]>
> ---
>  drivers/target/target_core_alua.c | 15 ++++++++++-----
>  include/target/target_core_base.h |  2 ++
>  2 files changed, 12 insertions(+), 5 deletions(-)
> 

Applied to for-next.

--nab

> diff --git a/drivers/target/target_core_alua.c 
> b/drivers/target/target_core_alua.c
> index 738244b..4805e97 100644
> --- a/drivers/target/target_core_alua.c
> +++ b/drivers/target/target_core_alua.c
> @@ -812,12 +812,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_access_status = (explicit) ?
> @@ -898,13 +901,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 6e95281..6758e81 100644
> --- a/include/target/target_core_base.h
> +++ b/include/target/target_core_base.h
> @@ -284,6 +284,8 @@ 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_pending_state;
> +     int     tg_pt_gp_alua_previous_state;
>       int     tg_pt_gp_alua_access_status;
>       int     tg_pt_gp_alua_access_type;
>       int     tg_pt_gp_nonop_delay_msecs;


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to