GFS2: use __vmalloc GFP_NOFS for fs-related allocations.
authorOleg Drokin <green@linuxhacker.ru>
Mon, 2 Feb 2015 03:59:54 +0000 (22:59 -0500)
committerSteven Whitehouse <swhiteho@redhat.com>
Wed, 4 Feb 2015 09:58:41 +0000 (09:58 +0000)
leaf_dealloc uses vzalloc as a fallback to kzalloc(GFP_NOFS), so
it clearly does not want any shrinker activity within the fs itself.
convert vzalloc into __vmalloc(GFP_NOFS|__GFP_ZERO) to better achieve
this goal.

Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/dir.c

index c5a34f09e228dadc5d9d4b0e316280f0bc98ccb8..6371192961e2260cbbb9976ad1c636d89b92cee6 100644 (file)
@@ -1896,7 +1896,8 @@ static int leaf_dealloc(struct gfs2_inode *dip, u32 index, u32 len,
 
        ht = kzalloc(size, GFP_NOFS | __GFP_NOWARN);
        if (ht == NULL)
-               ht = vzalloc(size);
+               ht = __vmalloc(size, GFP_NOFS | __GFP_NOWARN | __GFP_ZERO,
+                              PAGE_KERNEL);
        if (!ht)
                return -ENOMEM;