On Thu, 2018-06-14 at 12:12 -0700, Eric Dumazet wrote:
>
> On 06/14/2018 11:56 AM, Saeed Mahameed wrote:
>
> > Interestingly for this exact frag_stride we don't have an issue :)
> > since it goes through a different condition branch
> > (the page flipping thing):
> >
> > if (frag_info->frag_stride == PAGE_SIZE / 2) {
> > frags->page_offset ^= PAGE_SIZE / 2;
> > release = page_count(page) != 1 ||
> > page_is_pfmemalloc(page) ||
> > page_to_nid(page) != numa_mem_id();
> >
>
> I guess you forgot to test on PowerPC where PAGE_SIZE=65536 ?
>
> On PowerPC, the first branch is never taken.
>
This code is already in the driver, i guess as optimization for when a
page can be reused only twice (PAGE_SIZE=4K, strides_size = 2k).
frag_stride is never more than 2k.
for power PC we should always take the other branch which will reuse as
much 2k strides as possible in a page regardless of PAGE_SIZE.
so are we good with my change ?