On Thu, Oct 06, 2011 at 02:33:00PM -0400, Christoph Hellwig wrote:
> Currently we have a few issues with the way the workqueue code is used to
> implement AIL pushing:
> - it accidentally uses the same workqueue as the syncer action, and thus
> can be prevented from running if there are enough sync actions active
> in the system.
> - it doesn't use the HIGHPRI flag to queue at the head of the queue of
> work items
> At this point I'm not confident enough in getting all the workqueue flags and
> tweaks right to provide a perfectly reliable execution context for AIL
> pushing, which is the most important piece in XFS to make forward progress
> when the log fills.
> Revert back to use a kthread per filesystem which fixes all the above issues
> at the cost of having a task struct and stack around for each mounted
> filesystem. In addition this also gives us much better ways to diagnose
> any issues involving hung AIL pushing and removes a small amount of code.
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
> Reported-by: Stefan Priebe <s.priebe@xxxxxxxxxxxx>
> Tested-by: Stefan Priebe <s.priebe@xxxxxxxxxxxx>
I'd much prefer to fix the problems with the workqueue usage than
revert back to using a thread, but seeing as I cannot reproduce the
hangs I can't really track down whatever problem there is. So,
a bit reluctantly:
Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx>