mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-19 03:31:25 +00:00
xfs: switch to NOFS allocation under i_lock in xfs_buf_associate_memory
xfs_buf_associate_memory is used for setting up the spare buffer for the log wrap case in xlog_sync which can happen under i_lock when called from xfs_fsync. The i_lock mutex is taken in reclaim context so all allocations under it must avoid recursions into the filesystem. There are a couple more uses of xfs_buf_associate_memory in the log recovery code that are also affected by this, but I'd rather keep the code simple than passing on a gfp_mask argument. Longer term we should just stop requiring the memoery allocation in xlog_sync by some smaller rework of the buffer layer. 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>
This commit is contained in:
parent
3f52c2f0a0
commit
36fae17a64
@ -770,7 +770,7 @@ xfs_buf_associate_memory(
|
||||
bp->b_pages = NULL;
|
||||
bp->b_addr = mem;
|
||||
|
||||
rval = _xfs_buf_get_pages(bp, page_count, 0);
|
||||
rval = _xfs_buf_get_pages(bp, page_count, XBF_DONT_BLOCK);
|
||||
if (rval)
|
||||
return rval;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user