pNFS/files: Fall back to I/O through the MDS on non-fatal layout errors
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sat, 14 May 2022 14:08:13 +0000 (10:08 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 17 May 2022 16:53:33 +0000 (12:53 -0400)
Only report the error when the server is returning a fatal error, such
as ESTALE, EIO, etc...

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/filelayout/filelayout.c

index 76dedda..2b26615 100644 (file)
@@ -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;