> > > OK, I spotted the problem. If we fallback to the on-stack allocation in > > > bdi_writeback_all(), then we do the wait for the work completion with > > > the bdi_lock mutex held. This can deadlock with bdi_forker_task(), so if > > > we require that to be invoked to make progress (happens if a thread > > > needs to be restarted), then we have a deadlock on that mutex. > > > I'll cook up a fix for this, but probably not before the morning. > > Untested fix. I think it should work, but I haven't run it here yet. > Thanks for your feedback and explanations. Will not be able to test the > patch before the afternoon. Will then give feedback as soon as I can. Of > course, I can also test a new fix or series if you send one in the > morning, after your own testing. Just ran a quick test with your fix applied and ran into the same problem: manual sync stays in D state. I could capture SysRq-T, I am attaching part of the output (which was very big and continuously displaying). Hope this helps, -- Damien Wyart