Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 244976 | Differences between
and this patch

Collapse All | Expand All

(-)a/net/sunrpc/xprtsock.c (-4 / +6 lines)
Lines 1144-1149 static void xs_tcp_state_change(struct sock *sk) Link Here
1144
			struct sock_xprt *transport = container_of(xprt,
1144
			struct sock_xprt *transport = container_of(xprt,
1145
					struct sock_xprt, xprt);
1145
					struct sock_xprt, xprt);
1146
1146
1147
			xprt->reestablish_timeout = 0;
1148
1147
			/* Reset TCP record info */
1149
			/* Reset TCP record info */
1148
			transport->tcp_offset = 0;
1150
			transport->tcp_offset = 0;
1149
			transport->tcp_reclen = 0;
1151
			transport->tcp_reclen = 0;
Lines 1158-1164 static void xs_tcp_state_change(struct sock *sk) Link Here
1158
	case TCP_FIN_WAIT1:
1160
	case TCP_FIN_WAIT1:
1159
		/* The client initiated a shutdown of the socket */
1161
		/* The client initiated a shutdown of the socket */
1160
		xprt->connect_cookie++;
1162
		xprt->connect_cookie++;
1161
		xprt->reestablish_timeout = 0;
1162
		set_bit(XPRT_CLOSING, &xprt->state);
1163
		set_bit(XPRT_CLOSING, &xprt->state);
1163
		smp_mb__before_clear_bit();
1164
		smp_mb__before_clear_bit();
1164
		clear_bit(XPRT_CONNECTED, &xprt->state);
1165
		clear_bit(XPRT_CONNECTED, &xprt->state);
Lines 1793-1798 static void xs_connect(struct rpc_task *task) Link Here
1793
{
1794
{
1794
	struct rpc_xprt *xprt = task->tk_xprt;
1795
	struct rpc_xprt *xprt = task->tk_xprt;
1795
	struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt);
1796
	struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt);
1797
	unsigned long timeout;
1796
1798
1797
	if (xprt_test_and_set_connecting(xprt))
1799
	if (xprt_test_and_set_connecting(xprt))
1798
		return;
1800
		return;
Lines 1801-1812 static void xs_connect(struct rpc_task *task) Link Here
1801
		dprintk("RPC:       xs_connect delayed xprt %p for %lu "
1803
		dprintk("RPC:       xs_connect delayed xprt %p for %lu "
1802
				"seconds\n",
1804
				"seconds\n",
1803
				xprt, xprt->reestablish_timeout / HZ);
1805
				xprt, xprt->reestablish_timeout / HZ);
1804
		queue_delayed_work(rpciod_workqueue,
1806
		timeout = xprt->reestablish_timeout;
1805
				   &transport->connect_worker,
1806
				   xprt->reestablish_timeout);
1807
		xprt->reestablish_timeout <<= 1;
1807
		xprt->reestablish_timeout <<= 1;
1808
		if (xprt->reestablish_timeout > XS_TCP_MAX_REEST_TO)
1808
		if (xprt->reestablish_timeout > XS_TCP_MAX_REEST_TO)
1809
			xprt->reestablish_timeout = XS_TCP_MAX_REEST_TO;
1809
			xprt->reestablish_timeout = XS_TCP_MAX_REEST_TO;
1810
		queue_delayed_work(rpciod_workqueue,
1811
				   &transport->connect_worker, timeout);
1810
	} else {
1812
	} else {
1811
		dprintk("RPC:       xs_connect scheduled xprt %p\n", xprt);
1813
		dprintk("RPC:       xs_connect scheduled xprt %p\n", xprt);
1812
		queue_delayed_work(rpciod_workqueue,
1814
		queue_delayed_work(rpciod_workqueue,

Return to bug 244976