diff options
author | Christoph Hellwig <hch@infradead.org> | 2009-07-18 18:14:54 -0400 |
---|---|---|
committer | Felix Blyakher <felixb@sgi.com> | 2009-08-12 01:06:59 -0500 |
commit | ca35dcd6cae7d4a780c484c53f45548c4719f82c (patch) | |
tree | ef2c93d8c55e075a8153e39eda7aa94464b64677 /fs/xfs | |
parent | 0cc6eee130b0c062feec8446d9cecdb17d2cfad3 (diff) | |
download | linux-ca35dcd6cae7d4a780c484c53f45548c4719f82c.tar.gz linux-ca35dcd6cae7d4a780c484c53f45548c4719f82c.tar.bz2 linux-ca35dcd6cae7d4a780c484c53f45548c4719f82c.zip |
xfs: switch to NOFS allocation under i_lock in xfs_getbmap
xfs_getbmap allocates memory 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')
-rw-r--r-- | fs/xfs/xfs_bmap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 7928b9983c1d..8ee5b5a76a2a 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -6009,7 +6009,7 @@ xfs_getbmap( */ error = ENOMEM; subnex = 16; - map = kmem_alloc(subnex * sizeof(*map), KM_MAYFAIL); + map = kmem_alloc(subnex * sizeof(*map), KM_MAYFAIL | KM_NOFS); if (!map) goto out_unlock_ilock; |