[dm-devel] [PATCH] [PATCH] libmultipath: return 'ghost' state when port is in transition
Brian Bunker
brian at purestorage.com
Fri Mar 3 17:18:15 UTC 2023
> On Mar 2, 2023, at 11:46 PM, Martin Wilck <mwilck at suse.com> wrote:
>
> 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>
Hello Martin,
Doesn’t "something in between failed and up” semantics describe ALUA state transitioning pretty well?
Thanks,
Brian
>
>
>
>> ---
>> 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