提交 1227a74e 编写于 作者: J Jeff Layton 提交者: Trond Myklebust

NFS: flush signals before taking down callback thread

Now that the reference counting on the callback thread is working as
expected, it uncovers another problem.  Peter Staubach noticed while
testing that patch on an older kernel that he would occasionally see
this printk in rpc_register fire:

    "RPC: failed to contact portmap (errno -512).

The NFSv4 callback thread is signaled by nfs_callback_down(), but never
flushes that signal. All of the shutdown processing is done with that
signal pending. This makes it fail the call to unregister the port with
the portmapper.

In actuality, this rpc_register call isn't necessary at all since the
port isn't actually registered with the portmapper anymore. Regardless,
there doesn't seem to be any reason to leave the signal pending while
the thread is being shut down and flushing it should generally silence
that printk.
Signed-off-by: NJeff Layton <jlayton@redhat.com>
Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
上级 5d9c4a7d
...@@ -93,6 +93,7 @@ static void nfs_callback_svc(struct svc_rqst *rqstp) ...@@ -93,6 +93,7 @@ static void nfs_callback_svc(struct svc_rqst *rqstp)
svc_process(rqstp); svc_process(rqstp);
} }
flush_signals(current);
svc_exit_thread(rqstp); svc_exit_thread(rqstp);
nfs_callback_info.pid = 0; nfs_callback_info.pid = 0;
complete(&nfs_callback_info.stopped); complete(&nfs_callback_info.stopped);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册