On Mon, 19 May 2008 12:59:18 -0700
Mingming Cao <cmm@us.ibm.com> wrote:
<wakes up>
Please ensure that the final patch is sufficiently well changelogged to
permit me to remain asleep ;)
The ->releasepage semantics are fairly ad-hoc and have grown over time.
It'd be nice to prevent them from becoming vaguer than they are.
It has been (approximately?) the case that code paths which really care
about having the page released will set __GFP_WAIT (via GFP_KERNEL)
whereas code paths which are happy with best-effort will clear
__GFP_WAIT (with a "0'). And that's reasonsable - __GFP_WAIT here
means "be synchronous" whereas !__GFP_WAIT means "be non-blocking".
Is that old convention not sufficient here as well? Two problem areas
I see are mm/vmscan.c and fs/splice.c (there may be others).
In mm/vmscan.c we probably don't want your new synchronous behaviour
and it might well be deadlockable anyway. No probs, that's what
__GFP_FS is for.
In fs/splice.c, reading the comment there I have a feeling that you've
found another bug, and that splice _does_ want your new synchronous
behaviour?
--