On Thu, 2016-08-04 at 15:47 +0300, Ilya Lesokhin wrote: > The code currently always references the first page in the > frag therefore there is no need to pay the extra overhead > of making the frag page compound > > Signed-off-by: Ilya Lesokhin <il...@mellanox.com> > --- > net/core/sock.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/core/sock.c b/net/core/sock.c > index 08bf97e..77432ba 100644 > --- a/net/core/sock.c > +++ b/net/core/sock.c > @@ -1993,7 +1993,7 @@ bool skb_page_frag_refill(unsigned int sz, struct > page_frag *pfrag, gfp_t gfp) > if (SKB_FRAG_PAGE_ORDER) { > /* Avoid direct reclaim but allow kswapd to wake */ > pfrag->page = alloc_pages((gfp & ~__GFP_DIRECT_RECLAIM) | > - __GFP_COMP | __GFP_NOWARN | > + __GFP_NOWARN | > __GFP_NORETRY, > SKB_FRAG_PAGE_ORDER); > if (likely(pfrag->page)) {
Looks very risky to me. What numbers can you show us exactly ? splice() is known to play games on pages, make sure it still works ?