> I think it's worth trying GFP_NOFAIL just to see what happens.
> The correct fix is probably to wrap the page_alloc in a loop that
> retries a few times, maybe something like:
> unsigned long start = jiffies;
> while( (pl->page = alloc_page(GFP_KERNEL)) == NULL &&
> jiffies - start < 5*HZ )
> blk_congestion_wait(WRITE, HZ/5);
It's likely not helped by the fact the network driver has big
allocation spikes periodically when it refills the packet receive
ring. I'll check in something to smooth out those allocations...