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

Commit 93aa6c7b authored by Trond Myklebust's avatar Trond Myklebust
Browse files

SUNRPC: Don't reencode message if transmission failed with ENOBUFS



If we're running out of buffer memory when transmitting data, then
we want to just delay for a moment, and then continue transmitting
the remainder of the message.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent b4839ebe
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1902,6 +1902,7 @@ call_transmit_status(struct rpc_task *task)

	switch (task->tk_status) {
	case -EAGAIN:
	case -ENOBUFS:
		break;
	default:
		dprint_status(task);
@@ -1928,7 +1929,6 @@ call_transmit_status(struct rpc_task *task)
	case -ECONNABORTED:
	case -EADDRINUSE:
	case -ENOTCONN:
	case -ENOBUFS:
	case -EPIPE:
		rpc_task_force_reencode(task);
	}
@@ -2057,12 +2057,13 @@ call_status(struct rpc_task *task)
	case -ECONNABORTED:
		rpc_force_rebind(clnt);
	case -EADDRINUSE:
	case -ENOBUFS:
		rpc_delay(task, 3*HZ);
	case -EPIPE:
	case -ENOTCONN:
		task->tk_action = call_bind;
		break;
	case -ENOBUFS:
		rpc_delay(task, HZ>>2);
	case -EAGAIN:
		task->tk_action = call_transmit;
		break;