summaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6/xfs_aops.h
diff options
context:
space:
mode:
authorDave Chinner <david@fromorbit.com>2009-04-06 18:42:11 +0200
committerChristoph Hellwig <hch@brick.lst.de>2009-04-06 18:42:11 +0200
commitc626d174cfe38e7f0545d074c299527892cd8c45 (patch)
tree8f7dfa34a77bc415d9dc604d79fbae98ffe47a14 /fs/xfs/linux-2.6/xfs_aops.h
parentxfs: fix double free of inode (diff)
downloadlinux-c626d174cfe38e7f0545d074c299527892cd8c45.tar.xz
linux-c626d174cfe38e7f0545d074c299527892cd8c45.zip
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>
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_aops.h')
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.h b/fs/xfs/linux-2.6/xfs_aops.h
index 1dd528849755..221b3e66ceef 100644
--- a/fs/xfs/linux-2.6/xfs_aops.h
+++ b/fs/xfs/linux-2.6/xfs_aops.h
@@ -19,6 +19,7 @@
#define __XFS_AOPS_H__
extern struct workqueue_struct *xfsdatad_workqueue;
+extern struct workqueue_struct *xfsconvertd_workqueue;
extern mempool_t *xfs_ioend_pool;
/*