pNFS/files: Handle RDMA connection errors correctly
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 18 May 2022 21:08:58 +0000 (17:08 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Sun, 10 Jul 2022 23:00:53 +0000 (19:00 -0400)
The RPC/RDMA driver will return -EPROTO and -ENODEV as connection errors
under certain circumstances. Make sure that we handle them correctly and
avoid cycling forever in a LAYOUTGET/LAYOUTRETURN loop.

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

index 2b26615..ad34a33 100644 (file)
@@ -181,6 +181,8 @@ static int filelayout_async_handle_error(struct rpc_task *task,
        case -EIO:
        case -ETIMEDOUT:
        case -EPIPE:
+       case -EPROTO:
+       case -ENODEV:
                dprintk("%s DS connection error %d\n", __func__,
                        task->tk_status);
                nfs4_mark_deviceid_unavailable(devid);