On Mon, 2012-02-13 at 17:22 -0500, Weston Andros Adamson wrote: > diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c > index efe5495..ab7a28f 100644 > --- a/net/sunrpc/xprt.c > +++ b/net/sunrpc/xprt.c > @@ -1132,7 +1132,10 @@ void xprt_release(struct rpc_task *task) > return; > > xprt = req->rq_xprt; > - rpc_count_iostats(task); > + if (task->tk_client) > + rpc_count_iostats(task, task->tk_client->cl_metrics); > + if (task->tk_ops->rpc_count_stats != NULL) > + task->tk_ops->rpc_count_stats(task, task->tk_calldata); > spin_lock_bh(&xprt->transport_lock); > xprt->ops->release_xprt(xprt, task); > if (xprt->ops->release_request) 2 nits: 1. Aren't we guaranteed that task->tk_client != NULL in xprt_release()? 2. Shouldn't we be calling _either_ rpc_count_iostats(), _or_ task->tk_ops->rpc_count_stats()? As far as I can see, the nfsstat output will now be double-counting and pNFS reads, writes and commits that are sent to the DS. Cheers Trond -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥