diff options
author | Christoph Hellwig <hch@infradead.org> | 2009-07-18 18:14:55 -0400 |
---|---|---|
committer | Felix Blyakher <felixb@sgi.com> | 2009-08-12 01:07:07 -0500 |
commit | f41d7fb9da05b604f8a69fb6cac2a0563c8ede4e (patch) | |
tree | 7602eb7f81322551fd4fd8e37f11e05550bf49b2 /fs/xfs/xfs_da_btree.c | |
parent | ca35dcd6cae7d4a780c484c53f45548c4719f82c (diff) | |
download | lwn-f41d7fb9da05b604f8a69fb6cac2a0563c8ede4e.tar.gz lwn-f41d7fb9da05b604f8a69fb6cac2a0563c8ede4e.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>
Diffstat (limited to 'fs/xfs/xfs_da_btree.c')
-rw-r--r-- | fs/xfs/xfs_da_btree.c | 2 |
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); } /* |