On Wed, Jul 02, 2025 at 12:09:33AM +0200, Martin Wilck wrote:
> After manually failing some paths and then reinstating them, the
> following pattern of events has been observed:
> 
> [1535664.790944] localhost multipathd[26335]: mpathc: reinstate path 8:48 
> (operator)
> [1535664.791422] localhost multipathd[26335]: mpathc: devmap event #4
> [1535664.793140] localhost kernel: device-mapper: multipath: 254:6: 
> Reinstating path 8:48.
> [1535665.219024] localhost multipathd[26335]: mpathc: reload [0 125829120 
> multipath 1 queue_if_no_path 1 alua 2 1 queue-length 0 2 1 8:144 1 8:240 1 
> queue-length 0 2 1 8:48 1 65:80 1]
> [1535665.290268] localhost multipathd[26335]: sync_map_state: failing sdd 
> state 2 dmstate 2
> [1535665.292442] localhost kernel: device-mapper: multipath: 254:6: Failing 
> path 8:48.
> [1535669.291320] localhost multipathd[26335]: sdd: tur state = up
> [1535669.291531] localhost multipathd[26335]: mpathc: sdd - tur checker 
> reports path is up
> [1535669.291531] localhost multipathd[26335]: 8:48: reinstated
> 
> We see that sdd (8:48) is first reinstated, then failed again during
> the reload operation, and finally reinstated in the checker.
> 
> This happens because multipathd doesn't update the internal path state when it
> calls dm_reinstate_path(). If sync_map_state() is called, it will see the path
> in PATH_DOWN state and fail the path again.
> 
> Fix it by setting pp->state to PATH_UNCHECKED.
> 
> Signed-off-by: Martin Wilck <mwi...@suse.com>

Reviewed-by: Benjamin Marzinski <bmarz...@redhat.com>


Reply via email to