Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 470056c2 authored by Chuck Lever's avatar Chuck Lever Committed by Trond Myklebust
Browse files

[PATCH] RPC: rationalize set_buffer_size



 In fact, ->set_buffer_size should be completely functionless for non-UDP.

 Test-plan:
 Check socket buffer size on UDP sockets over time.

 Signed-off-by: default avatarChuck Lever <cel@netapp.com>
 Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 03bf4b70
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ struct rpc_rqst {
#define rq_slen			rq_snd_buf.len

struct rpc_xprt_ops {
	void		(*set_buffer_size)(struct rpc_xprt *xprt);
	void		(*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);
	int		(*reserve_xprt)(struct rpc_task *task);
	void		(*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
	void		(*connect)(struct rpc_task *task);
@@ -124,7 +124,7 @@ struct rpc_xprt {
	unsigned long		cong;		/* current congestion */
	unsigned long		cwnd;		/* congestion window */

	unsigned int		rcvsize,	/* transport rcv buffer size */
	size_t			rcvsize,	/* transport rcv buffer size */
				sndsize;	/* transport send buffer size */

	size_t			max_payload;	/* largest RPC payload size,
+2 −8
Original line number Diff line number Diff line
@@ -517,14 +517,8 @@ void
rpc_setbufsize(struct rpc_clnt *clnt, unsigned int sndsize, unsigned int rcvsize)
{
	struct rpc_xprt *xprt = clnt->cl_xprt;

	xprt->sndsize = 0;
	if (sndsize)
		xprt->sndsize = sndsize + RPC_SLACK_SPACE;
	xprt->rcvsize = 0;
	if (rcvsize)
		xprt->rcvsize = rcvsize + RPC_SLACK_SPACE;
	xprt->ops->set_buffer_size(xprt);
	if (xprt->ops->set_buffer_size)
		xprt->ops->set_buffer_size(xprt, sndsize, rcvsize);
}

/*
+15 −15
Original line number Diff line number Diff line
@@ -865,15 +865,7 @@ static void xs_tcp_write_space(struct sock *sk)
	read_unlock(&sk->sk_callback_lock);
}

/**
 * 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.
 */
static void xs_udp_set_buffer_size(struct rpc_xprt *xprt)
static void xs_udp_do_set_buffer_size(struct rpc_xprt *xprt)
{
	struct sock *sk = xprt->inet;

@@ -889,14 +881,23 @@ static void xs_udp_set_buffer_size(struct rpc_xprt *xprt)
}

/**
 * xs_tcp_set_buffer_size - set send and receive limits
 * xs_udp_set_buffer_size - set send and receive limits
 * @xprt: generic transport
 * @sndsize: requested size of send buffer, in bytes
 * @rcvsize: requested size of receive buffer, in bytes
 *
 * Nothing to do for TCP.
 * Set socket send and receive buffer size limits.
 */
static void xs_tcp_set_buffer_size(struct rpc_xprt *xprt)
static void xs_udp_set_buffer_size(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize)
{
	return;
	xprt->sndsize = 0;
	if (sndsize)
		xprt->sndsize = sndsize + 1024;
	xprt->rcvsize = 0;
	if (rcvsize)
		xprt->rcvsize = rcvsize + 1024;

	xs_udp_do_set_buffer_size(xprt);
}

/**
@@ -989,7 +990,7 @@ static void xs_udp_connect_worker(void *args)

		write_unlock_bh(&sk->sk_callback_lock);
	}
	xs_udp_set_buffer_size(xprt);
	xs_udp_do_set_buffer_size(xprt);
	status = 0;
out:
	xprt_wake_pending_tasks(xprt, status);
@@ -1158,7 +1159,6 @@ static struct rpc_xprt_ops xs_udp_ops = {
};

static struct rpc_xprt_ops xs_tcp_ops = {
	.set_buffer_size	= xs_tcp_set_buffer_size,
	.reserve_xprt		= xprt_reserve_xprt,
	.release_xprt		= xprt_release_xprt,
	.connect		= xs_connect,