diff options
author | Christoph Hellwig <hch@infradead.org> | 2009-07-18 18:14:54 -0400 |
---|---|---|
committer | Felix Blyakher <felixb@sgi.com> | 2009-08-11 10:27:28 -0500 |
commit | 1ec2b8a777d6ac5464a836b3c5520b1a5190194c (patch) | |
tree | 03cf2292a8b71632feea5178de4694428f42daef | |
parent | efe1f30e8f05a3836dfcf6302774707b3b47193f (diff) | |
download | linux-1ec2b8a777d6ac5464a836b3c5520b1a5190194c.tar.gz linux-1ec2b8a777d6ac5464a836b3c5520b1a5190194c.tar.bz2 linux-1ec2b8a777d6ac5464a836b3c5520b1a5190194c.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>
-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 975972482e8f..8971fb09d387 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; |