diff options
author | J. Bruce Fields <bfields@redhat.com> | 2013-04-26 11:37:29 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2013-04-26 11:37:43 -0400 |
commit | c85b03ab200f6d2c2f80588d96d03c1f8fcaedc3 (patch) | |
tree | 34f4f3200ef5db6ca93360879fffda050c04e1ca /net/sunrpc/xprtsock.c | |
parent | bf8d909705e9d9bac31d9b8eac6734d2b51332a7 (diff) | |
parent | fd068b200fb86e8fa52368e6f6088d2ab297a5d7 (diff) |
Merge Trond's nfs-for-next
Merging Trond's nfs-for-next branch, mainly to get
b7993cebb841b0da7a33e9d5ce301a9fd3209165 "SUNRPC: Allow rpc_create() to
request that TCP slots be unlimited", which a small piece of the
gss-proxy work depends on.
Diffstat (limited to 'net/sunrpc/xprtsock.c')
-rw-r--r-- | net/sunrpc/xprtsock.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 3d02130828da..9c2825827dec 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -2207,10 +2207,6 @@ static void xs_tcp_setup_socket(struct work_struct *work) | |||
2207 | */ | 2207 | */ |
2208 | xs_tcp_force_close(xprt); | 2208 | xs_tcp_force_close(xprt); |
2209 | break; | 2209 | break; |
2210 | case -ECONNREFUSED: | ||
2211 | case -ECONNRESET: | ||
2212 | case -ENETUNREACH: | ||
2213 | /* retry with existing socket, after a delay */ | ||
2214 | case 0: | 2210 | case 0: |
2215 | case -EINPROGRESS: | 2211 | case -EINPROGRESS: |
2216 | case -EALREADY: | 2212 | case -EALREADY: |
@@ -2221,6 +2217,10 @@ static void xs_tcp_setup_socket(struct work_struct *work) | |||
2221 | /* Happens, for instance, if the user specified a link | 2217 | /* Happens, for instance, if the user specified a link |
2222 | * local IPv6 address without a scope-id. | 2218 | * local IPv6 address without a scope-id. |
2223 | */ | 2219 | */ |
2220 | case -ECONNREFUSED: | ||
2221 | case -ECONNRESET: | ||
2222 | case -ENETUNREACH: | ||
2223 | /* retry with existing socket, after a delay */ | ||
2224 | goto out; | 2224 | goto out; |
2225 | } | 2225 | } |
2226 | out_eagain: | 2226 | out_eagain: |
@@ -2767,9 +2767,13 @@ static struct rpc_xprt *xs_setup_tcp(struct xprt_create *args) | |||
2767 | struct rpc_xprt *xprt; | 2767 | struct rpc_xprt *xprt; |
2768 | struct sock_xprt *transport; | 2768 | struct sock_xprt *transport; |
2769 | struct rpc_xprt *ret; | 2769 | struct rpc_xprt *ret; |
2770 | unsigned int max_slot_table_size = xprt_max_tcp_slot_table_entries; | ||
2771 | |||
2772 | if (args->flags & XPRT_CREATE_INFINITE_SLOTS) | ||
2773 | max_slot_table_size = RPC_MAX_SLOT_TABLE_LIMIT; | ||
2770 | 2774 | ||
2771 | xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries, | 2775 | xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries, |
2772 | xprt_max_tcp_slot_table_entries); | 2776 | max_slot_table_size); |
2773 | if (IS_ERR(xprt)) | 2777 | if (IS_ERR(xprt)) |
2774 | return xprt; | 2778 | return xprt; |
2775 | transport = container_of(xprt, struct sock_xprt, xprt); | 2779 | transport = container_of(xprt, struct sock_xprt, xprt); |