There are quite a lot of places in the kernel which will infinitely retry a
memory allocation.
Generally, they get it wrong. Some do yield(), the semantics of which have
changed over time. Some do schedule(), which can lock up if the caller is
SCHED_FIFO/RR. Some do schedule_timeout(), etc.
And often it is unnecessary, because the page allocator will do the retry
internally anyway. But we cannot rely on that - this behaviour may change
(-aa and -rmap kernels do not do this, for instance).
So it is good to formalise and to centralise this operation. If an
allocation specifies __GFP_REPEAT then the page allocator must infinitely
retry the allocation.
The semantics of __GFP_REPEAT are "try harder". The allocation _may_ fail
(the 2.4 -aa and -rmap VM's do not retry infinitely by default).
The semantics of __GFP_NOFAIL are "cannot fail". It is a no-op in this VM,
but needs to be honoured (or fix up the callers) if the VM ischanged to not
retry infinitely by default.
The semantics of __GFP_NOREPEAT are "try once, don't loop". This isn't used
at present (although perhaps it should be, in swapoff). It is mainly for
completeness.