diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2020-08-11 13:36:32 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2020-08-12 11:20:29 -0400 |
commit | 563c53e73b8b6ec842828736f77e633f7b0911e9 (patch) | |
tree | 2fc1fe8cdc849167b3cd0632ca799586d823cce6 /fs/nfs/pnfs.h | |
parent | a5032910c5e542dddedeaa6500e5eab3f1175384 (diff) | |
download | linux-stable-563c53e73b8b6ec842828736f77e633f7b0911e9.tar.gz linux-stable-563c53e73b8b6ec842828736f77e633f7b0911e9.tar.bz2 linux-stable-563c53e73b8b6ec842828736f77e633f7b0911e9.zip |
NFS: Fix flexfiles read failover
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>
Diffstat (limited to 'fs/nfs/pnfs.h')
-rw-r--r-- | fs/nfs/pnfs.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index 8e0ada581b92..2661c44c62db 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h @@ -311,7 +311,7 @@ int _pnfs_return_layout(struct inode *); int pnfs_commit_and_return_layout(struct inode *); void pnfs_ld_write_done(struct nfs_pgio_header *); void pnfs_ld_read_done(struct nfs_pgio_header *); -void pnfs_read_resend_pnfs(struct nfs_pgio_header *); +void pnfs_read_resend_pnfs(struct nfs_pgio_header *, unsigned int mirror_idx); struct pnfs_layout_segment *pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, loff_t pos, |