On Do, 2021-07-15 at 09:57 -0700, Brian Bunker wrote: > When paths return an ALUA state transition, do not fail those paths. > The expectation is that the transition is short lived until the new > ALUA state is entered. There might not be other paths in an online > state to serve the request which can lead to an unexpected I/O error > on the multipath device. > > Signed-off-by: Brian Bunker <brian@xxxxxxxxxxxxxxx> > Acked-by: Krishna Kant <krishna.kant@xxxxxxxxxxxxxxx> > Acked-by: Seamus Connor <sconnor@xxxxxxxxxxxxxxx> > -- > diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c > index bced42f082b0..28948cc481f9 100644 > --- a/drivers/md/dm-mpath.c > +++ b/drivers/md/dm-mpath.c > @@ -1652,12 +1652,12 @@ static int multipath_end_io(struct dm_target > *ti, struct request *clone, > if (error && blk_path_error(error)) { > struct multipath *m = ti->private; > > - if (error == BLK_STS_RESOURCE) > + if (error == BLK_STS_RESOURCE || error == > BLK_STS_AGAIN) > r = DM_ENDIO_DELAY_REQUEUE; > else > r = DM_ENDIO_REQUEUE; > > - if (pgpath) > + if (pgpath && (error != BLK_STS_AGAIN)) > fail_path(pgpath); > > if (!atomic_read(&m->nr_valid_paths) && > -- > > Thanks, > Brian > > Brian Bunker > PURE Storage, Inc. > brian@xxxxxxxxxxxxxxx > Reviewed-by: Martin Wilck <mwilck@xxxxxxxx>