summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2010-05-27 01:58:13 +0000
committerAlex Elder <aelder@sgi.com>2010-05-28 15:19:50 -0500
commit9b98b6f3e1534bba2efcd5b16318945cf2218d99 (patch)
tree1b793a3632ec68c2f8a2f24f200325f2235dd1b8
parent38e712ab3d28d79725eaade02fe8aba51abac196 (diff)
downloadlinux-9b98b6f3e1534bba2efcd5b16318945cf2218d99.tar.gz
linux-9b98b6f3e1534bba2efcd5b16318945cf2218d99.tar.bz2
linux-9b98b6f3e1534bba2efcd5b16318945cf2218d99.zip
xfs: fix might_sleep() warning when initialising per-ag tree
The use of radix_tree_preload() only works if the radix tree was initialised without the __GFP_WAIT flag. The per-ag tree uses GFP_NOFS, so does not trigger allocation of new tree nodes from the preloaded array. Hence it enters the allocator with a spinlock held and triggers the might_sleep() warnings. Reported-by; Chris Mason <chris.mason@oracle.com> Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alex Elder <aelder@sgi.com>
-rw-r--r--fs/xfs/xfs_mount.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 2d811e57b332..ef1233b09683 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -1254,7 +1254,7 @@ xfs_mountfs(
* Allocate and initialize the per-ag data.
*/
spin_lock_init(&mp->m_perag_lock);
- INIT_RADIX_TREE(&mp->m_perag_tree, GFP_NOFS);
+ INIT_RADIX_TREE(&mp->m_perag_tree, GFP_ATOMIC);
error = xfs_initialize_perag(mp, sbp->sb_agcount, &mp->m_maxagi);
if (error) {
cmn_err(CE_WARN, "XFS: Failed per-ag init: %d", error);