On Tue, Sep 03, 2019 at 02:19:52PM +0200, Michal Hocko wrote: > On Tue 03-09-19 05:11:55, Matthew Wilcox wrote: > > On Tue, Sep 03, 2019 at 01:57:48PM +0200, Michal Hocko wrote: > > > On Mon 02-09-19 03:23:40, William Kucharski wrote: > > > > Add an 'order' argument to __page_cache_alloc() and > > > > do_read_cache_page(). Ensure the allocated pages are compound pages. > > > > > > Why do we need to touch all the existing callers and change them to use > > > order 0 when none is actually converted to a different order? This just > > > seem to add a lot of code churn without a good reason. If anything I > > > would simply add __page_cache_alloc_order and make __page_cache_alloc > > > call it with order 0 argument. > > > > Patch 2/2 uses a non-zero order. > > It is a new caller and it can use a new function right? > > > I agree it's a lot of churn without > > good reason; that's why I tried to add GFP_ORDER flags a few months ago. > > Unfortunately, you didn't like that approach either. > > Is there any future plan that all/most __page_cache_alloc will get a > non-zero order argument? I'm not sure about "most". It will certainly become more common, as far as I can tell. > > > Also is it so much to ask callers to provide __GFP_COMP explicitly? > > > > Yes, it's an unreasonable burden on the callers. > > Care to exaplain why? __GFP_COMP tends to be used in the kernel quite > extensively. Most of the places which call this function get their gfp_t from mapping->gfp_mask. If we only want to allocate a single page, we must not set __GFP_COMP. If we want to allocate a large page, we must set __GFP_COMP. Rather than require individual filesystems to concern themselves with this wart of the GFP interface, we can solve it in the page cache.