On Tue, 2017-10-10 at 10:19 -0700, tj@xxxxxxxxxx wrote: > Hello, > > On Tue, Oct 10, 2017 at 04:48:57PM +0000, Trond Myklebust wrote: > > Thanks for the explanation. What I'm not really understanding here > > though, is how the work item could be queued at all. We have a > > wait_on_bit_lock() in xprt_destroy() that should mean the xprt- > > > task_cleanup work item has completed running, and that it cannot > > > be > > > > requeued. > > > > Is there a possibility that the flush_queue() might be triggered > > despite the work item not being queued? > > Yeah, for sure. The lockdep annotations don't distinguish those > cases and assume the worst case. > OK. Let's just remove that call to cancel_work_sync() then. As I said, it should be redundant due to the wait_on_bit_lock(). -- Trond Myklebust Linux NFS client maintainer, PrimaryData trond.myklebust@xxxxxxxxxxxxxxx ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥