From: Trond Myklebust Date: Sat, 14 May 2022 14:08:13 +0000 (-0400) Subject: pNFS/files: Fall back to I/O through the MDS on non-fatal layout errors X-Git-Tag: v5.19-rc1~85^2~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=126966ddedb60bb7bf9f3b341e26ca8ef1019efc;p=thirdparty%2Fkernel%2Flinux.git pNFS/files: Fall back to I/O through the MDS on non-fatal layout errors Only report the error when the server is returning a fatal error, such as ESTALE, EIO, etc... Signed-off-by: Trond Myklebust Signed-off-by: Anna Schumaker --- diff --git a/fs/nfs/filelayout/filelayout.c b/fs/nfs/filelayout/filelayout.c index 76deddab0a8fe..2b2661582bbe6 100644 --- a/fs/nfs/filelayout/filelayout.c +++ b/fs/nfs/filelayout/filelayout.c @@ -839,7 +839,12 @@ fl_pnfs_update_layout(struct inode *ino, lseg = pnfs_update_layout(ino, ctx, pos, count, iomode, strict_iomode, gfp_flags); - if (IS_ERR_OR_NULL(lseg)) + if (IS_ERR(lseg)) { + /* Fall back to MDS on recoverable errors */ + if (!nfs_error_is_fatal_on_server(PTR_ERR(lseg))) + lseg = NULL; + goto out; + } else if (!lseg) goto out; lo = NFS_I(ino)->layout;