Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 9948
b: refs/heads/master
c: 43118c2
h: refs/heads/master
v: v3
  • Loading branch information
Chuck Lever authored and Trond Myklebust committed Sep 23, 2005
1 parent 0692311 commit ec991e1
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 808012fbb23a52ec59352445d2076d175ad4ab26
refs/heads/master: 43118c29dea2b23798bd42a147015cceee7fa885
3 changes: 1 addition & 2 deletions trunk/fs/lockd/host.c
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,10 @@ nlm_bind_host(struct nlm_host *host)

/* If we've already created an RPC client, check whether
* RPC rebind is required
* Note: why keep rebinding if we're on a tcp connection?
*/
if ((clnt = host->h_rpcclnt) != NULL) {
xprt = clnt->cl_xprt;
if (!xprt->stream && time_after_eq(jiffies, host->h_nextrebind)) {
if (time_after_eq(jiffies, host->h_nextrebind)) {
clnt->cl_port = 0;
host->h_nextrebind = jiffies + NLM_HOST_REBIND;
dprintk("lockd: next rebind in %ld jiffies\n",
Expand Down
3 changes: 1 addition & 2 deletions trunk/include/linux/sunrpc/xprt.h
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,7 @@ struct rpc_xprt {
unsigned long state; /* transport state */
unsigned char shutdown : 1, /* being shut down */
nocong : 1, /* no congestion control */
resvport : 1, /* use a reserved port */
stream : 1; /* TCP */
resvport : 1; /* use a reserved port */

/*
* XID
Expand Down
3 changes: 1 addition & 2 deletions trunk/net/sunrpc/xprt.c
Original file line number Diff line number Diff line change
Expand Up @@ -630,8 +630,7 @@ void xprt_transmit(struct rpc_task *task)
case -ENOTCONN:
return;
default:
if (xprt->stream)
xprt_disconnect(xprt);
break;
}
xprt_release_write(xprt, task);
return;
Expand Down
28 changes: 18 additions & 10 deletions trunk/net/sunrpc/xprtsock.c
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,7 @@ static int xs_tcp_send_request(struct rpc_task *task)
default:
dprintk("RPC: sendmsg returned unrecognized error %d\n",
-status);
xprt_disconnect(xprt);
break;
}

Expand Down Expand Up @@ -826,19 +827,17 @@ static void xs_tcp_write_space(struct sock *sk)
}

/**
* xs_set_buffer_size - set send and receive limits
* xs_udp_set_buffer_size - set send and receive limits
* @xprt: generic transport
*
* Set socket send and receive limits based on the
* sndsize and rcvsize fields in the generic transport
* structure. This applies only to UDP sockets.
* structure.
*/
static void xs_set_buffer_size(struct rpc_xprt *xprt)
static void xs_udp_set_buffer_size(struct rpc_xprt *xprt)
{
struct sock *sk = xprt->inet;

if (xprt->stream)
return;
if (xprt->rcvsize) {
sk->sk_userlocks |= SOCK_RCVBUF_LOCK;
sk->sk_rcvbuf = xprt->rcvsize * xprt->max_reqs * 2;
Expand All @@ -850,6 +849,17 @@ static void xs_set_buffer_size(struct rpc_xprt *xprt)
}
}

/**
* xs_tcp_set_buffer_size - set send and receive limits
* @xprt: generic transport
*
* Nothing to do for TCP.
*/
static void xs_tcp_set_buffer_size(struct rpc_xprt *xprt)
{
return;
}

static int xs_bindresvport(struct rpc_xprt *xprt, struct socket *sock)
{
struct sockaddr_in myaddr = {
Expand Down Expand Up @@ -928,7 +938,7 @@ static void xs_udp_connect_worker(void *args)

write_unlock_bh(&sk->sk_callback_lock);
}
xs_set_buffer_size(xprt);
xs_udp_set_buffer_size(xprt);
status = 0;
out:
xprt_wake_pending_tasks(xprt, status);
Expand Down Expand Up @@ -1034,15 +1044,15 @@ static void xs_connect(struct rpc_task *task)
}

static struct rpc_xprt_ops xs_udp_ops = {
.set_buffer_size = xs_set_buffer_size,
.set_buffer_size = xs_udp_set_buffer_size,
.connect = xs_connect,
.send_request = xs_udp_send_request,
.close = xs_close,
.destroy = xs_destroy,
};

static struct rpc_xprt_ops xs_tcp_ops = {
.set_buffer_size = xs_set_buffer_size,
.set_buffer_size = xs_tcp_set_buffer_size,
.connect = xs_connect,
.send_request = xs_tcp_send_request,
.close = xs_close,
Expand Down Expand Up @@ -1074,7 +1084,6 @@ int xs_setup_udp(struct rpc_xprt *xprt, struct rpc_timeout *to)
xprt->prot = IPPROTO_UDP;
xprt->port = XS_MAX_RESVPORT;
xprt->tsh_size = 0;
xprt->stream = 0;
xprt->nocong = 0;
xprt->cwnd = RPC_INITCWND;
xprt->resvport = capable(CAP_NET_BIND_SERVICE) ? 1 : 0;
Expand Down Expand Up @@ -1115,7 +1124,6 @@ int xs_setup_tcp(struct rpc_xprt *xprt, struct rpc_timeout *to)
xprt->prot = IPPROTO_TCP;
xprt->port = XS_MAX_RESVPORT;
xprt->tsh_size = sizeof(rpc_fraghdr) / sizeof(u32);
xprt->stream = 1;
xprt->nocong = 1;
xprt->cwnd = RPC_MAXCWND(xprt);
xprt->resvport = capable(CAP_NET_BIND_SERVICE) ? 1 : 0;
Expand Down

0 comments on commit ec991e1

Please sign in to comment.