xfs: switch to NOFS allocation under i_lock in xfs_da_buf_make

i_lock is taken in the 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>

authored by Christoph Hellwig and committed by Felix Blyakher 73195ed7 f41d7fb9

+2 -2
+2 -2
fs/xfs/xfs_da_btree.c
··· 2261 2261 int off; 2262 2262 2263 2263 if (nbuf == 1) 2264 - dabuf = kmem_zone_alloc(xfs_dabuf_zone, KM_SLEEP); 2264 + dabuf = kmem_zone_alloc(xfs_dabuf_zone, KM_NOFS); 2265 2265 else 2266 - dabuf = kmem_alloc(XFS_DA_BUF_SIZE(nbuf), KM_SLEEP); 2266 + dabuf = kmem_alloc(XFS_DA_BUF_SIZE(nbuf), KM_NOFS); 2267 2267 dabuf->dirty = 0; 2268 2268 #ifdef XFS_DABUF_DEBUG 2269 2269 dabuf->ra = ra;