On Fri, Oct 05, 2012 at 11:06:57AM +1000, Dave Chinner wrote:
> This is a followup from the last conversation with Mark about this
> deadlock. I haven't heard anything in the last coupl eof days, so I
> figured I'd just write the patches that did what I thought is
> Basically, the stack switch is only needed for userdata in the
> delayed allocation path, and nowhere else at this point in time. To
> make it so we switch stacks only at this point in time, I introduced
> a flag to pass to xfs_bmapi_write(). This means we don't switch
> stacks during direct IO, unwritten extent conversion or
> preallocation via fallocate/XFS_IOC_RESVSP.
> I then moved the stack switch to xfs_bmapi_allocate(), which is
> where allocation happens. All the allocation calls within a single
> userdata extent allocation occur in this function (both data extent
> and bmap btree blocks), so switching stacks here will ensure that
> only mapping calls that require allocation will have the stack
> Comments welcome...
These two patches have been committed to git://oss.sgi.com/xfs/xfs.git, master
and for-next branches.