Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 660654f9 authored by Eric Dumazet's avatar Eric Dumazet Committed by Linus Torvalds
Browse files

mm/vmalloc.c: add a schedule point to vmalloc()



It is not uncommon on busy servers to get stuck hundred of ms in
vmalloc() calls (like file descriptor expansions).

Add a cond_resched() to __vmalloc_area_node() to be gentle to
other tasks.

[akpm@linux-foundation.org: only do it for __GFP_WAIT, per David]
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Cc: Hugh Dickins <hughd@google.com>
Acked-by: default avatarDavid Rientjes <rientjes@google.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 54980b93
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -1602,6 +1602,8 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
			goto fail;
			goto fail;
		}
		}
		area->pages[i] = page;
		area->pages[i] = page;
		if (gfp_mask & __GFP_WAIT)
			cond_resched();
	}
	}


	if (map_vm_area(area, prot, &pages))
	if (map_vm_area(area, prot, &pages))