SUNRPC: serialize iostats updates
authorChuck Lever <chuck.lever@oracle.com>
Sun, 9 Nov 2014 01:15:09 +0000 (20:15 -0500)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 25 Nov 2014 21:22:15 +0000 (16:22 -0500)
commitedef1297f33a4546559d905457b435a5ea160bab
treec14a3b6d62e72cb8b46a3a8cc09679b343831b49
parent5d01410fe4d92081f349b013a2e7a95429e4f2c9
SUNRPC: serialize iostats updates

Occasionally mountstats reports a negative retransmission rate.
Ensure that two RPCs completing concurrently don't confuse the sums
in the transport's op_metrics array.

Since pNFS filelayout can invoke rpc_count_iostats() on another
transport from xprt_release(), we can't rely on simply holding the
transport_lock in xprt_release(). There's nothing for it but hard
serialization. One spin lock per RPC operation should make this as
painless as it can be.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
include/linux/sunrpc/metrics.h
net/sunrpc/stats.c