[PATCH 0/3 -v3] GFP_NOFAIL cleanups

From: Michal Hocko
Date: Tue Dec 20 2016 - 08:49:22 EST


Hi,
This has been posted [1] initially to later be reduced to a single patch
[2]. Johannes then suggested [3] to split up the second patch and make
the access to memory reserves by __GF_NOFAIL requests which do not
invoke the oom killer a separate change. This is patch 3 now.

Tetsuo has noticed [4] that recent changes have changed GFP_NOFAIL
semantic for costly order requests. I believe that the primary reason
why this happened is that our GFP_NOFAIL checks are too scattered
and it is really easy to forget about adding one. That's why I am
proposing patch 1 which consolidates all the nofail handling at a single
place. This should help to make this code better maintainable.

Patch 2 on top is a further attempt to make GFP_NOFAIL semantic less
surprising. As things stand currently GFP_NOFAIL overrides the oom killer
prevention code which is both subtle and not really needed. The patch 2
has more details about issues this might cause. We have also seen
a report where __GFP_NOFAIL|GFP_NOFS requests cause the oom killer which
is premature.

Patch 3 is an attempt to reduce chances of GFP_NOFAIL requests being
preempted by other memory consumers by giving them access to memory
reserves.

[1] http://lkml.kernel.org/r/20161123064925.9716-1-mhocko@xxxxxxxxxx
[2] http://lkml.kernel.org/r/20161214150706.27412-1-mhocko@xxxxxxxxxx
[3] http://lkml.kernel.org/r/20161216173151.GA23182@xxxxxxxxxxx
[4] http://lkml.kernel.org/r/1479387004-5998-1-git-send-email-penguin-kernel@xxxxxxxxxxxxxxxxxxx