On 18 June 2018 at 21:55, Chuck Lever <chuck.lever@xxxxxxxxxx> wrote: > Krzysztof Kozlowski <krzk@xxxxxxxxxx> reports that a heavy NFSv4 > WRITE workload against a slow NFS server causes his Raspberry Pi > clients to stall. Krzysztof bisected it to commit 37ac86c3a76c > ("SUNRPC: Initialize rpc_rqst outside of xprt->reserve_lock") . > > I was able to reproduce similar behavior and it appears that rarely > the RPC client layer is re-allocating an XID for an RPC that it has > already partially sent. This results in the client ignoring the > subsequent reply, which carries the original XID. > > For various reasons, checking !req->rq_xmit_bytes_sent in > xprt_prepare_transmit is not a 100% reliable mechanism for > determining when a fresh XID is needed. > > Trond's preference is to allocate the XID at the time each rpc_rqst > slot is initialized. > > This patch should also address a gcc 4.1.2 complaint reported by > Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>. > > Reported-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx> > Fixes: 37ac86c3a76c ("SUNRPC: Initialize rpc_rqst outside of ... ") > Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > --- > net/sunrpc/xprt.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) This fixes the problems, thanks! Tested-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx> Best regards, Krzysztof -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html