From: Christoph Hellwig <hch@infradead.org>
Date: Sat, 18 Jul 2009 22:14:55 +0000 (-0400)
Subject: xfs: switch to NOFS allocation under i_lock in xfs_da_state_alloc
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=0043dd88af762d3a9154317d351400b5b941ec8d;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git

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>
---

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);
 }
 
 /*