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. _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs