[dm-devel] [PATCH] [PATCH] libmultipath: return 'ghost' state when port is in transition

Martin Wilck mwilck at suse.com
Fri Mar 3 07:46:24 UTC 2023


On Tue, 2023-02-21 at 12:56 -0800, Brian Bunker wrote:
> A test unit ready command sent on a path in standby state will not
> result
> in a failed path. The same should be true for a path in the
> transitioning state.
> 
> Signed-off-by: Brian Bunker brian at purestorage.com

In general, I'm somewhat reluctant to change things in this area.
GHOST state is not clearly defined, unfortunately; it has evolved 
from the original "inq succeeds but tur fails" to a somewhat hand-
waving "something in between failed and up" semantics. 

Internally, multipathd treats GHOST paths almost exactly like UP paths,
except that they get a different priority assigned. If for whatever
reason multipathd switches to a PG in this state, the path state is
highly likely to switch to FAILED soon after, as regular IO will fail
on these paths; at least without explicit ALUA. Is that what we want to
see for TRANSITIONING state?

But yes, this change is in the spirit of 5da642f ("Return 'ghost' state
when port is in standby").

CC'ing Ben for confirmation.

Reviewed-by: Martin Wilck <mwilck at suse.com>

> ---
>  libmultipath/checkers/tur.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/libmultipath/checkers/tur.c
> b/libmultipath/checkers/tur.c
> index 551dc4f0..fff7987b 100644
> --- a/libmultipath/checkers/tur.c
> +++ b/libmultipath/checkers/tur.c
> @@ -179,10 +179,11 @@ retry:
>                 else if (key == 0x2) {
>                         /* Not Ready */
>                         /* Note: Other ALUA states are either UP or
> DOWN */
> -                       if( asc == 0x04 && ascq == 0x0b){
> +                       if (asc == 0x04 &&
> +                           (ascq == 0x0b || ascq == 0x0a)) {
>                                 /*
>                                  * LOGICAL UNIT NOT ACCESSIBLE,
> -                                * TARGET PORT IN STANDBY STATE
> +                                * TARGET PORT IN STANDBY OR
> TRANSITION STATE
>                                  */
>                                 *msgid = CHECKER_MSGID_GHOST;
>                                 return PATH_GHOST;
> --
> 
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://listman.redhat.com/mailman/listinfo/dm-devel
> 



More information about the dm-devel mailing list