[PATCH] NFS: debugging

From: Trond Myklebust
Date: Fri Sep 09 2011 - 19:14:36 EST


Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx>
---
net/sunrpc/clnt.c | 10 ++++++++++
net/sunrpc/xprt.c | 8 ++++----
2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index c5347d2..3e32cfc 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -1867,6 +1867,16 @@ void rpc_show_tasks(void)
rpc_show_task(clnt, task);
}
spin_unlock(&clnt->cl_lock);
+ task = ACCESS_ONCE(clnt->cl_xprt->snd_task);
+ if (task)
+ printk("SUNRPC: xprt(%p) state=%lu, snd_task->tk_pid=%u\n",
+ clnt->cl_xprt,
+ clnt->cl_xprt->state,
+ task->tk_pid);
+ else
+ printk("SUNRPC: xprt(%p) state=%lu, snd_task=0\n",
+ clnt->cl_xprt,
+ clnt->cl_xprt->state);
}
spin_unlock(&rpc_client_lock);
}
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index f4385e4..9f5f0e1 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -235,7 +235,7 @@ static void xprt_clear_locked(struct rpc_xprt *xprt)
clear_bit(XPRT_LOCKED, &xprt->state);
smp_mb__after_clear_bit();
} else
- queue_work(rpciod_workqueue, &xprt->task_cleanup);
+ BUG_ON(!queue_work(rpciod_workqueue, &xprt->task_cleanup));
}

/*
@@ -636,7 +636,7 @@ void xprt_force_disconnect(struct rpc_xprt *xprt)
set_bit(XPRT_CLOSE_WAIT, &xprt->state);
/* Try to schedule an autoclose RPC call */
if (test_and_set_bit(XPRT_LOCKED, &xprt->state) == 0)
- queue_work(rpciod_workqueue, &xprt->task_cleanup);
+ BUG_ON(!queue_work(rpciod_workqueue, &xprt->task_cleanup));
xprt_wake_pending_tasks(xprt, -EAGAIN);
spin_unlock_bh(&xprt->transport_lock);
}
@@ -663,7 +663,7 @@ void xprt_conditional_disconnect(struct rpc_xprt *xprt, unsigned int cookie)
set_bit(XPRT_CLOSE_WAIT, &xprt->state);
/* Try to schedule an autoclose RPC call */
if (test_and_set_bit(XPRT_LOCKED, &xprt->state) == 0)
- queue_work(rpciod_workqueue, &xprt->task_cleanup);
+ BUG_ON(!queue_work(rpciod_workqueue, &xprt->task_cleanup));
xprt_wake_pending_tasks(xprt, -EAGAIN);
out:
spin_unlock_bh(&xprt->transport_lock);
@@ -681,7 +681,7 @@ xprt_init_autodisconnect(unsigned long data)
goto out_abort;
spin_unlock(&xprt->transport_lock);
set_bit(XPRT_CONNECTION_CLOSE, &xprt->state);
- queue_work(rpciod_workqueue, &xprt->task_cleanup);
+ BUG_ON(!queue_work(rpciod_workqueue, &xprt->task_cleanup));
return;
out_abort:
spin_unlock(&xprt->transport_lock);
--
1.7.6


--
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/