Messages in this thread | | | From | Nick Piggin <> | Subject | Re: [PATCH v2] tcp: splice as many packets as possible at once | Date | Tue, 3 Feb 2009 22:38:06 +1100 |
| |
On Saturday 31 January 2009 08:42:27 David Miller wrote: > From: Jarek Poplawski <jarkao2@gmail.com> > Date: Tue, 27 Jan 2009 07:40:48 +0000 > > > I think the main problem is to respect put_page() more, and maybe you > > mean to add this to your allocator too, but using slab pages for this > > looks a bit complex to me, but I can miss something. > > Hmmm, Jarek's comments here made me realize that we might be > able to do some hack with cooperation with SLAB. > > Basically the idea is that if the page count of a SLAB page > is greater than one, SLAB will not use that page for new > allocations.
Wouldn't your caller need to know what objects are already allocated in that page too?
> It's cheesy and the SLAB developers will likely barf at the > idea, but it would certainly work.
It is nasty, yes. Using the page allocator directly seeems like a better approach.
And btw. be careful of using page->_count for anything, due to speculative page references... basically it is useful only to test zero or non-zero refcount. If designing a new scheme for the network layer, it would be nicer to begin by using say _mapcount or private or some other field in there for a refcount (and I have a patch to avoid the atomic put_page_testzero in page freeing for a caller that does their own refcounting, so don't fear that extra overhead too much :)).
| |