Merge tag 'nfs-for-3.10-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / net / sunrpc / xprtsock.c
index 3d02130828da671066b40aa7dd769cf6a7bd4a74..9c2825827decfb1a0b6fd2f4a80c0cd66fe36eb7 100644 (file)
@@ -2207,10 +2207,6 @@ static void xs_tcp_setup_socket(struct work_struct *work)
                 */
                xs_tcp_force_close(xprt);
                break;
-       case -ECONNREFUSED:
-       case -ECONNRESET:
-       case -ENETUNREACH:
-               /* retry with existing socket, after a delay */
        case 0:
        case -EINPROGRESS:
        case -EALREADY:
@@ -2221,6 +2217,10 @@ static void xs_tcp_setup_socket(struct work_struct *work)
                /* Happens, for instance, if the user specified a link
                 * local IPv6 address without a scope-id.
                 */
+       case -ECONNREFUSED:
+       case -ECONNRESET:
+       case -ENETUNREACH:
+               /* retry with existing socket, after a delay */
                goto out;
        }
 out_eagain:
@@ -2767,9 +2767,13 @@ static struct rpc_xprt *xs_setup_tcp(struct xprt_create *args)
        struct rpc_xprt *xprt;
        struct sock_xprt *transport;
        struct rpc_xprt *ret;
+       unsigned int max_slot_table_size = xprt_max_tcp_slot_table_entries;
+
+       if (args->flags & XPRT_CREATE_INFINITE_SLOTS)
+               max_slot_table_size = RPC_MAX_SLOT_TABLE_LIMIT;
 
        xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries,
-                       xprt_max_tcp_slot_table_entries);
+                       max_slot_table_size);
        if (IS_ERR(xprt))
                return xprt;
        transport = container_of(xprt, struct sock_xprt, xprt);