xfs: prevent unwritten extent conversion from blocking I/O completion
authorDave Chinner <david@fromorbit.com>
Mon, 6 Apr 2009 16:42:11 +0000 (18:42 +0200)
committerChristoph Hellwig <hch@brick.lst.de>
Mon, 6 Apr 2009 16:42:11 +0000 (18:42 +0200)
commitc626d174cfe38e7f0545d074c299527892cd8c45
tree8f7dfa34a77bc415d9dc604d79fbae98ffe47a14
parent705db3fd4660174a27418bbcb874d209a76044eb
xfs: prevent unwritten extent conversion from blocking I/O completion

Unwritten extent conversion can recurse back into the filesystem due
to memory allocation. Memory reclaim requires I/O completions to be
processed to allow the callers to make progress. If the I/O
completion workqueue thread is doing the recursion, then we have a
deadlock situation.

Move unwritten extent completion into it's own workqueue so it
doesn't block I/O completions for normal delayed allocation or
overwrite data.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/linux-2.6/xfs_aops.c
fs/xfs/linux-2.6/xfs_aops.h
fs/xfs/linux-2.6/xfs_buf.c