summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2009-07-18 18:14:55 -0400
committerFelix Blyakher <felixb@sgi.com>2009-08-11 10:45:05 -0500
commit0043dd88af762d3a9154317d351400b5b941ec8d (patch)
tree3ffd55d214a083d11c6d54cafea4d040587a7d61
parent1ec2b8a777d6ac5464a836b3c5520b1a5190194c (diff)
downloadlinux-0043dd88af762d3a9154317d351400b5b941ec8d.tar.gz
linux-0043dd88af762d3a9154317d351400b5b941ec8d.tar.bz2
linux-0043dd88af762d3a9154317d351400b5b941ec8d.zip
xfs: switch to NOFS allocation under i_lock in xfs_da_state_alloc
xfs_da_state_alloc is always called with i_lock held, but i_lock is taken in reclaim context so all allocations under it must avoid recursions into the filesystem. Reported by the new reclaim context tracing in lockdep. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Felix Blyakher <felixb@sgi.com> Signed-off-by: Felix Blyakher <felixb@sgi.com>
-rw-r--r--fs/xfs/xfs_da_btree.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c
index 9ff6e57a5075..bd0bb6dfcdfa 100644
--- a/fs/xfs/xfs_da_btree.c
+++ b/fs/xfs/xfs_da_btree.c
@@ -2201,7 +2201,7 @@ kmem_zone_t *xfs_dabuf_zone; /* dabuf zone */
xfs_da_state_t *
xfs_da_state_alloc(void)
{
- return kmem_zone_zalloc(xfs_da_state_zone, KM_SLEEP);
+ return kmem_zone_zalloc(xfs_da_state_zone, KM_NOFS);
}
/*