Re: [PATCH 0/3] xfs: allocation worker causes freelist buffer lock hang

Mark Tinguely
2012-09-20T13:48:51Z

On 09/19/12 18:34, Dave Chinner wrote:
> I suspect the only way to fix this is to re-use the old workqueue
> method of avoiding blocking on the workqueue indefinitely. That is,
> if we fail to get the lock in this case, we return with EGAIN and
> requeue the work. __xfs_alloc_vextent() and xfs_alloc_fix_freelist()
> already have trylock support, so this should be fairly easy to do.
> If I also convert the work to delayed work, I can easily add a
> backoff that will prevent busy looping on the workqueue.
>
> I'll have a quick look at this and see what falls out....

Okay.

Many of these paths are not using an allocator worker (userdata==0)
and/or the loops are done within a new transaction.

--Mark.