I noticed that when rpcrdma_xprt_connect() returns -ENOMEM,
instead of retrying the connect, the RPC client kills the
RPC task that requested the connection. We want a retry
here.
Fixes: cb586decbb88 ("xprtrdma: Make sendctx queue lifetime the same as connection lifetime")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
 
        ep = kzalloc(sizeof(*ep), GFP_NOFS);
        if (!ep)
-               return -EAGAIN;
+               return -ENOTCONN;
        ep->re_xprt = &r_xprt->rx_xprt;
        kref_init(&ep->re_kref);
 
        rpcrdma_ep_get(ep);
        rpcrdma_post_recvs(r_xprt, true);
 
-       rc = rpcrdma_sendctxs_create(r_xprt);
-       if (rc)
-               goto out;
-
        rc = rdma_connect(ep->re_id, &ep->re_remote_cma);
        if (rc)
                goto out;
                goto out;
        }
 
+       rc = rpcrdma_sendctxs_create(r_xprt);
+       if (rc) {
+               rc = -ENOTCONN;
+               goto out;
+       }
+
        rc = rpcrdma_reqs_setup(r_xprt);
-       if (rc)
+       if (rc) {
+               rc = -ENOTCONN;
                goto out;
+       }
        rpcrdma_mrs_create(r_xprt);
 
 out: