NFS: Fix flexfiles read failover
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 11 Aug 2020 17:36:32 +0000 (13:36 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Aug 2020 11:07:41 +0000 (13:07 +0200)
commitee7798b00f97e14bc9c91d8ac47e207386930907
tree756367fe46fbb339c386ca74cce299b48389f704
parent4476b8282f0bdbf21c8a1e5d783ee11a0edfcaf2
NFS: Fix flexfiles read failover

[ Upstream commit 563c53e73b8b6ec842828736f77e633f7b0911e9 ]

The current mirrored read failover code is correctly resetting the mirror
index between failed reads, however it is not able to actually flip the
RPC call over to the next RPC client.
The end result is that we keep resending the RPC call to the same client
over and over.

The fix is to use the pnfs_read_resend_pnfs() mechanism to schedule a
new RPC call, but we need to add the ability to pass in a mirror
index so that we always retry the next mirror in the list.

Fixes: 166bd5b889ac ("pNFS/flexfiles: Fix layoutstats handling during read failovers")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/nfs/flexfilelayout/flexfilelayout.c
fs/nfs/pnfs.c
fs/nfs/pnfs.h